Программа для прошивки микроконтроллера stc15w404

Обновлено: 30.06.2024

Прошивка для INDESIT NBA20DFNFNXH, Нужна прошивка под данну модель холодильника
Помогите подобрать прошивку для выше описаного холодильника. S/N - 204133879 Номер: 58754140010.

Ariston AVL 105EU, Нужна прошивка (прошивка не исправна)
Диагностический ключ определяет прошивку AVL105EU и пишет что прошивка неисправна

ОК
У меня пока такая программа-минимум:
Прицепить stc15 к stm32f103 и добиться чтоб stm прошивал stc как положено по даташиту.
Потом на тех же двух ногах, которые использовались для прошивки, вылепить какое-то подобие монитора - stm будет по одной ноге выдавать тактовый меиндр, а stc синхронно по другой ноге выдавать все свои 128 байт памяти )

update 21.05.2016
Пришли наконец-то и мне чипы - из Китая в Нск через Финляндию и Москву - два месяца - ппц

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Поигрался.
Эмуляция UART из примеров работает, и прием и передача.
Теперь о грустном.
По даташиту 2 таймера - Timer0 и Timer1.
Timer0 работает. Timer1 - биты конфигурации для сего таймера не устанавливаются , то есть его там попросту нет.
Что подтверждает и описание камня, появляющуюся при выборе чипа в родной прошивалке.
И там же писано что есть Timer2 однако регистры его конфигурации не пишутся и не читаются.
Так же не работает выхлоп тактовой наружу - IRC_CLKO.

Это только у мну? Ась?

Копаю потихоньку, но немного в другую сторону.
Снял логи stc-ysp-15xx-v6.85n и stcgal, логи похожи, и по докам от stcgal в логах примерно понятно почти всё кроме перенастройки и калибровки внутреннего генератора - тут что-то всё очень накручено )
Похоже единственный даташит который вроде соответствует сабжу - STC15-English.pdf
Вытащил из него пример прошивки одного stc15 другим, там нет калибровки генератора, может и так можно, а может пример нерабочий

Если ты про пример из даташита, то я час наверно его выковыривал и восстанавливал из pdf-ки копипастом по кусочкам - там такая pdf-ка что фиг что скопипастишь ) Я про STC15-English.pdf. Нашел там все о Timer2, а в STC15F100-en.pdf только о Timer1. Ещё выяснил если min скорость протокола прошивки ниже 2400 - не работает, а max скорость в реальности выше 57600 не поднимает какую ни ставлю.
И вообще у меня такое чувство что в 15 серии мк уже не подстраивается импульсами под скорость хоста, а тупо всегда в начале сеанса ставит себе 2400 Если кому-нибудь интересно, могу подробно расписать ysp-протокол stc15, в некоторых местах более подробно, чем в stcgal )

Во-первых, снимаю шляпу перед автором программы stcgal.
Большая часть ниженаписанного просто пересказ его документации и питоновских исходников )

После подачи питания, мк ждёт, что хост пришлёт ему серию байтов 0x7F (не менее 11 штук) на скорости 2400 (формат - 8 бит, 1 стоп, чётность even).
Если такая серия не приходит, то мк через некоторое время просто начинает выполнение пользовательской программы.
Байты 0x7F используются как калибровочный временной интервал 7/2400 с
_-------_--|_-------_--

Дальше я буду расписывать только содержимое пакетов, начиная сразу с шестого байта, опуская первые пять и последние три байта.

Хост отвечает подтверждающим пакетом 0x80, и следом за пакетом шлёт ещё одну серию 0x7F (не менее пяти штук).
МК отвечает большим пакетом (длина 64 байт и плюс 0x46 0xB9 - итого 66 байт) всяческой информация о своих параметрах.
Некоторые интересные байты:
байт 1 - тип 0x50;
байты 2-9 - четыре выборки двух-байтного счётчика для оценки тактовой частоты мк (частота = счётчик/7*2400*12, т.е. подсчёт с делителем 12 за интервал 7/2400 с, для этого и была нужна серия 0x7F от хоста);
байты 21-22 - идентификатор модели мк;
байты 24-36 - 13 байт опций конфигурации мк (в stcgal они называются msr - model specific rikystirs), в первых трёх и последнем - разные флажки, в четвёртом-пятом значение настройки тактового генератора (в stcgal это называется trym value);
байты 52-58 - семь нигических байтов неких параметров, которые хост должен будет передать мк обратно (без какой-либо обработки) в одном из пакетов дальше.

Хост отвечает подтверждающим пакетом 0x50 0 0 0x36 1 <двух-байтный идентификатор модели мк>.
МК отвечает пакетом 0x8F.

Дальше начинается самое веселье )
Чтобы заливать прошивку хосту и мк надо переключиться с 2400 на повышенную скорость.
Казалось бы можно попытаться сделать это и на текущей тактовой частоте, но вместо этого хост перестраивает тактовый генератор мк на некую предопределённую частоту (видимо ещё и в зависимости от модели мк).

Хост шлёт мк пакет с таким содержимым:
байт 1 - тип 0x65;
байты 2-8 - семь нигических байтов неких параметров, которые мк раньше передал хосту в пакете 0x50;
байты 9-11 - 0xFF 0xFF 6;
байт 12 - кол-во пробных перенастроек тактового генератора;
байты 13-14 - параметры первой настройки;
байты 15-16 - 2 0;
байты 17-18 - параметры второй настройки;
байты 19-20 - 2 0;
и т.д. в соотв. с кол-вом, заданным в байте 12.
Следом за пакетом хост шлёт ещё одну серию 0x7F (не меньше чем <кол-во проб>*2+1)

Пара байт параметров настройки тактового генератора выбирается из вот такого странного ряда:
0x1800-0x18FF - 5-8 МГц
0x5800-0x58FF - 10-16 МГц
0x9800-0x98FF - 19-33 МГц
0xD800-0xD880 - 30-38 МГц
Но соответствие очень приблизительное и может сильно различаться от мк к мк.

МК отвечает хосту аналогичным пакетом, но с соотв. значениями счётчика (тактовая частота = счётчик/7*2400*12) для каждой пробы:
байт 1 - тип 0x65;
байты 2-8 - те же семь нигических байтов;
байты 9-11 - 0xFF 0xFF 6;
байт 12 - кол-во пробных перенастроек;
байты 13-14 - параметры первой настройки;
байты 15-16 - счётчик первой настройки;
байты 17-18 - параметры второй настройки;
байты 19-20 - счётчик второй настройки;
и т.д.

Хост может посылать пакеты типа 0x65 несколько раз, пересчитывая счётчики в частоту и сужая диапазон параметров, чтобы определить какие параметры соответствуют нужной частоте.
Программа от stc делет такую калибровку только для тактовой частоты заданной пользователем, на которую настраивается мк после прошивки, а для заливки прошивки просто устанавливает параметры 0x9880.
Программа stcgal делает калибровку для двух частот - заданной пользователем и 22118400 для заливки прошивки.

После этого хост переключается на новую скорость и уже на этой скорости получает от мк пакет типа 0x84.
Этот пакет почти полная копия хостового пакета 0x8E, отличия только в байте типа и добавлении 13-ого байта, дублирующего первый байт контрольной суммы хостового пакета.

По окончании передачи данных хост шлёт финальный пакет 0x69 0 0 0x36 1 <двух-байтный идентификатор модели мк>.
МК отвечает пакетом 0x8D.

В ответ хост шлёт пакет конфигурации:
байт 1 - 0x8D;
байты 2-14 - 13 байт опций конфигурации мк;
байты 15-20 - шесть 0xFF.
МК отвечает подтверждающим 41-байтным инфо-пакетом типа 0x50.

И, наконец, хост заканчивает всю эту бодягу последним безответным пакетом 0x82.

Китайцы на aliexpress и других Интернет-площадках торгуют классными часами, которые стоят недорого ($6.5 с бесплатной доставкой, см. [1, 2]), легко собираются в домашних условиях и при этом красиво выглядят. Также приятный бонус - схема открыта, и в интернете можно легко найти исходный код микроконтроллера часов [3], так что при желании можно разобраться как все работает и внести свои изменения в алгоритм. Я купил себе такие часы, собрал за 1 вечер, и здесь решил выложить перевод инструкции к часам, которая в оригинале поставляется на английском языке.

STC15W404AS clock SCH

Часы работают на дешевом микроконтроллере STC15W404AS, который можно купить на сайте aliexpress по цене 0.6..1.5 доллара.

Здесь приведена краткая информация по микроконтроллеру STC15W404AS. Подробные данные см. в даташите STC15-English.pdf из архива [3].

Система шифрования кода. С применением ключа шифрования, прошитого в MCU, имеется возможность обновлять программное обеспечение с помощью кнопки update. Для этого в системе программирования выбираются опции "encryption" download и "release project", когда требуется обновить программное обеспечение микроконтроллера. Из-за того, что в памяти программ последние 7 байт используются для хранения глобального идентификатора (global ID), то пространство памяти FLASH, доступное для программы пользователя, уменьшается на эти 7 байт.

Система сброса. В микроконтроллер встроена очень удобная система сброса, так что можно полностью исключить внешние цепочки, формирующие сигнал RESET. По умолчанию вывод P5.4/RST/MCLKO используется как порт ввода/вывода (GPIO), но его можно переконфигурировать как ножку сброса RST с активным уровнем лог. 1, это делается программатором STC-ISP. Порог сброса можно запрограммировать по 16 различным уровням.

Тактирование. В кристалл встроен точный R/C генератор (точность установки частоты ±0.3%). Уход частоты в зависимости от температуры в диапазоне -40..+80°C составляет 1%, в диапазоне -20..+65°C составляет 0.6%. Это позволяет отказаться от подключения дорогого внешнего кварцевого резонатора. Тактовая частота может быть установлена в диапазоне 5..35 МГц (предпочтительные частоты 5.5296, 11.0592, 22.1184, 33.1776 МГц).

Таблица выбора микроконтроллеров из серии STC15W408AS (STC15W401AS, STC15W402AS, STC15W404AS, STC15W408AS, IAP15W413AS, IRC15W415AS):

Можно использовать компилятор Keil C или любой другой компилятор, рассчитанный на семейство MCS-51. Также можно использовать бесплатный инструментарий SDCC (см. папку compiler архива [3]). В опциях проекта следует выбрать ядро Intel 8052, и в качестве заголочного файла определения регистров нужно подключить хедер reg51.h (можете в качестве него использовать файл stc_diyclock-master\src\stc15.h из исходного кода архива [3]).

1. Вбейте ключевые слова для поиска 6, откройте страничку загрузки на сайте STC, и выберите там последнюю версию утилиты программирования (я скачал stc-isp6.85.rar). На иероглифы не обращайте внимания. Распакуйте из-архива exe-файл, запустите.

2. Из выпадающего списка MCU Type выберите тип Вашего микроконтроллера. Этот список представляет собой дерево, в котором на верхнем уровне перечислены не сами типы микроконтроллеров, а их серии (разделы, список которых можно дополнительно развернуть). Например, чтобы выбрать микроконтроллер STC15W1K24S, нужно сначала в списке выбрать раздел STC15W1K16S Series, и уже в этом разделе выбрать микроконтроллер STC15W1K24S.

3. Подключите через USB Ваш переходничок USB-TTL-UART (я использовал дешевый USB-SERIAL CH340), выберите его по номеру COM-порта в выпадающем списке COM Port.

4. Отключите питание от платы, где установлен прошиваемый Вами микроконтроллер STC (микроконтроллер STC должен быть обесточен). Соедините провода GND, TXD и RXD переходничка соответственно с ножками GND, P3.0, P3.1 микроконтроллера.

5. Теперь проверьте, работает ли соединение с программируемым микроконтроллером, следующим образом: нажмите кнопку Check MCU, после чего подайте питание на программируемый микроконтроллер STC. В результате этой операции в консоль утилиты stc-isp будет выдано текст наподобие следующего (это пример проверки STC15W1K24S):

Если увидели этот текст, значит программирование работает, и Вы можете прошить в микроконтроллер свою программу. Если же нет, то где-то в подключении допустили ошибку, проверяйте все соединения.

STC15W404AS clock PCB top

STC15W404AS clock PCB bottom

Рекомендуется сначала запаивать короткие, невысокие компоненты - резисторы и конденсаторы. Если начнете с высоких компонентов, то в принципе ничего страшного, однако высокие компоненты будут слегка мешать запаивать низкие. Я сначала запаял резисторы, потом конденсаторы, потом транзисторы, потом коннекторы, потом панельки для микроконтроллера и микросхемы RTC, потом фоторезистор и терморезистор, потом кнопки и держатель батарейки. Само собой, 7-сегментные индикаторы следует запаивать последними, предварительно аккуратно промыв плату спиртом. Промывка нужна не только для эстетики, а чтобы тщательно визуально просмотреть качество монтажа. Также советую перед запайкой индикаторов прозвонить цепи питания на отсутствие коротких замыканий. После того, как запаяли индикаторы и еще раз смыли остатки флюса, можно установить в кроватки микроконтроллер и чип RTC.

Внимание : держатель батарейки советую запаивать только после того, как найдете подходящую батарейку на 3V, потому что возможно его придется немного приподнять над платой (в зависимости от толщины батарейки). Подойдут батарейки типов CR1216 (5034LC), CR1220 (5012LC) толщиной 1.6 и 2 мм соответственно и диаметром 12.5 мм (в комплекте батарейки нет). В крайнем случае можно поставить батарейку CR1025 (5033LC), но она толстовата (2.5 мм), так что держатель батарейки немного выгнется, если его не приподнять над платой при пайке.

STC15W404AS clock PCB mount

Внимание : индикаторы следует устанавливать с определенной ориентировкой в разных разрядах, см. картинку ниже.

STC15W404AS clock indicators

Резисторы, конденсаторы и часовой кварц не имеют полярности, поэтому их установка проста. Но будьте внимательны с полярностью выводов, когда запаиваете транзисторы и бипер. При установке микросхем в кроватки будьте внимательны с ориентировкой корпусов микросхем.

Последней следует установить литиевую батарейку 3V. Без батарейки часы не могут хранить время и настройки при выключении питания.

Ниже в таблице приведен список деталей в том порядке, в каком их следует запаивать на плату.

STC15W404AS clock front

STC15W404AS clock back

В комплекте набора идет светофильтр, стенки пластикового корпуса и винты с гайками для его сборки. Для улучшения отображения наклейте на дисплей светофильтр. Поместите конструкцию в корпус.

[Настройка времени и основных функций]

После первого включения часы не идут, их необходимо сбросить длительным удержанием обоих кнопок управления в в течение 5 секунд. После этого часы покажут время 7:59. Через 5 секунд сброс завершится, время станет равным 8:00, на некоторое время запищит будильник. Дальше часы покажут текущую температуру в градусах Цельсия и текущую дату. Настроить время, будильник и работу часов можно в нижеуказанном порядке с помощью кнопок "F" ("функция", верхняя кнопка) и "+" (нижняя кнопка).

1. Установка часов. Для того, чтобы установить разряды часов, коротко нажмите на кнопку F. Цифры часов начнут мигать. Нажимайте кнопку + нужное количество раз для установки часов.

2. Установка минут. После установки часов снова коротко нажмите на кнопку F. Начнут мигать цифры минут. Точно так же, как устанавливали часы, установите кнопкой + количество минут. После завершения установки секунды установленной минуты будут отсчитываться от 0.

3. Установка часов будильника. Еще раз нажмите на кнопку F. Будут выведены и начнут мигать цифры часов настройки будильника, но точки в такт секундам при этом мигать не будут. Установите час будильника кнопкой +.

4. Установка минут будильника. Еще раз нажмите на кнопку F. Будут выведены и начнут мигать цифры минут настройки будильника, но точки в такт секундам при этом мигать не будут. Установите разряды минут будильника кнопкой +.

5. Проверка, активен ли будильник. Еще раз нажмите на кнопку F. Цифры на дисплее при этом не поменяются, но светящаяся точка в последнем разряде покажет активность будильника. Нажатия на кнопку + будут переключать работу будильника: если в последнем разряде точка горит, значит будильник активен и сработает в установленное время, а если не горит, то будильник отключен.

7. Проверка, активна ли функция почасового бикания. Еще раз нажмите на кнопку F. Цифры на дисплее при этом не поменяются, но светящаяся точка в разряде 3 (точка сверху) покажет активность этой функции. Нажатия на кнопку + будут циклически переключать работу функции: если точка в разряде 3 горит, то функция почасового бикания работает, а если не горит, то не работает.

[Подстройка показаний температуры и настройка даты]

[Работа часов]

45 секунд отображается текущее время, 5 секунд отображается температура, 5 секунд отображается дата, и еще 5 секунд отображается день недели. Далее по циклу процесс повторяется.

Ночью, когда освещение падает, яркость часов автоматически уменьшается.

Порт P1.4 может использоваться для управления реле (в зависимости от залитой прошивки).

Коннектор P1 может использоваться для подключения адаптера USB-UART с целью загрузки программного обеспечения. Назначение коннектора P3 мне неизвестно.

[Недостатки часов]

1. При затемнении датчика освещенности (фоторезистор R16) яркость регулируется ступенчато, не плавно.

2. Немного удивило то, что по питанию стоит единственный фильтрующий конденсатор C1 емкостью 0.1 мкф. Это означает, что для питания можно применять стабилизированный источник питания, желательно с низкими пульсациями по питанию. В комплекте прилагается USB-кабель с джеком, которым можно подать питание на часы от компьютера или ноутбука.

3. В качестве датчика применяется терморезистор. Вместо терморезистора можно подключить датчик температуры типа DS18S20 или DS18B20 с интерфейсом 1-Wire, после этого коррекция измерения температуры не потребуется.

4. Нет возможности отключения будильника в определенные дни недели. Например, чтобы он не срабатывал в субботу и воскресенье.


Т.к. тема является архивной.

Ну да, есть недоработка схемотехники. Вероятно разраб посчитал, что достаточно только получить более-менее ровные фронты-спады битов лишь по ШД, ведь тактирование идет от порта МК и в прошивке идет сравнение тактовых и принятых по ШД битов чисто программно

Т.к. тема является архивной.

Не-не, мэн, проблема в RTC (вангую, что стоит у тебя DS1302+) - у меня тоже такой KIT и такая же проблема была: заменил DS-ку (спасибо тов.skiv68) и часы заработали. Я со своим продаваном переписывался по этому поводу - тот извинился и выслал новый набор:)

Т.к. тема является архивной.


да, она
а у нас можно эту микруху найти, чтоб с аликом не заморачиваться?

Т.к. тема является архивной.

Так ещё раз спрошу - при попытке установить время чего показывает?

Т.к. тема является архивной.

Время устанавливается корректно, но при выходе в рабочий режим на дисплее кракозябры

Т.к. тема является архивной.

Выше про подтягивающие резисторы очень важное упоминание, тоже надо проверить

Т.к. тема является архивной.

Т.к. тема является архивной.

Т.к. тема является архивной.

Т.к. тема является архивной.

Т.к. тема является архивной.

Т.к. тема является архивной.

Т.к. тема является архивной.

Т.к. тема является архивной.

Т.к. тема является архивной.

Т.к. тема является архивной.


насколько я помню новость - гипса там не было *scratch* .

Т.к. тема является архивной.

Т.к. тема является архивной.

Т.к. тема является архивной.

Да ХЗ. Честно говоря, маркировка у новой DS-ки аналогична маркировке на дохлой. Но новая хотя бы работает :)

Т.к. тема является архивной.

Спасибо, действительно RTC была дохлой, заменил и часы пошли как надо!
С микрухой тоже помог skiv68, дал наколочку где они есть.

Т.к. тема является архивной.

Т.к. тема является архивной.

:)
Теперь настроить надо, они жутко отстают. Где бы найти подстроечник масенький, чтоб между ногами было 3-4мм до 30 пик

Т.к. тема является архивной.

Можно сделать скрутку из отрезков тонкого эмальпровода, как раз емкость будет в доли и единицы пиков

Т.к. тема является архивной.

я думаю, кварц поменять- и всех дел.
кварц то наверное из комплекта поставки, ну ооочень уж китайский :))

Т.к. тема является архивной.

Вполне может быть, поискать надо. На материнках часовой кварц стоит?

Т.к. тема является архивной.

Т.к. тема является архивной.

На работе валяется несколько древних, надо будет вытащить.

Т.к. тема является архивной.


и самое главное что она скорее всего и не дохлая, просто ПО не под неё заточено. Я встречал такие микросхемы, с алгоритмом, отличным от оригинала.
PS Калиброванный кварц предлагать не буду)))

Т.к. тема является архивной.

По вашему запросу ничего не найдено.
Пожалуйста переформулируйте запрос.

Объявления на НН.РУ - Техника

Шлейф ноутбука asus n53s 1414-0493000 N53JN-1A AUDIO BO CABLE Подходит к ноутбукам: Asus N53S, N53J Парт-номера: 1414-0493000.
Цена: 340 руб.

Нижняя часть корпуса, поддон ноутбука asus n53s 13gn1q1ap010 подходит к ноутбукам: asus n53s серии парт-номера: 13gn1q1ap010.
Цена: 1 600 руб.

Подходит к ноутбукам: Asus N53S серии Парт-номера: 13GN1Q1AP010, 13GN1Q1AP010, 13N0-K3A0201
Цена: 260 руб.

Модуль ввода/вывода для HP Desktop Mini (HP Desktop Mini ProDesk 600 G2 mini, HP EliteDesk 705 G2 mini, HP 800 G2 mini, HP 260 G1 mini.
Цена: 699 руб.

Внимание! Перед тем как создавать тему на форуме, воспользуйтесь поиском! Пользователь создавший тему, которая уже была, будет немедленно забанен! Читайте правила названия тем. Пользователи создавшие тему с непонятными заголовками, к примеру: "Помогите, Схема, Резистор, Хелп и т.п." также будут заблокированны навсегда. Пользователь создавший тему не по разделу форума будет немедленно забанен! Уважайте форум, и вас также будут уважать!

Подскажите купил наборы часов цифровых с АлиЭкспресс diy kit со светодиодами по кругу и другие , спаял их .Заметил что часы показывают одно и тоже время и не меняется .Что может быть , что делать чтобы заработали ? Микроконтроллер 15w413as и ds1302.

Присоединённое изображение

Присоединённое изображение

Взял картинки с интернета

Присоединённое изображение

Присоединённое изображение

Держать ОБЕ кнопки, подать питание и ждать до сброса в "исходное" примерно 15-30 сек.. После этого настраивать..

Попробовал в часах сделать двумя кнопками сброс в одних выставилось А001 и никакой реакции кнопками , а в других появляется 7 59 и мигают посередине две точки и время дальше не движется стоит на месте.Не знаю куда дальше жать , подскажите ? Не горит снизу нижняя точка .

Если в этой конструкции есть внутренняя батарейка для удержания хода времени после отключения внешней сети а судя по наличию в схеме м/с ds1302 она есть , то вынь ( отключи) эту батарею и вновь подключи часы к внешней сети. Если работа восстановится до нормы- замени батарею.

Образование-способность выслушивать любую чушь ,не теряя самообладания.
Формула Фроста.

Вроде часы заработали , но очень медленный ход , идут в 2-3 раза медленнее чем надо, сильно отстают. Подскажите что надо сделать ?

Образование-способность выслушивать любую чушь ,не теряя самообладания.
Формула Фроста. Начать с замены кварцевого резонатора и промывки платы. Подпаял кварц к минусу, немного пропаял резисторы, сброс сделал, но всеравно опаздывают. В одних часах поменял конденсаторы и кварц в обвязке микросхемы ds1302 . заработали довольно таки точно. И ещё, для микроконтроллеров 15w404as , 15w408as , 15w413as подойдёт ли одна и та же прошивка без изменений ? Использовать программаторы для этого можно PICKit 2 ,или usbisp ? Можно прошить через обычный переходник USB-TTL-UART на той же PL2303 или FT232.
может тупа с каких старых плат сдуть кварц, подобрать пару конденсаторов если потребуется конечно и наслаждаться? Китайские кварцы отличаются низкой ценой и непредсказуемым качеством.

Не задавайте вопросы технического характера в личку, все-равно отправлю на форум.

Хотя бы раз в год уезжай туда, где ты еще не был!

Билль о рабах Вирджиния, 1779 г.:
"Ни один раб не должен хранить или переносить оружие, если только у него нет письменного приказа хозяина или если он не находится в присутствии хозяина".

Читайте также: