на главную
Карта сайта
English version
Вы читаете:

Программирование микроконтроллеров EFM8

Р/л технология
5 лет назад

Программирование микроконтроллеров EFM8 с помощью встроенного загрузчика программ


В статье описаны аппаратные средства программирования микроконтроллеров EFM8, совместимых с MCS-51, с помощью встроенного загрузчика программ. Микроконтроллеры EFM8UB10, EFM8UB30 программируют по интерфейсу USB, EFM8LB12 - по интерфейсу RS232. Этих средств нет в руководстве пользователя [1], тем не менее они способны работать под управлением поставляемых производителем микроконтроллеров программных средств. Произведена проверка работоспособности программ, загруженных с помощью описанных средств в микроконтроллеры.

Компания Silicon Laboratories начала производить совместимые с MCS-51 микроконтроллеры EFM8 в 2015 г. Среди них, например, недорогой микроконтроллер EFM8UB10 с интерфейсом USB в сверхминиатюрном корпусе QFN20. Для него компания бесплатно поставляет программные средства USBXpress, позволяющие программировать обмен информацией по USB с помощью простейших функций записи/чтения. В параметрах этих функций нужно указать только имя пересылаемого массива и число его элементов. Никаких знаний спецификаций интерфейса USB и особенностей программирования его многочисленных регистров не требуется. Наличие в EFM8UB10 встроенных интерфейсов UART, SMBus/I2C, SPI позволяет легко конструировать на его основе преобразователи интерфейсов USB-RS232, USB-RS485, USB-SPI.

Недорогой сверхскоростной (75 МГц) микроконтроллер EFM8LB12, оснащённый 14-разрядным высокоскоростным АЦП (900000 преобразований в секунду) и прямым доступом к памяти, позволяет с помощью известного метода передискретизации и усреднения получить разрешение до 19-20 двоичных разрядов и превзойти практически любой сигма-дельта АЦП как по точности, так и по скорости. Встроенный блок логики (CLU) позволяет использовать примитивы FPGA - аппаратные функции И, ИЛИ, НЕ, триггеры. С их помощью легко реализовать, например, кнопочное управление процессом измерения, построив простейшие антидребезговые узлы без каких-либо дополнительных аппаратных средств. Таким же блоком CLU оснащён и микроконтроллер EFM8UB30, совместимый по выводам с EFM8UB10, но с утроенной по сравнению с ним программной памятью и существенно увеличенным ОЗУ

Наличие во всех микроконтроллерах семейства EFM8 матрицы соединений позволяет с помощью команд skip перемещать сигналы интерфейсов по всему микроконтроллеру и размещать их в оптимальном месте.

Бесплатно поставляемые для EFM8 программные средства Simplicity Studio существенно облегчают их программирование (в частности, автоматически формируют подпрограммы инициализации устройств). В семействе EFM8 есть и другие новинки, например, EFM8SBXX и EFM8BBXX.

Однако среди разработчиков аппаратно-программных средств существует давно устоявшееся негативное отношение к микроконтроллерам компании Silicon Laboratories. Основной камень преткновения - дороговизна аппаратных средств поддержки. До последнего времени для программирования таких микроконтроллеров требовался универсальный адаптер USB-DEBUG, высокая стоимость которого в подавляющем большинстве случаев приводила к отказу от их использования и к выбору иных, пусть даже с несколько худшими параметрами микроконтроллеров, не требующих высоких затрат на загрузку программ.

Микроконтроллеры семейства EFM8 оснащают встроенным загрузчиком программ. Достаточно подключить их к компьютеру (EFM8UBXX - по интерфейсу USB, остальные - по интерфейсу RS232), запустить на компьютере программу загрузки и необходимые коды будут записаны в память микроконтроллера. Идея эта не нова. Ведущие фирмы-производители микроконтроллеров давно уже используют встроенные в них загрузчики программ, не требующие практически никаких затрат на аппаратные средства программирования.

К микроконтроллерам семейства EFM8 имеются готовые компьютерные программы-загрузчики, написанные на языке Python в виде скрипта и выполняемые в режиме командной строки в 32-разрядной ОС Windows 7 и в более поздних версиях этой ОС.

Описания семейства микроконтроллеров EPM8 и программных средств их программирования приведены в [1, 2]. Однако там абсолютно отсутствуют принципиальные схемы устройств сопряжения микроконтроллера с компьютером для программирования. Кроме того, в [2] описаны не все программные средства, требующиеся для адекватной работы загрузчика.

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

Сначала о программировании EFM8UB10 и EPM8UB30 по интерфейсу USB. В [3] и более подробно в [4] описаны аппаратно-программные преобразователи USB-SPI на базе микроконтроллеров EFM8UB10, сопрягаемые с компьютером по интерфейсу USB. В устройстве, схема которого показана на рис. 1, использован подобный способ сопряжения, однако в нём оставлено только то, что требуется для работы загрузчика. Сигналы USB поступают на разъём XS1 по кабелю, второй конец которого вставлен в стандартный разъём USB компьютера. Такой кабель входит в комплект практически любого сотового телефона, поэтому специально приобретать его не требуется.

Схема устройства

Рис. 1. Схема устройства

 

Разъём XP1 при необходимости может служить для подключения адаптера USB-DEBUG. Однако здесь он использован лишь для того, чтобы разрешить перевод микроконтроллера в режим загрузки программ. Для этого достаточно установить перемычку между контактами 1 и 2 этого разъёма.

RC-цепь R1R2C2С3 предназначена для того, чтобы сохранить низкий уровень напряжения на выводе 9 микроконтроллера, по крайней мере, в течение 40 мкс после подачи питания. Это требуется для перевода микроконтроллера в режим программирования с помощью встроенного загрузчика.

Отдельный источник питания напряжением 5 В для описанного устройства не требуется. Оно поступает по линии Vbus интерфейса USB.

Микроконтроллер EFM8LB12 не имеет интерфейса USB, поэтому его программируют по интерфейсу RS232 (COM-порту компьютера). Следует заметить, что в современных ноутбуках (кроме дорогих специализированных) такой интерфейс почти не встречается. В современных настольных компьютерах COM-порт имеется довольно часто. Однако бывает, что его разъём не выведен наружу, но тем не менее присутствует на материнской плате компьютера в виде десятиштыревого разъёма. Чтобы вывести его наружу, в один из свободных слотов на задней стенке системного блока нужно вставить заглушку стандартного размера с разъёмом DB-9M, к которому присоединён отрезок плоского кабеля с ответной частью разъёма, установленного на материнской плате. Несколько дороже можно приобрести готовую плату с одним или двумя COM-портами, которую соединяют с системной шиной компьютера.

И наконец, существуют преобразователи интерфейсов USB-RS232, выполненные в виде кабелей с соответствующими разъёмами на концах. Однако их работу с описанным ниже программатором для EFM8LB12 автор не проверял.

Схема такого программатора, показанная на рис. 2, не намного сложнее изображённой на рис. 1. Она содержит RC-цепь R2R3C3 для задержки сигнала перевода микроконтроллера в режим программирования и разъём XP2 для установки перемычки, разрешающей перевод микроконтроллера в режим программирования и возможного подключения адаптера USB-DEBUG. Сигналы интерфейса RS232 RxDM и TxDM, имеющие ТТЛ-уровни, с разъёма XP1 поступают соответственно на выводы 28 и 29 микроконтроллера DD1.

Схема программатора

Рис. 2. Схема программатора

 

Источником питающего напряжения 5 В может быть любой стабилизированный блок питания с таким выходным напряжением при токе нагрузки 100 мА. Интегральный стабилизатор LP2950Z-3.3(DA1) выдаёт стабилизированное напряжение +3,3 В, поступающее на выводы 2 и 3 микроконтроллера, а также на контакт 4 разъёма XP1 для питания подключённого к нему устройства. Индикатором наличия напряжения 5 В в устройстве служит светодиод зелёного свечения HL1 с ограничивающим его ток резистором R1.

Программатор собран на макетной плате, все соединения на которой выполнены проводом МГТФ-0,03. Поскольку микроконтроллер EFM8LB12 имеет корпус QFP32 с шагом выводов 0,8 мм, для непосредственной установки на такую плату он непригоден. Необходима плата-переходник, на которой выводы для внешних подключений расположены с шагом 2,5 или 2,54 мм. Такая плата описана в [3] и [4].

Для сопряжения устройства, схема которого изображена на рис. 2, с компьютером потребуется изготовить по схеме рис. 3 преобразователь уровней сигналов интерфейса RS232 в уровни TTL и обратно. Этот преобразователь собран на микросхеме ADM3101EACPZ (DA1). Это недорогая миниатюрная микросхема, выпускаемая в корпусе CP-12-1 размервми 3x3 мм, требует для своей работы только пять конденсаторов (C1-C5) и отличается от распространённой микросхемы MAX232 уменьшенным до двух числом каналов преобразования и пониженным до 3,3 В напряжением питания. Для сигналов уровней ТТЛ и напряжения питания предназначен разъём XS1, а для сигналов уровней RS232 - разъём XP1.

Схема преобразователя

Рис. 3. Схема преобразователя

 

Преобразователь собран на плате из фольгированного с одной стороны стеклотекстолита, изображённой на рис. 4 в масштабе 2:1. Кабель его связи с компьютером сделан по схеме рис. 5 в виде "косички" из трёх сплетённых проводов МГТФ. Для того чтобы зажать "косичку" в корпусе разъёма DB-9F (XS2), на неё надеты две ПВХ-трубки.

Плата преобразователя

Рис. 4. Плата преобразователя

 

Схема кабеля связи с компьютером

Рис. 5. Схема кабеля связи с компьютером

 

Все резисторы и конденсаторы в устройствах, собранных по схемам на рис. 1 и рис. 3, типоразмера 0603 для поверхностного монтажа. Конденсаторы должны быть рассчитаны на напряжение не менее 16 В. В устройстве по схеме рис. 2 резисторы - С1-4, конденсаторы - К10-17б. Светодиод HL1 - L-1344GT или любой другой зелёного свечения. По фотоснимку на рис. 6 можно убедиться в миниатюрности платы преобразователя RS232 - она не больше обычной канцелярской скрепки.

Внешний вид платы преобразователя

Рис. 6. Внешний вид платы преобразователя

 

Для программирования микроконтроллеров EFM8LB12 с помощью встроенного загрузчика программ необходимо и достаточно сделать следующее:

- подключить плату с микроконтроллером к порту СОМ компьютера через преобразователь уровней;

- соединить вывод C2D микроконтроллера с общим проводом;

- включить питание.

Аналогичные действия для программирования EFM8UB10 или EFM8UB30:

- соединить вывод C2D микроконтроллера с общим проводом;

- подключить плату с микроконтроллером к порту СОМ компьютера.

После распаковки архива AN945SW.zip (URL: http://www.silabs.com/documents/public/example-code/AN945SW.zip (23.09.2018)) необходимо перейти в папку Tools, в которой находятся ещё три папки: 3rd_party, Source и Windows. В папку Source, где расположены тексты программ на языке Python (файлы *.py), необходимо скопировать библиотеку SLABHID-Device.dll. Если на компьютере установлена Security Studio, эту библиотеку можно найти, например, в папке C:Sil icon Lab sSimpl icityStudio v4_2developersdks8051v4.1.2anHI D_BlinkyHost_Application_Source Release и в других местах папки C:SiliconLabsSimplicityStudio.

Далее следует перейти в папку Windows распакованного архива AN945SW.zip, где расположены программа hex2boot.exe - преобразователь файлов из формата *.hex в двоичный загружаемый формат *.efm8 и программа efm8load.exe - собственно загрузчик файлов формата *.efm8 в микроконтроллер.

Пусть имеется файл EFM8LB1_ADC_ Lib_Autoscan_Large_Buffer_4.hex. Чтобы загрузить его в микроконтроллер EFM8LB12 по интерфейсу RS232, необходимо создать два пакетных (*.bat) файла. Файл hex2bootLB1_Large_Buf.bat (табл. 1) создаст файл EFM8LB1_ADC_ Lib_Autoscan_Large_Buffer_4.efm8. При запуске файла Efm8loadLB1_Large_Buf.bat (табл. 2), разумеется, если микроконтроллер подключён соответствующим образом к компьютеру, откроется окно, изображённое на рис. 7, в котором будет указано, что коды выгружаются из компьютера через порт COM1. Затем растущей строкой символов @ отображается ход процесса, a по его завершении будет сообщено число ошибок (нулевое в рассматриваемом случае). При нажатии на любую клавишу окно закроется.

Таблица 1

 

Таблица 2

 

Вид окна на компьютере

Рис. 7. Вид окна на компьютере

 

Для загрузки в микроконтроллер EFM8UB30 файла EFM8UB3_USBXpress_ TestPanel_6.hex также потребуется создать два bat-файла. После запуска файл hex2bootUB3.bat (табл. 3) сформирует файл EFM8UB3_USBXpress_ TestPanel_6.efm8. Перед запуском файла efm8loadUB3.bat (табл. 4) проверьте, что перемычка, соединяющая вывод С2D микроконтроллера с общим проводом, установлена. В этом случае ОС компьютера опознаёт микроконтроллер как безымянное HID (Human Interface) устройство, которое не отобразится ни в "Диспетчере устройств", ни среди скрытых значков в правом нижнем углу экрана монитора.

Таблица 3

 

Таблица 4

После запуска файла efm8loadUB3. bat откроется окно (рис. 8), отображающее ход программирования и его результат. По завершении загрузки в разделе USB списка "Диспетчера устройств" появится новое устройство - USBXpress Device. Кроме того, среди скрытых значков появится значок устройства USB. Если навести на него курсор, всплывёт подсказка "Безопасное извлечение устройства".

Вид окна, отображающее ход программирования и его результат

Рис. 8. Вид окна, отображающее ход программирования и его результат

 

На первый взгляд, кажется, что сообщения на рис. 7 и рис. 8 красноречиво свидетельствуют о том, что соответствующие программы без ошибок загружены в микроконтроллеры и будут работать. Но у автора были некоторые сомнения на этот счёт, поскольку подтверждения факта работоспособности загруженных программ он не имел.

Для чистоты эксперимента с помощью адаптера USB-DEBUG у микроконтроллеров EFM8LB12 и EFM8UB30 была стёрта вся программная память вместе с загрузчиком и заново занесена в неё программа-загрузчик. Файлы загрузчиков для всех микроконтроллеров семейства EFM8 имеются в папке AN945SWProductionDeviceHexfiles распакованного архива AN945SW.zip.

Затем была выполнена повторная загрузка прикладных программ и вновь получены сообщения, показанные на рис. 7 и рис. 8. После этого программы были запущены и, к немалому удивлению автора, идеально отработали. Кроме того, экземпляр микроконтроллера EFM8UB30, который ещё ни разу не программировался, был протестирован на предмет того, записан ли в него загрузчик на заводе-изготовителе. Тестирование показало успешную загрузку программы в микроконтроллер и её идеальную работу.

И наконец, работоспособность показали устройства с микроконтроллерами EFM8UB10, запрограммированными также с помощью встроенного загрузчика. Всё это позволило констатировать, что загрузчик программ efm8load.exe успешно программирует микроконтроллеры семейства EFM8, и его можно применять, не имея адаптера USB-DEBUG.

С помощью описанных в статье средств можно программировать микроконтроллеры семейства EPM8, в том числе в готовом устройстве без отдельного программатора. Это даёт возможность обойтись без дорогостоящего адаптера USB-DEBUG и существенно сэкономить на аппаратных средствах программирования при разработке устройств на микроконтроллерах этого семейства.

Литература

1. AN945: EFM8 Factory Bootloader User's Guide. - URL: https://www.silabs.com/ documents/public/application-notes/an945-efm8-factory-bootloader-user-guide.pdf (15.09.2018).

2. Инструкция для Silicon Labs EFM8BB31F16G-QFN24. - URL: https:// dl5.rebyte.me/files/gbsX0jlSLMBNj0lqupau yw==, 1 537026894/1 /4/3/0/9/4/0/AN945S W.zip (15.09.2018).

3. Кузьминов А. Преобразователь интерфейсов USB-SPI на базе нового 51 -совместимого микроконтроллера EFM8UB1. - Современная электроника, 2017, № 1, с. 48- 53; № 2, с. 48, 49; № 3, с. 50-57.

4. Кузьминов А. Связь между компьютером и микроконтроллером. Современные аппаратные и программные средства. - М.: Издательство "Перо", 2018.

Автор: А. Кузьминов, г. Москва