Об STM32 и не только

Я уже довольно давно работаю с STM32 и считаю эти контроллеры лучшими в их ценовом диапазоне, но еще несколько лет назад передо мной стоял выбор, какое же семейство микроконтроллеров выбрать на ближайшие 5-7 лет разработок.
Но начнем с самого начала. В году 2014 решился я взяться за изучение и внедрение в своих разработках новейших 32-битных процессоров на ядре ARM. Спросите, зачем это надо, когда для большинства задач вполне хватает и 8-битных МК? А чтобы не отставать от модных течений, на западе это становится мэйнстримом, почему бы у нас не начать внедрять, ведь все этому способствует: дешевизна самих микроконтроллеров с ядром ARM (при том, что 8-битные все дорожают и дорожают и так будет продолжаться дальше, большинство производителей переводят свои мощности на производство 32-битных ядер), дешевые отладочные инструменты, в последнее время много русскоязычной информации. Ну и потом надо не выпадать из течения пока есть силы, а то так и застрянешь в развитии, а я стараюсь этого не допускать 🙂 Что отпугивает? В первую очередь сложность изучения о которой говорят на всех русскоязычных ресурсах (как раз и проверим), во вторых недоступность в силу некоторых обстоятельств (например, сложность пайки и разводки плат: корпуса только LQFP-48, 64 и т.п.) для обычного радиолюбителя, второе ко мне не относится, так что смело в путь!!!Решить – решил, теперь надо было выбрать, что же изучать. В общем, долго рылся в интернете, сперва хотел заказать отладочную плату на ARM9 с Linux на борту, т.к. имею солидный опыт общения с Linux и юниксподобными ОС; потом увидел альтернативу от моего любимого Atmel, но начитавшись понял, что у них свое ядро, которое к ARM отношение не имеет, попросту говоря, изучишь их МК — будешь знать только его, изучишь ARM – будешь знать все контроллеры на этом ядре, от любых производителей. В итоге пришел к выбору между NXP с их серией LPC и STM с их МК на ядре Cortex M3 и M4.

В итоге выбрал STM32. Что подкупило: один даташит на все серии МК F10X, процессоры в линейке отличаются только количеством ног и наличием на борту тяжелой периферии вроде USB/Ethernet/CAN, т.е. изучил самый простой в серии камень и уже можешь без проблем браться за любого монстра в 100-выводных корпусах с бешеным количеством периферии.

Ну, а дальше заказал я себе несколько оценочных плат – STM32LDISCOVERY, STM32VLDISCOVERY, STM32F4DISCOVERY. Через 3 дня они уже лежали у меня на столе.

Отладочные платы STM32 Discovery
Подключил каждую, потыкал один единственный USER BUTTON, все понятно, по умолчанию зашито в контроллер минимум функционала, мигание светодиода с разной частотой на STM32VLDISCOVERY, 4 сенсорные кнопки и LCD дисплей на STM32LDISCOVERY. На STM32F4DISCOVERY уже фаршу по более: подключен 3-осный акселерометр, аудио усилитель, задействован ЦАП и еще Бог знает чего, даже не успел глянуть. Плюс на каждой плате есть ST-LINK – программатор-отладчик, по умолчанию, включенный на контроллер в плате, но если убрать две перемычки как на рисунке, можно отлаживать и программировать свои девайсы через SWD коннектор на плате. Очень удобная штука.

ST-LINK – программатор-отладчик
В общем выбор был сделан, сейчас по прошествии лет накопилось огромное множество самописных библиотек, драйверов и еще много чего, чем и буду делиться на страницах данного блога. Скажу сразу, весь мой код основан на CMSIS и HAL я не использую и всячески избегаю.

2 Ответов в “Об STM32 и не только

  1. Это здорово что вы не используете HAL. Сам самоучка. Быстро понял что лучше время один раз потратить на изучение периферии STM32. А код писать сразу на cmsis. Ясное понимание всех процессов происходящих в микроконтроллере даёт именно такой подход. Почему нигде нет сниппетов для stm32f4? Когда пишешь свою библиотеку они помогают придерживаться определённого плана действий. Например при инициализации периферии МК. Для новичков самое то.

    1. Это я раньше не использовал HAL, но, изучив его более подробно, я пересмотрел свое отношение к этому фреймворку. С ним гораздо удобнее работать, когда пишешь свои классы на C++ для устройств.

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

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