ARM

Ответить
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
ARM

Сообщение Oleg »

В виду того, что перед многими желающими начать изучение микроконтроллеров встает множество вопросов, таких как «С чего начать?», «Какой микроконтроллер взять для изучения, ведь их столько много и все они такие разные?», «Какой язык программирования необходимо знать?», «Как запрограммировать микроконтроллер и что для этого нужно?», «Какую первую схему на нем собрать?», а также множество других вопросов. Многие в связи с таким большим обилием вопросов уже в самом начале изучения пугаются кажущейся им сложности освоения микроконтроллеров, ведь для этого необходимо знать как электронику, чтобы уметь собирать схемы с микроконтроллерами, так и быть программистом, для написания программ. Но в действительности не все так сложно, как это может показаться на первый взгляд, ведь для написания своих первых программ достаточно изучить только основы языка программирования, а дальнейший опыт написания программ придет сам с практикой. Что же касается электронной части, то в мире существуют недорогие и в тоже время хорошие отладочные платы с программаторами, приобрести которые не составит проблем. Моей же задачей, при написании данного цикла, будет донести читателю базовые знания необходимые для возможности дальнейшего самостоятельного изучения микроконтроллеров. Я постараюсь преподнести всю информацию в наиболее доступном и понятном, для начинающих, виде, а в качестве микроконтроллера для своего рассказа я выбрал один из самых распространенных, дешевых, и, на мой взгляд, перспективных контроллеров STM32. Надеюсь, данный цикл статей будет для Вас полезен и интересен, и Вы тоже начнете создавать свои устройства на микроконтроллерах, ведь это очень интересно, увлекательно и раскроет перед Вами широкие возможности в плане создания собственных электронных устройств.
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
ARM – это просто (часть 1)

Сообщение Oleg »

Почему ARM?
ARM.jpg
ARM.jpg (11.12 КБ) 2460 просмотров
Технический прогресс не стоит на месте, появляются различные все более сложные устройства, и соответственно производители микроконтроллеров спешат не отстать от технического прогресса, разрабатывая все более мощные и «навороченные» микроконтроллеры, при этом постоянно снижая цены на них. В последнее время наметился рост популярности ARM микроконтроллеров, а с приходом бюджетных контроллеров с ядром Cortex-M цена стала настолько доступной, что уже может спокойно конкурировать с 8 и 16 битными контроллерами, такими как AVR, PIC, MSP430 и т.п., а зачастую она даже бывают меньше цены своих восьмибитных собратьев. Помимо этого для ARM микроконтроллеров существует множество средств отладки и программирования, цены на которые, вполне доступные даже для покупки «для домашнего использования». Так, например, официальная отладочная плата STM32VL Discovery имеющая на борту внутрисхемный отладчик ST-LINK и отлаживаемый микроконтроллер STM32F100RBT со 128 кБайт флеш памяти, 8 кБайт ОЗУ и 24МГц тактовой частотой в розницу стоит 10-15 долларов.

Для сравнения возьмем несколько популярных контролеров находящихся примерно в одной ценовой категории и сравним их с ARM контроллером STM32F100C4T6B продающимся по цене менее 1 доллара.

Таблица 1. Сравнительная таблица параметров распространенных микроконтроллеров
Сравнительная таблица параметров распространенных микроконтроллеров.jpg
Из таблицы явно видно, что ARM микроконтроллер STM32F100C4T6B по всем параметрам оставляет своих 8-и битных собратьев далеко отстающими. Помимо указанных в таблице особенностей следует также принять во внимание тот факт, что ARM контроллеры являются 32 разрядными, что означает возможность работы с 32 битными данными за один такт процессора, для 8 битных же процессоров для этого требуется гораздо большее количество тактов.

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

Как мы уже убедились, ARM микроконтроллеры имеют гораздо более высокие технические характеристики и возможности. Мы провели сравнение на самом младшем микроконтроллере STM32, на текущий момент самым «навороченным» из этой серии можно назвать микроконтроллеры STM32F407, имеющий 1 мегабайт ROM памяти, 192 килобайта RAM памяти и работающем на частоте до 168 МГц, при этом выполняя до 210 миллионов операций в секунду.

Данный микроконтроллер включает в себя такие модули как:

интерфейс камеры;
крипто/хеш аппаратный процессор;
Ethernet MAC10/100 с IEEE 1588 v2;
2 USB OTG;
отдельный аудио PLL и 2 полнодуплексных I²S;
до 15 коммуникационных интерфейсов включающих:
- 6x USART;
- 3x SPI;
- 3x I²C;
- 2x CAN;
- SDIO
2x 12-bit АЦП;
3x 12-bit ЦАП;
до 17 таймеров 16 и 32 битных работающих до 168 МГц;
Шина (FSMC) подключения внешних RAM, ROM, NandFlash;
Контроллер DMA используя его можно легко и непринужденно пересылать блоки данных между периферией и памятью без использования процессора.

Такому богатому набору периферийных модулей, пожалуй, может позавидовать любой 8и битный микроконтроллер.

Вопрос отладки и программирования также не является проблемой, поскольку за 10-15 долларов можно приобрести официальную отладочную плату STM32VL Discovery (см. рис. 1), имеющую выход для программирования внешних микроконтроллеров.
Фотография STM32VLDiscovery.jpg
Фотография STM32VLDiscovery.jpg (24.29 КБ) 2460 просмотров
Но даже если у Вас нет такой платы, то Вы всегда сможете запрограммировать микроконтроллер, через имеющийся в нем заводской загрузчик (bootloader), подключив его через USART или USB к своему ПК, для этого не потребуется каких либо аппаратных программаторов. Для программирования микроконтроллера имеющего встроенный USB бутлоадер, достаточно скопировать файл прошивки на контроллер, как на USB-накопитель. Для программирования микроконтроллера через USART, необходимо произвести его подключение к ПК с помощью преобразователя уровней USART-RS232 либо USART-USB преобразователя и воспользовавшись программой Flash Loader Demonstrator произвести загрузку файла прошивки во флеш память микроконтроллера. Программу Flash Loader Demonstrator можно взять с официального сайта компании ST.

Кроме этого у микроконтроллеров с ядром ARM Cortex-M3, по сравнению, например с ATMega и т.п. нет фьюзов, все управление осуществляется полностью программно, таким образом, отсутствует вероятность испортить микроконтроллер неправильным программированием фьюз битов.

Так почему же, при всех этих преимуществах, ARM микроконтроллеры еще не вытеснили другие контроллеры? Причин этому несколько. Во первых ядро ARM Cortex-M3, благодаря которому появились столь дешевые микроконтроллеры серии ARM, появилось относительно недавно и как следствие пока существует не так много примеров программ и библиотек, но их количество постоянно увеличивается с очень большой скоростью, в том числе большой вклад в это развитие вносят и сами производители микроконтроллеров ST и NXP, создавая различные апноуты и библиотеки. Другим фактором является лень многих людей осваивать новую для них архитектуру, а также необходимость приобретения средств для отладки, ведь им зачастую хватает и восьми битных микроконтроллеров, при этом они очень много сил и времени тратят на то, чтобы уложиться в имеющиеся в микроконтроллере ресурсы. Для начинающих же такое обилие имеющийся периферии и настроек пугает кажущейся сложностью в освоении, но в действительности это является заблуждением, поскольку производители микроконтроллеров позаботились и создали удобные библиотеки для работы с периферией, позволяющей практически не открывая даташит настроить основные периферийные модули. Также сдерживающим фактором на применение микроконтроллеров ARM Cortex-M3 в «домашних условиях» является наличие микроконтроллеров в корпусах LQFP с шагом ножек 0.5 мм, но тем не менее, такую плату при определенной сноровке изготовить ЛУТом не составит большого труда.

Таким образом, рассеяв последние опасения, и убедившись в том, что STM32 на ядре ARM Cortex-M3 это действительно достойный для изучения и применения микроконтроллер, можно смело переходить к первому шагу. Для начала нам потребуется скачать и установить необходимые для работы программы, справочные материалы и библиотеки. Поскольку большинство пользователей, работают под операционной системой Windows, то я буду рассматривать описание программ только для данной операционной системы, но хочу заметить, что пользователи других операционных систем также имеют возможность заниматься разработкой программ для МК ARM STM32. Для этого им необходимо использовать ПО для своей операционной системы, например все необходимое ПО для Linux можно скачать здесь. Но в любом случае описанные мною программы для Windows. возможно запустить под Wine, за исключением возможности внутрисхемной отладки и программирования.

-Flash Loader Demonstrator - программа необходима для загрузки микропрограммы во флеш контроллер, через встроенный бутлоадер;

-ST-LINK Utility – программа для записи/чтения флеш памяти микроконтроллера через отладчик ST-LINK;

-ST-LINK USB – драйвер для отладчика ST-LINK;

-UM0627: ST-LINK in-circuit debugger/programmer for STM8 and STM32 microcontrollers – документ описывающий какие выводы и как подключать к программатору/отладчику;

-UM0919: STM32VLDISCOVERY STM32 value line Discovery - описание отладочной платы STM32VL Discovery, включающее в себя назначение выводов платы и схему электрическую принципиальную;

-DS6517: Low & medium-density value line, advanced ARM-based 32-bit MCU with 16 to 128 KB Flash, 12 timers, ADC, DAC & 8 comm interfaces – описание аппаратной части микроконтроллера STM32F100;

-RM0041: STM32F100xx advanced ARM-based 32-bit MCUs – описание всех регистров микроконтроллера STM32F100;

-STM32F10x standard peripheral library – стандартная библиотека для работы с периферией от компании ST;

IAR Embedded Workbench for ARM - мощная и эффективная среда разработки для ARM микроконтроллеров на языке C. Поскольку программа является платной, то ссылку для скачивания не указываю, но хочу заметить, что помимо платной версии также существуют и бесплатные версии с ограничением по времени работы программы. Официально бесплатные версии можно скачать с сайта производителя http://www.iar.com, пробная 30 дневная версия доступна по ссылке.

Официальная утилита для конфигурирования периферии microxplorer - Пока что данная программа находится на этапе разработке и в ней реализованы еще не все задуманные функции.

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

Ознакомительное руководство по ARM-микроконтроллерам Cortex-M3– Данное руководство будет полезно для ознакомления со структурой микроконтроллеров семейства STM32 Cortex-M3.

STM_DOC_RU - содержит переводы трех документов с сайта фирмы ST:
Частичный перевод файла "STM32F10xxx Cortex-M3 programming manual.PDF" ревизия 2 от 18.01.2010.
Частичный перевод файла "STM32F105_107_Reference manual.pdf" ревизия 9 от 14.09.2009.
Полный перевод файла "Errata_stm32f107.pdf" ревизия 3 от 14.01.2010.

Работа с данными программами (за исключением IAR Embedded Workbench) довольна простая и не должна вызвать затруднения. О работе в среде программирования IAR Embedded Workbench будет рассказано в третьей части.

Скачав необходимую документацию и установив программы, можно переходить непосредственно к изучению микроконтроллеров.

Что такое микроконтроллер ARM STM32 и как он устроен?

Для начала выясним, что же такое микроконтроллер. Микроконтроллер (англ. Micro Controller Unit, MCU) — микросхема, предназначенная для управления электронными устройствами. Типичный микроконтроллер сочетает в себе функции процессора и периферийных устройств, содержит Оперативное Запоминающее Устройство (ОЗУ) или Постоянное Запоминающее Устройство (ПЗУ). По сути, это однокристальный компьютер, способный выполнять простые задачи. Как и компьютер, микроконтроллер — это электронное устройство, работой которого управляет программа — последовательность команд, заранее загруженная в память. В отличие от микропроцессоров, используемых в персональных компьютерах, микроконтроллеры содержат встроенные дополнительные устройства (такие периферийные модули как таймеры, SPI, USART и т.п.).

Для хранения исполняемого кода программ используется flash память, называемая также ROM памятью или памятью программ. Данная память является энергонезависимой, а количество циклов записи/стирания ограничено порядка 10 000 раз. Данная память является неким подобием жесткого диска компьютера.

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

Для сохранения редко изменяющихся данных и хранения их во время, когда питание микроконтроллера отключено, используется EEPROM память. Данная память имеется у некоторых видов микроконтроллеров, но в виду её отсутствия в микроконтроллерах ARM Cortex данный вид памяти эмулируется программно, и в качестве физической памяти для сохранения данных используется flash память.

Разумеется, любая выполняющаяся программа на любом микроконтроллере должна «общаться» с внешним миром, для этого у всех микроконтроллеров существуют группы выводов, называемых портами ввода/вывода. Для обозначения выводов портов используется буквенно-цифровое обозначение, такое как А0, А1, А5, В4 и т.п. Буквой обозначается имя самого порта, а цифрой указывается конкретный вывод данного порта. Все выводы одного порта могут быть одновременно изменены на требуемое состояние, выводы разных портов только поочередно, сперва изменяется состояние всех нужных выводов одного порта, затем другого порта. Количество выводов одного порта может насчитывать до 16шт, нумерация выводов начинается с нулевого.

Для примера рассмотрим микроконтроллер STM32F100Cxx. Данный микроконтроллер изготовлен в корпусе LQFP48, и имеет 48 выводов, 37 из которых могут использоваться как порты ввода/вывода. Этот микроконтроллер имеет 4 порта, два из которых, порт А и порт В полные, т.е. содержат все 16 выводов, и два не полных порта, это порты С и D, содержащие только 3 и 2 вывода соответственно.

Оставшиеся выводы задействованы для других функций, таких как питание самого микроконтроллера, выводы Vdd и Vss, питание аналоговой части Vdda и Vssa, вход батарейного питания Vbat, для работы встроенных часов реального времени и вход BOOT0, для выбора загрузки встроенного бутлоадера.
Расположение выводов микроконтроллера STM32F100Cxx.jpg
Порты микроконтроллера могут быть сконфигурированы как на вход, так и как на выход, причем каждый вывод порта настраивается индивидуально. Если вывод порта настроен как вход, то возможны следующие режимы его работы:

аналоговый вход (для выводов, на которые выведен вход АЦП, аналогового компаратора) (см. рис 3);
цифровой вход, для непосредственной работы с портом (может иметь верхний (к питанию) и нижний (к общему проводу) подтягивающий резистор) (см. рис. 4);
цифровой вход в режиме альтернативной функции (используется как вход для различных периферийных модулей) (см. рис. 6).
В режиме работы на выход, выводы порта могут быть настроены следующим образом:
выход с непосредственным программным управлением с симметричным выходом (push-pull) (см. рис. 5);
выход с непосредственным программным управлением с открытым стоком (см. рис. 5);
выход в режиме работы альтернативной функции (выход для различных периферийных моделей, таких как SPI, USART, ШИМ (PWM) и пр.), с симметричным выходом (push-pull) (см. рис. 6);
выход в режиме работы альтернативной функции, с открытым стоком (например, выход ШИМ) (см. рис. 6).

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

Продолжение урока можно прочитать сайте автора: https://cxem.net/mc/mc131.php

Ответить