N76e003at20 как прошить
Перейти к содержимому

N76e003at20 как прошить

Макетная плата N76E003 и ее программирование

Обзор и схема неофициальной макетной платы для тестирования/разработки микроконтроллера N76E003. По системе команд этот микроконтроллер относится к семейству MCS-51. Контроллер однотактный (1Т) в отличии от 12-тактного прародителя (i8051, 12T), кол-во тактов исполнения команды равно числу байт этой команды.

В плате 40 мм x 30 мм ничего неожиданного нет, все на виду и аккуратно, однако наличие принципиальной схемы рядом с платой является большим преимуществом. На плате есть два боковых разъема, на которые выведены все контакты GPIO а также шины питания. Напротив USB-порта есть еще два разьема. Один предназначен для подключения интерфейса программирования-отладки Nu-Link (SWD), на второй выведен интерфейс последовательного порта из микроконтроллера. Последовательный порт полезен для быстрой отладки/тестирования программ с помощью терминальной программы. Если вы используете Keil, интерфейс последовательного порта может пригодиться для ISD51 (Internal System Debuger).
Наличие USB-порта поначалу может сбивать с толку, т.е. предполагать наличие в микроконтроллере USB-интерфейса. К сожалению такого интерфейса в контроллере N76E003 нет, порт используется только для питания макетной платы. В схеме питания также задействованы дополнительный стабилизатор 3,3V и переключатель напряжения 5V <-> 3,3V, оба эти напряжения доступны на разьеме интерфейса последовательного порта. Этот же разьем можно использовать для подачи внешнего напряжения питания 5V если USB не используется. Светодиод сигнализирует о наличии питающего напряжения, кнопка служит для сброса микроконтроллера.

По схеме видно отличие от микроконтроллеров семейства MCS-51 в подключении кнопки сброса. Большинство контроллеров MCS-51 сбрасываются высоким уровнем, как и «прародитель» i8051. Контроллер N76E003 сбрасывается низким уровнем, это сделано для «pin-to-pin» совместимости с контроллерами серии STM8S003.
В таблице ниже приводится фактическое сравнение этих чипов.

Посмотрев на функциональную схему контроллера, видно что экземпляр довольно интересный:

На момент выпуска программирование надо было производить через фирменный Nu-Link адаптер. Т.к. он обычно совмещен с отладчиком, его стоимость весьма негуманна. На данный момент появилась возможность снизить стоимость програмирования контроллера N76E003, т.к. появилась возможность при программировании воспользоваться сторонними средствами.

Тут уместно упомянуть, что в даташите при описании некоторых регистров упоминается, что программный доступ к ним с защитой TA, поэтому необходимо обьяснить что это такое.

Защита доступа по времени (TA — Timed Access protection)

N76E003 имеет несколько функциональных блоков, таких как сторожевой таймер (WDT), обнаружение отключения электропитания (BOD) и др., которые имеют решающее значение для правильной работы системы. Если оставить их управляющие регистры незащищенными, ошибочный код может записать в них неопределенное значение, что приведет к неправильной работе и потере управления. Чтобы это предотвратить N76E003 имеет защитную схему, которая ограничивает доступ для записи к критическим SFR. Эта схема защиты реализована с использованием доступа по времени (TA).
Регистр этой защиты так и называется TA и контролирует доступ к защищенным SFR. Чтобы получить доступ к защищенным регистрам, пользователь должен сначала записать в TA 0xAA, а затем сразу же следующей командой записать в ТА 0x55. После этих двух шагов открывается окно разрешения записи, и в течение 4 тактовых циклов пользователь может записывать в защищенные SFR. Читать регистр SFR, защищенный TA, можно не передавая 0xAA и 0x55 в регистр. Код для открытия окна временного доступа и записи в защищенный регистр показан ниже:

Любое разрешенное прерывание следует отключить во время этой процедуры, чтобы избежать задержки между этими тремя записями. Если нет включенных прерываний, инструкции CLR EA и SETB EA можно не указывать.

  • IAP — In-Application Programming (программирование в приложении)
  • ISP — In-System Programming (программирование в системе)
  • ICP — In-Circuit Programming (программирование в схеме)

Программирование в приложении (IAP)

По сравнению с выполнением операций из сегмента кода в реальном времени, обновление данных во флеш памяти часто занимает сравнительно много времени. Кроме того, это довольно сложная процедура синхронизации для стирания, программирования или чтения флэш памяти, при которой необходимо строго выдерживать тайминги между операциями. Контроллер N76E003 включает удобный механизм операций перепрограммирования, помогающий пользователю перепрограммировать содержание флэш памяти с помощью программирования в приложении (IAP). IAP — это метод электрического стирания и программирования с помощью программного обеспечения. По сути это отдельный от схемы контроллера микропрограмный автомат с собственной системой команд и отдельным тактированием от генератора HIRC (High-speed internal RC oscillator 16 MHz). Можно сказать, что это расширение команд микроконтроллера для работы с собственной флеш памятью.
IAP включается путем установки бита IAPEN (CHPCON.0 с защитой TA) и установки бита включения в регистре IAPUEN (IAP update enable). IAPUEN содержит 3 бита включения — CFUEN, LDUEN, APUEN, соответственно IAP будет работать с CONFIG, LDROM или APROM. Чтобы передать команду, необходимо в регистры IAPAH и IAPAL поместить целевой адрес байта флеш, в регистр IAPFD данные и в регистр IAPCN код команды. После этого IAP готов к запуску и ждет установки бита запуска IAPGO (IAPTRG.0 с защитой TA). В момент запуска ядро контроллера останавливает счетчик программы и встроенный командоаппарат IAP берет на себя управление внутренним чартжером и детальной синхронизацией сигнала. Время стирания и программирования контролируется командоаппаратом, независимо от рабочего напряжения и частоты контроллера. Номинальное время стирания страницы составляет 5 мс, время записи байта — 23,5 мкс. После завершения действия команды IAP программый счетчик опять запускается и контроллер продолжает выполнять следующие инструкции кода программы, бит IAPGO будет автоматически сброшен. Флаг отказа IAP, IAPFF (CHPCON.6), покажет, была ли предыдущая операция IAP успешной или произошла ошибка.
Коды команд IAP в разных режимах:

  1. Если операции IAP больше не требуются, программист должен очистить IAPEN (CHPCON.0 с защитой TA), это полностью отключит подсистему IAP. Кроме того, IAP требует, чтобы HIRC работал. Если выбран внешний источник синхронизации, отключение IAP остановит HIRC для экономии энергии.
  2. Когда бит LOCK (CONFIG0.1) активирован, чтение, запись или стирание IAP все еще возможны.
  3. Во время выполнения IAP прерывания, если они включены, должны быть временно отключены путем сброса бита EA.
  4. Не пытайтесь стереть или запрограммировать страницу, на которой в данный момент выполняется код (на которую указывает счетчик команд PC). Это вызовет непредсказуемое поведение и может привести к повреждению данных программы.

Такое программирование возможно через помещенный в область LDROM загрузчик, который позволит выполнить обновление флэш памяти без извлечения микроконтроллера из системы. Это позволяет перепрограммировать устройство под управлением программного обеспечения. Обычно ISP осуществляется посредством связи между ПК и MCU через последовательный порт. Загрузочный код в LDROM получает прошивку и перепрограммирует APROM в код пользователя через IAP команды. Nuvoton предоставляет образец прошивки загрузчика и приложение для ПК для N76E003. В даташите приведен простой демонстрационный пример кода ISP. Нестандартные ISP загрузчики могут реализовать обмен по шинам SPI или I2C.

Здесь уместно рассмотреть особенности устройства памяти программ микроконтроллера N76E003.
Архитектура памяти программ у микроконтроллера N75E003 разделена на три блока: APROM для кода пользователя, LDROM для кода загрузчика и байты CONFIG(0..4) для аппаратной инициализации. APROM и LDROM блочно организованы одинаково, размер страницы составляет 128 байт, но имеют разный размер. Оба они начинаются с адреса 0х0000 и имеют отдельные таблицы прерываний, взаимоконфигурация APROM и LDROM и их размер определяется битами LDSIZE[2:0] регистра CONFIG1. Кодовый блок с которого начнется выполнение программы (APROM или LDROM) выбирается битом BS регистра CHPCON, доступ к регистрам CONFIG(0..4) поддерживается из обоих блоков кода. Микропрограммный блок управления памятью поддерживает режимы стирания, программирования и чтения. Внешний программатор через этот блок может работать в режимах внутрисхемного (ICP) или внутрисистемного программирования (ISP).
Для конфигурации памяти программ доступны 5 вариантов:

По умолчанию с производства все биты LDSIZE установлены в 1, блок основной программной памяти APROM имеет размер 18 Кб, блок загрузчика LDROM отсутствует.

Программирование в схеме (ICE)

Классическим примером программатора-отладчика от производителя можно считать макетную плату NuTiny-SDK-N76E003 V2.0, которая совмещена с Nu-Link-Me V3.0. Вместе с ICP (внутрисхемное программирование) на основе сигнального интерфейса SWD (Serial Wire Debug), плата отладчика также поддерживает виртуальный СОМ порт для обратной связи. Платы разделены перфорацией, и при необходимости могут использоваться отдельно.

Для доступа к функции программирования в схеме используется три сигнальных контакта, RST, ICPDA, ICPCK, они в точности совпадают с контактами отладчика RST, OCDDA и OCDCK и часто называются ICE/ICD интерфейсом. RST используется для входа/выхода в режим ICP, ICPDA — ввод/вывод данных, ICPCK — синхронизация данных. Чтобы сделать возможным программирование ICP, доступ к этим контактам, плюс VDD и GND должен оставаться свободным.
Протокол ICP обмена между программатором и программируемым контроллером фирмой Nuvoton не раскрывается, это затрудняет создание средств прошивки сторонними программистами. Успешные попытки «отреверсить» протокол были предприняты здесь (сайт на китайском).

ICP прошивка N76E003

Участник нашего форума TTAV134 где-то взял описание этого протокола (может и сам «отреверсил»), и программа-программатор NeoProgrammer начиная с версии 2.2.0.3 поддерживает програмирование микроконтроллеров N76E003.
Схема соединений программатора на CH341A (на черном текстолите) и описываемой макетной платы приведена ниже. Использована боковая контактная панель программатора.

В архиве программы NeoProgrammer есть похожая схема подключения, однако там для программирования с программатора подается 3,3V. При этом чип CH341A запитан от 5V (USB) и на контактах программатора напряжение так-же соответствует 5V уровням, поэтому по моему более целесообразно от такого же напряжения запитывать макетную плату. Напряжение питания контроллера при таком подключении берется с программатора, поэтому на время программирования запитывать макетную плату от USB не нужно.

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

Если вы включили LDROM, после закрытия страницы конфигурирования в окно редактора добавится вторая страница для файла загрузчика.

N76e003at20 как прошить

Здравствуйте!
Решил попросить помощи у профессионалов.
Щитовой ампервольтметр 100 Вольт 10 Ампер
Китайский Вольтамперметр без названия похож на вольтамперметр DSN-VC288, на n76e003at20 (STM8S003) крен — M5333B (3.3v). и LM358.
Спалил 5 шт. решил восстановить, купил микросхемы думал сниму дамп с рабочего, зашью в контролёр и порядок! Но не тут то было, микроконтроллер заблокирован производителем, тут я и приехал.
Прошу помощи поделитесь прошивкой рабочей или дампом!
Снять дамп и прошить сие чудо можно с помощью программатора CN341A.программа NEOPROGRAMMER, Для этого нужен файл в формате .hex .bin Подключения поводов указаны на картинке.

Заводим релейный модуль ESP8266 от LC TECHNOLOGY для ESP-01S

Заводим релейный модуль ESP8266 от LC TECHN с микроконтроллером STC15F104W для ESP-01S

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

Мои разочарования начались сразу после первого включения! Моргала лампочка и ничего более.

После разных попыток перепрошивки модуля, а также долгих поисков решения проблемы неработоспособности этого модуля, все-таки было найдено решение.

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

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

Ну и наконец наткнувшийся на схему платы этого модуля, было выяснено, что реле управляется микроконтроллером STC15F104W с помощью TX/RX, а не GPIO-0, как ранее предполагалось. Собственно это и есть наша основная проблема.

Но кроме основной проблемы у меня еще и не щелкало реле. Изучив схему выше, оказалось, что проблема в том, что резистор R3 слишком большой. Ну что поделать. Мы же хотим заставить эту штуку работать, так что берем паяльник в руки, отпаиваем резистор на 10K и вместо него припаиваем на 4.7K. После этих манипуляции реле должна щелкать как в видео!

На всякий случай оставляю таблицу кодов и значений smd резисторов

Код Знач. Код Знач. 332 3.3kΩ 682 6.8kΩ 362 3.6kΩ 752 7.5kΩ 392 3.9kΩ 822 8.2kΩ 432 4.3kΩ 912 9.1kΩ 472 4.7kΩ 103 10kΩ 512 5.1kΩ 113 11kΩ 562 5.6kΩ 123 12kΩ 622 6.2kΩ 133 13kΩ

Собственно, почему так происходит и почему у всех по разному может быть? Я ответ и на эти вопросы нашел!

На сайте производителя www.chinalctech.com есть предупреждения, где говорится, что у этого релейного модуля есть некоторые подделки. Также говорится, что, если постоянно моргает светодиод на плате (D2), то это означает, что этот модуль не их производства.

Вроде уже более-менее все ясно, НО все-таки, как же заставить его работать?

Не буду томить, вся проблема в том, что микроконтроллер STC15F104W не запрограммирован!

Итак, читаем ПРЕДУПРЕЖДЕНИЕ! И поехали.

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

Прошиваем микроконтроллер STC15F104W

Отключаем Wi-Fi модуль ESP-01S от релейного модуля! Она не должна быть подключена во время прошивки!

Только после этого Подключаем TTL контролер к пинам GND, TX, RX, 5V на плате релейного модуля и ждем, пока передача данных не будет завершена.

Теперь протестируем прошивку и работоспособность релейного модуля.

  1. Для этого переходим на вкладку COM Helper, выбираем порт нашего TTL контролера и жмем на Open COM.
  2. Вводим в TX Buffer по очереди команды A0 01 01 A2 и A0 01 00 A1 в режиме HEX-Mode и жмем на кнопку Send Data.

Если все было сделано правильно, то загорится светодиод, а вместе с ним еще и защелкнет реле. Но если этого не произошло, то придется опять колдовать паяльником с резисторами R3 и R4. Ну а если все работает, как надо, то переходим к прошивке уже самого Wi-Fi модуля ESP-01S для работы с нашим модулем.

Прошиваем Wi-Fi модуль ESP-01S специальной прошивкой

Думал отдельную статью сделаю. но ладно так уж и быть. распишу все тут.

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

Ответ я думаю уже понятен — НЕТ! Релейный модуль управляется последовательной связью через микроконтроллер, то есть ESP передает команды Включить/Выключить через контакты RX/TX микроконтроллеру, а дальше уже микроконтроллер выполняет реальную работу. Чтобы оправить те самые команды для управления, нужен специальный плагин «Serial MCU controlled switch».

Как подключать TTL контролер к Wi-Fi модулю ESP-01S я рассказывать не буду, ибо много статей про это, а вот как прошить его, сейчас подробно разложу!

Скачаем архив с программатором ESPEasyFlasher последней версии и разархивируем его куда-нибудь в удобное место, после чего скачаем специальную версию прошивки и поместим в папку BIN.

Этой прошивкой можно управлять следующими устройствами:

Tuya Wifi Touch wall switch
Tuya Wifi Dimmer Switch

Sonoff Dual (Поддерживается только V1)

Релейные модули от LC TECH (Поддерживаются вплоть до 4 релейных модулей.)

Именно поэтому я и хотел вывести это в отдельную статью!

Чтобы путаницы не было, распишу все поочередно:

  1. Подключаем Wi-Fi модуль ESP-01Sк вашему ПК.
  2. Запускаем ESP.Easy.Flasher.exe и выбираем COM port
  3. В пункте Firmware выбираем blank_1MB.bin и жмем на кнопку Flash ESP Easy FW, тем самым прошиваемся на нулевую прошивку.
  4. После успешной прошивки, переподключаем ESP-01S модуль к ПК.
  5. Теперь в пункте Firmware выбираем прошивку ESPEasy_Mega_P165_1M_128kS_lwip20_PUYA.bin и опять жмем на кнопку Flash ESP Easy FW.
  6. Ждем, когда прошивка закончится, и переходим к следующему пункту.

Находим точку доступа ESP_Easy_0 и подключаемся.

Открываем адрес в браузере 192.168.4.1, выбираем вашу домашнюю сеть Wi-Fi, вводим пароль и жмем Connect.

После обратного отсчета должен высветиться IP адрес нашего ESP. Жмем на кнопку Proceed to main config и переподключаемся к домашней точке доступа. Так же IP адрес нашего ESP можно узнать такими способом найти IP адрес.

Переходим по IP адресу нашего ESP (Способы определения IP адреса) и настраиваем как указано ниже. Откроем раздел Devices, жмем на кнопку Edit, выбираем из списка пункт Serial MCU controlled swich.

В открывшихся пунктах вводим следующее.

  • В поле Name вводим ESP01Relay
  • Ставим галочку Enabled
  • В поле Switch Type выбираем производителя нашего релейного модуля, то есть LC TECH

Жмем на кнопку Submit, после чего опять же появятся новые подпункты.

  • Number of relays: здесь вводим количество реле на плате, в данном случае у нас 1.
  • Serial speed: старые версии модуля работают со скоростью 9600, а новые на 115200!

Теперь покажу как это все будет работать.

Все элементарно просто — заходи в браузер и набираем HTTP команды:

Включаем реле №1: http://ESP_IP/control?cmd=relay,0,1 Выключаем реле №1: http://ESP_IP/control?cmd=relay,0,0 Включаем реле №2: http://ESP_IP/control?cmd=relay,1,1 Выключаем реле №2: http://ESP_IP/control?cmd=relay,1,0 Включаем реле №3: http://ESP_IP/control?cmd=relay,2,1 Выключаем реле №3: http://ESP_IP/control?cmd=relay,2,0 Включаем реле №4: http://ESP_IP/control?cmd=relay,3,1 Выключаем реле №4: http://ESP_IP/control?cmd=relay,3,0

И напоследок.

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

N76E003

Спонсор развлекухи —selevo
Картинки кликабельны.

NuTiny-N76E003 в официальном магазине со скидкой 60% https://direct.nuvoton.com/ru/nutiny-n76e003

Китайцы продолжают клепать новинки на 51 ядре.
Теперь и компания Nuvoton разродилась малоногими чипами с 1тактовым ядром и вкусным набором периферии.
Вкратце :

Core
— 1T 8051 processor
— Max frequency up to16 MHz
— Wide operating voltage: 2.4V to 5.5V
— Temperature range: -40℃ to 105℃

Memory
— 18 KB of Flash memory
— 1 KB of SRAM
— Supports configurable Data Flash
— Supports program update by:

ISP (In-System Programming)
ICP (In-Circuit Programming)
IAP (In-Application Programming)
PWM
— Up to 6-ch PWM
— Programmable dead-zone generator

ADC
— 12-bit 8-ch ADC
— Runs up to 500 kSPS

Connectivity
— Two UARTs up to 115200 bps
— One SPI up to 8 MHz
— One I²C up to 400 kHz

Clock Control
— < 2% deviation16 MHz Internal RC oscillator
— 10 kHz Internal RC oscillator

IDE
Keil uVision for C51 v9.53 https://rutracker.org/forum/viewtopic.php?t=3748609
Внимание ! Начиная с версии 5.20 Keil C51 не ставиться на Windows XP.

Драйвера , SDK и исходники примеров :

Nu-Link_Keil_Driver_V2.03.6674 — драйвер Nulink и файлы поддержки чипов для Keil.
N76E003_BSP_Keil_C51_V1.0.4 — Хэдеры, исходники примеров и стартап для N76E003
NuMicro_ICP_Programming_Tool_V2.03.6674 — софт для прошивальщика
NuTiny-SDK-N76E003_V2.1 — SDK под NuTiny N76E003 — схема, pcb

ER_N76E003_Series_EN_Rev1.01 — на удивление короткая еррата
DS_N76E003_EN_Rev1.04 — даташит

Выкачиваем.
Устанавливаем Keil C51 и драйвера под Nulink для Keil.
Устанавливаем софт для прошивальщика ( не нашел как сливать прошивку) .
Подключаем NuTiny — ждем определения NuLink и установки дров.
Запускаем NuMicro ICP Programming Tool

http://se.uploads.ru/t/dxlom.png

В опции Language выбираем English , в Select Target Chip8051 1T Series , жмем Continue .

http://sf.uploads.ru/t/lQVBd.png

Жмем Connect . Определится наш чип и в строке статуса появятся его данные.
На этом этапе , если версия прошивки ниже версии прошивальщика , софт потребует обновить прошивку NuLink.

http://sa.uploads.ru/t/3tyAl.png

На скрине :
Кнопка Connect подключение NuLink
Кнопки под Load File :

http://s9.uploads.ru/t/abeFh.png

LDROM — выбор файла для прошивки региона загрузчика .(Loader ROM)
APROM -выбор файла для прошивки региона основной програмы( APplication ROM)

http://s9.uploads.ru/t/3mE7h.png

Далее поле бит конфигурации Config Bits

http://s4.uploads.ru/t/CmAof.png

Ниже окно отображающие дамп памяти .
с переключателями в виде вкладок, сгруппированных в три категории:
File data — содержимое файлов выбираемых в поле Load File.
On-Borad Flash — содержимое флэша чипа.
Offline flash -.

Для каждой категории по 3 вкладки :
LDROM
APROM
Data-Flash

http://se.uploads.ru/t/gXeqw.png

Для прошивки :
выбираем соответствующие файлs для регионов в поле Load File ,
выбираем в поле Programming какие регионы будем прошивать — опции LDROM, APPROM, Data Flash и Config
жмем Start.

http://sa.uploads.ru/t/fBF3M.png

Для считывания :
выбираем соответствующие вкладки в категории On-Borad Flash
жмем Refresh
сохраняем дамп Save As

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *