• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

 

Первые шаги с открытой платформой разработки STM32 Nucleo (часть2)

 

 

После первоначальной презентации мы можем проанализировать, какие функции нам больше нравятся в микроконтроллере F401RE STM32. ARM Cortex-M4 с 32-разрядным блоком с плавающей запятой и с тактовой частотой, которая благодаря правильной настройке внутренних регистров может масштабироваться до 84 МГц, в целом с очень низким потреблением тока (даже около 9 мкА ). Факт того, что 32-битный и имеющий «блок с плавающей точкой», значительно повышает производительность системы, особенно в случае сложных алгоритмов. В памяти он имеет флэш  512 КБ, где находится наш код, и 96 КБ SRAM, используемых для выполнения программы. Говоря о периферийных устройствах, он представляет собой 12-разрядный аналого-цифровой преобразователь (АЦП), который может быть разделен на шестнадцать каналов. Шесть 16-разрядных таймеров и два 32-битных таймера, которые могут быть сконфигурированы различными способами, включая классический IC (входной захват), OC (выходное сравнение) и PWM (широкая импульсная модуляция) и другие два таймера, используемые в режиме сторожевого таймера. Разумеется, существуют многочисленные интерфейсы связи: три интерфейса I2C, три интерфейса USART (два из которых могут достигать скорости 10 Мбит / с), четыре интерфейса SPI со скоростью 42 Мбит / с: все доступные на выводах ввода / вывода, которые также переназначаются на разъемах Morpho (CN7 и CN10). Штыри ввода-вывода также допускают до 5 В, а затем, если они сконфигурированы как вход, смогут принимать 5-вольтовые TTL-сигналы, не повреждая внутренние драйверы. Среди интерфейсов мы считаем отладочные тоже классические JTAG и SWD, представленные новейшим семейством ARM Cortex, а также используемые на плате NUCLEO. Наконец, у нас есть RTC с интегрированным полноскоростным USB 2.0-портом, который может работать не только в традиционном режиме устройства, но и в режиме хоста (OTG) или позволяет микрообслуживанию общаться с USB-устройствами, такими как мыши, клавиатуры, Устройства хранения данных и другие. Давайте проведем сравнение между NUCLEO и Arduino UNO. Если с технической точки зрения первое имеет лучшие результаты с точки зрения характеристик и качества, есть и другие факторы, которые следует учитывать. Плата NUCLEO не имеет внешней памяти EEPROM, и даже микро STM32 не имеет внутренней памяти EEPROM для хранения постоянных переменных в случае перезагрузки платы, в то время как Arduino может рассчитывать на EEPROM микроконтроллера Atmel. Кроме того, у NUCLEO отсутствует внешний разъем питания, если мы хотим использовать платы с требованием напряжения питания выше 5 В или внешнего источника питания. Сравнение платы NUCLEO и Arduino DUE более жесткое, поскольку они монтируют одно и то же семейство микроконтроллеров (ARM Cortex-M), но NUCLEO имеет Cortex-M4, несмотря на Cortex-M3 на Arduino DUE и имеет блок с плавающей запятой. Поэтому, если вы хотите использовать алгоритмы, которые сильно используют плавающую запятую, код C будет написан таким же образом на обеих платах, но компилятор для Cortex-M4 будет генерировать гораздо меньше инструкций, которые будут выполняться быстрее, а также со значительной производительностью. Тактовая частота и флэш-память сравнима, Arduino DUE имеет большее количество модулей ввода / вывода, но эти контакты не выдерживают (если настроены как входные) напряжения выше 3,3 В, ограничивая использование Arduino, которые запрашивают 5 В. Теперь мы перейдем к интересной части, которая заключается в том, как программировать плату NUCLEO. Даже если плата совместима с Arduino, это не с ее программная среда. Программа, написанная для Arduino, не может быть скомпилирована «как есть» для NUCLEO. Эта проблема не так велика, как может показаться, потому что, как и в случае с Arduino, программирование NUCLEO проводится на C (тогда код, сделанный для платы, легко переносится без каких-либо изменений в другую), а также потому, что у нас хорошая среда IDE, чтобы перенести наши первые шаги. Посмотрим, как программируем NUCLEO: сначала подключите плату к ПК через кабель MINI-USB; Светодиоды LD1 и LD3 загорятся и запустит прошивку небольшого размера, предварительно загруженную во флэш-память, которая будет мигать светодиодом LD2 в разных шаблонах, которые мы можем изменить, нажав кнопку B2. В любом случае нам нужно загрузить наш код, поэтому сначала мы загрузим драйвер для управления встроенным отладчиком ST-LINK / V2; Это zip-файл, доступный на www.st.com/stm32nucleo после выбора соответствующей платы NUCLEO (в нашем случае F401RE). Перейдите к установке, выполнив пакетный файл внутри zip или вручную из списка устройств. Это не обязательно, но вместе с драйвером вы также можете загрузить исполняемый файл (ST-LinkUpgrade.exe) для обновления прошивки ST-LINK / V2 отладчика; Просто нажмите кнопку «Подключить устройство», чтобы проверить версию, а затем «Yes», чтобы выполнить операцию.

 

ST-LinkUpgrade.exe обновляет прошивку встроенного отладчика NUCLEO.

 

На этом этапе у нас есть все готово, и мы даже можем избежать установки среды разработки, потому что программирование может быть выполнено непосредственно в Интернете. Это возможно благодаря ARM mbed, онлайн-платформе, разработанной и разработанной ARM, чтобы обеспечить разработку и развертывание устройств на базе 32-разрядной семейства ARM Cortex-M). Короче говоря, он-лайн IDE, бесплатный, простой и быстрый, который позволяет редактировать код и компилировать его непосредственно в вашем браузере. Компилятор облака - это C / C ++ (ARMCC); Инструментарий разработки постоянно анализируется и обновляется, и наш код будет сохранен в частном облаке, к которому мы можем получить доступ, когда мы подключаемся к нашей учетной записи. Вам, очевидно, потребуется зарегистрироваться здесь: http://mbed.org/, чтобы перенаправить в следующий раз непосредственно в IDE, который появится, как на рисунке.

 

Mbed online IDE.

 

Еще одна интересная вещь - возможность получить доступ к обширной базе данных проектов, написанных другими программистами ARM, и импортировать их непосредственно в рабочее пространство. Также мы можем сделать наш код общедоступным и доступным для сообщества ARM mbed, обновив его с помощью интегрированного средства управления версиями и имея возможность загружать другие версии.После выбора нашей платы, нажав верхнюю правую кнопку, мы можем решить, загружать ли в нашей рабочей среде один из многих проектов, которые уже были написаны для выбранной платы (и редактировать их в соответствии с нашими потребностями через «New», а затем «New Program "), или вы можете импортировать проект, написанный другими программистами, выбрав его помеченные ключевые слова (кнопка«Import »).На первом рисунке вы можете увидеть мастера для создания образца проекта, который использует PWM платы NUCLEO, а во втором представлен простой код, управляющий светодиодом LD2.

 

Mbed Wizard для создания нашего первого проекта

 

Использование mbed для мигания светодиода

 

Код, также указанный в листинге 1, очень прост и говорит сам за себя; Короче говоря, мы можем видеть, что достаточно включить mbed.h, а затем мы можем выбрать, что привело к управлению (LED1 - это #define, который соответствует порту светодиода на нашей плате), заставляя его мигать с переменной по задержке, используя ожидание () (Требуется в качестве параметра значение с плавающей точкой в ​​секундах).

 

Листинг 1

 

#include "mbed.h"

 DigitalOut myLED (LED1);

 Serial serial (USBTX, USBRX);

 int main ()

 {

 serial.printf ("Start Program  n  r");

 while (1)

 {

 myLED = 1;

 wait (0.2);

 myLED = 0;

 wait (1.0);

 }

 }

 

Точно так же «последовательный» объект позволяет нам использовать последовательный порт (USBTX и USBRX #defines переназначаются на выводах D0 и D1 на разъеме Arduino), которые с помощью метода printf () будут печатать строку отладки на виртуальном COM-порту ПК (Сгенерированный встроенным модулем ST-LINK / V2 на плате) через тот же USB-кабель. Как только наш проект будет завершен, будет еще проще загрузить его на борт без необходимости использования сторонних программ. Вы заметили, что при подключении платы через USB-кабель к ПК NUCLEO рассматривается как массовая память операционной системы, потому что программатор ST-LINK / V2 также действует как «виртуальное запоминающее устройство большой емкости». Очевидно, что это не pendrive, где вы можете хранить свои данные, но это оригинальное решение для переноса нашего кода на флэш-память STM32. Когда вы нажимаете «Скомпилировать» на IDE (дополнить в командной строке), проект будет скомпилирован в облаке, и если ошибок нет, сгенерированный двоичный файл будет загружен вашим браузером на вашем локальном ПК; В этот момент просто перетащите его в «массовое хранилище» NUCLEO, подождите несколько секунд, и когда светодиод LD1 закончит мигать, код будет работать от Flash. Быстро и просто, но, безусловно, имеет недостаток в необходимости подключения к Интернету, потому что компиляция выполняется в облаке, и в любом случае Mbed не может отлаживать наш код шаг за шагом. STMicroelectronics показывает серию компиляторов и сред разработки (EWARM, MDK-ARM и TrueSTUDIO), которые позволяют нам работать автономно и быть в состоянии следить за потоком кода, проверяя память и регистрируя значения для каждой кодированной команды. Они не бесплатны, но вы можете загрузить бесплатную пробную версию в течение ограниченного времени или ограничить размер кода до 32 кБ, что достаточно для выполнения какого-либо тестового проекта. Существуют также бесплатные альтернативы без ограничений, такие как «Em :: Blocks», а также для многих других встроенных устройств и внешний вид которых показан на рисунке. Таким образом, мы можем использовать наш ST-LINK / V2 как настоящий отладчик, полезный в тех случаях, когда мы хотим исследовать поведение некоторых ошибок или лучше анализировать состояние наших переменных, вставив точки остановки на строки кода.

 

Пошаговая отладка с помощью Em :: Blocks IDE.

 

Важно знать, не обязательно должны переписывать наш проект Em :: Blocks с нуля, можем импортировать проект, созданный с помощью Mbed, так как Em :: Blocks IDE позаботится о преобразовании его в совместимый проект. Очевидно, это возможно из-за того, что Mbed, помимо сохранения наших проектов в частном облаке, позволяет нам экспортировать наше программное обеспечение в виде zip-файла или во многие другие форматы проектов, совместимые с некоторыми используемыми средами разработки, включая Em :: блоки.

 

Борис Ландони 

 

 




Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 380



          

Радио для всех© 2024