admin / 19.10.2018
Содержание
Для начального знакомства с контроллерами STM32 идеальным вариантом будет готовая отладочная плата. Так получилось, что я совершенно бесплатно заполучил платку STM32VL Discovery. Было время когда их раздавали бесплатно всем, кто изъявил желание её получить. Если покупать, то стоит она сравнительно не дорого, например в наших краях ~20$. Как правило любая отладочная плата (из всех что я видел) представляет собой непосредственно сам микроконтроллер, программатор подключенный к этому контроллеру и некоторый набор внешней периферии которая так же определённым образом подключена к контроллеру. И все это на одной платке. Под периферией подразумеваются различные кнопки, индикаторы, светодиоды и прочие ништяки 🙂 Надо отметить что в плане периферии эта платка очень бедна: Есть всего лишь 2 светодиода и одна кнопка (+ одна кнопка сброса но она не в счет). Для первого знакомства достаточно, но если идти дальше а не только мигать диодом — то маловато будет и надо паять что-то своё или дорабатывать эту платку. Выглядит сама платка так:
Присмотревшись, не сложно будет понять откуда взялся логотип для этого сайта 🙂 Начнем по порядку. Во-первых плата поделена на две части: Отладчик ST-LINK и непосредственно сам контроллер с обвязкой. Отладчик мне очень понравился: умет работать со многими (если вообще не со всеми) контроллерами STM32. Наружу выведен интерфейс SWD, этот интерфейс физически реализован в виде двух проводов, что весьма удобно. Это позволяет нам прошивать другие контроллеры STM32 при помощи этой платы. Перед прошивкой какого-либо внешнего контроллера необходимо снять две перемычки через которые отладчик соединен с программируемым контроллером на установленном на плате. Для удобства рядом с двумя контактами SWD есть еще земля и плюс питания. Кроме SWD есть еще JTAG, проводов там побольше и разъёма на плате нет. При желании можно подпаяться к контроллеру (который в отладчике), но смысла я в этом пока не вижу, так как через SWD отладка и программирование работают отлично. Кроме выполнения своих прямых функций, отладчик также обеспечивает питанием 3.3 вольта всю плату. Подключается к компьютеру через обычный mini-usb кабель который к сожалению в комплект не входил. У отладчика так же есть два светодиода, один показывает что на плату подается питание, а второй мигает во время любой активности. Переходим к оставшейся части платы: Самое главное в ней — это как ни странно контроллер 🙂 На плате установлен STM32F100RBT6B. Чип вполне нормальный, нет разве что USB что немного огорчает. Основные характеристики такие: Тактовая частота 24 МГц, 128 кб флеш памяти, 8 кб ОЗУ, наличие ADC, DAC, I2C, SPI, USART, RTC и некоторых других вещей со страшными названиями. Для первого знакомства — самое оно! Естественно голый чип, (пусть даже подключенный к отладчику и питанию) ни какого интереса не представляет по понятным причинам: Отработала зашитая вами программа, а результата не видно. Для взаимодействия с внешним миром у этого контроллера есть ноги, причем 51 нога (из 64-х) может менять свое состояние по желанию программиста. Вот как раз к двум таким ногам подключены два светодиода — зелёный и синий, первое время тренироваться будем на них. Из «устройств вывода» это всё. Для того чтоб как-то воздействовать на выполнение программы есть одна кнопка (синяя). В программе можно определять её состояние (нажата или отпущена), а вот вторая кнопка служит для сброса контроллера. По сути дела, кнопка и пара светодиодов это все с чем может работать пользователь этой платы. После некоторого числа экспериментов возникнет желание подключить какой-нибудь дисплей, карту памяти, дополнительные кнопки или еще чего, но на первое время нам хватит этого. В плане подключения внешних устройств — плата довольно удобна, так как все выводы контроллера посажены на три гребёнки штырьков по бокам платы:
На счёт подключения дополнительное периферии — будут статьи. Еще очень важно обратить внимание на перемычку управляющую питанием. Если её снять то контроллер будет обесточен и соответственно работать ничего не будет. Удобно вместо перемычки подключать амперметр и смотреть на ток потребления, если конечно вы любознательный человек вроде меня 🙂 На плате так же имеются два кварца : на 32768 Гц и на 8 МГц. От последнего тактируется контроллер, причем кварц этот легко вынимается и заменяется на другой без всякой пайки, это если вдруг пользователю захочется скорости, но для большинства наших первых экспериментов хватит и 8 МГц. Второй кварц — часовой. Его наличие не обязательно, но он будет использоваться нами в экспериментах с часами реального времени. Но до этого еще далеко, а сейчас я предлагаю вам попробовать сделать что-то практическое с этой платкой.
P.S. Возможно пригодится схема STM32vl Discovery
Компания ST раздаёт дешёвые отладочные платы для знакомства с их микроконтроллерами. Наверняка и вы начнёте с них — поэтому я рассмотрю основные платы Discovery, чтобы вы могли выбрать себе по вкусу.
Самая первая плата семейства, раньше называлась просто STM32Discovery. Именно с неё началась экспансия ST на рынок дешёвых и мощных микроконтроллеров общего назначения, этим объясняется её неприлично низкая цена — демпинг цен на эту плату принёс ST прибыль в виде множества новых адептов.
Как видим, довольно мощная плата. Вкупе с низкой ценой (а многие, как и я, получили её бесплатно на семинарах) она произвела настоящий фурор.
К плате прилагается множество примеров использования разной периферии, и неплохой «Master project», прошитый по умолчанию.
Скачать примеры для STM32VLDiscovery.
Очень сильная плата, как по мощности процессора так и по количеству периферийного оборудования. Процессор класса STM32F4 имеет высокую скорость работы, множество периферии вроде контроллеров памяти/дисплеев/камеры и всевозможными USB, CAN и прочими интерфейсами, а также полноценные модули FPU и DSP. Замечательный процессор, на нём сделано довольно много из моих приборов.
Конечно, стоит дороже — но и возможностей имеет куда больше. Прекрасная плата, удобная и мощная. В основном на ней я проводил эксперименты со звуком, с шинами CAN и USB, и акселерометром. Наличие DSP-ядра даёт возможность производить цифровую обработку аудиосигналов и навигации. Помимо перечисленной периферии, на кристалле присутствуют также модули вычисления CRC (контрольные суммы), HASH (хеш данных), CRYPT (криптография) и RNG (генератор случайных чисел).
Список прилагающихся примеров так же обширен. Из минусов — разве что не очень удобный micro-USB.
Скачать примеры для STM32F4Discovery.
Столь же хорошая плата, но с ещё более новым процессором серии STM32F3, и явной направленностью на навигационные применения и Sensor Fusion. Похоже, её сделали на росте популярности квадрокоптеров, которым нужен как раз такой набор датчиков положения. Также, видимо, инженеры услышали просьбы разработчиков и сделали USB в виде обычного mini-USB.
По умолчанию прошит довольно интересный пример — магнитный компас, отображающий направление на север на светодиодном круге.
К возможностям процессора стоит добавить умножение за 1 такт и железное деление, модули вычисления CRC (контрольные суммы), HASH (хеш данных), CRYPT (криптография) и RNG (генератор случайных чисел), а также расширенные аналоговые возможности — 4 ОУ с изменяемым коэффициентом усиления, увеличенное количество (4 штуки) 12-бит АЦП и 7 компараторов. Это делает STM32F3 настоящим DSP, с отличным аналоговым интерфейсом.
На этой плате я также сделал довольно много приборов.
Скачать примеры для STM32F3Discovery.
Самая свежая отладочная плата — на младшем процессоре серии STM32F0.
Эта плата интересна в первую очередь своей дешевизной и применением процессора из младшего семейства. Ведь даже самый слабый процессор ST/ARM всё равно во много раз мощнее привычных AVR и PIC, а стоит даже дешевле. Более того, здесь есть модули CRC, аналоговые компараторы и контроллер сенсорных кнопок.
Скачать примеры для STM32F0Discovery.
Р/л технология
Главная Радиолюбителю Р/л технология
Уже много лет радиолюбители применяют восьмиразрядные микроконтроллеры семейств PIC и AVR. Они популярны благодаря низкой цене, наличию подробной документации, простоте программирования и лёгкости монтажа. Однако довольно часто бывают случаи, что мощности такого микроконтроллера для решения поставленной задачи недостаточно. Самый простой пример — частотомер или генератор сигналов на микроконтроллере, где максимальная измеряемая или генерируемая частота напрямую зависит от скорости обработки или вывода информации.
Помимо скорости, восьмиразрядные микроконтроллеры имеют и другие ограничения, например, во многих моделях AVR всего один аппаратный последовательный порт, что не позволяет получать информацию от внешнего устройства и одновременно пересылать результаты её обработки потребителю. Не говоря уже о таких «банальных» вещах, как вывод информации на графический индикатор, требующий больших ресурсов как скорости, так и памяти. После анализа ряда таких ограничений у автора возникла мысль о переходе на микроконтроллеры семейства STM32.
Для примера рассмотрим два микроконтроллера одной ценовой категории — STM32F103C6 и ATmega328P.
Таблица 1
Тип микроконтроллера |
ATmeqa328P |
STM32F103C6 |
Разрядность процессора |
8 |
32 |
Корпус |
TQFP32 |
LQFP4E |
Шаг выводов, мм |
0,8 |
0.5 |
Тактовая частота, МГц |
20 |
72 |
Объём FLASH-памяти. Кбайт |
32 |
32 |
Объём ОЗУ, Кбайт |
2 |
10 |
Число USART |
1 |
2 |
Число 16-разрядных таймеров |
1 |
2 |
Число линий ввода-вывода |
23 |
37 |
Ориентировочная цена, руб. |
270 |
210 |
Их сравнительные параметры приведены в табл. 1. Результаты сравнения даже несколько удивляют. 32-разрядный микроконтроллер не только мощнее восьмиразрядного практически по всем параметрам, но при этом дешевле. Разумеется, паять микроконтроллер с шагом выводов 0,5 мм в домашних условиях не так-то просто. К счастью, в большинстве случаев этого и не требуется — на рынке имеется множество разновидностей отладочных плат с микроконтроллерами семейства STM32, достаточных для различных применений. Рассмотрим их более подробно.
STM32F4-DISCOVERY
Эта плата (она изображена на рис. 1), пожалуй, наиболее удобна для начинающих изучение микроконтроллеров STM. Во-первых, она имеет большой набор периферийных устройств. Помимо микроконтроллера, на плате установлены микроэлектромеханический акселерометр, микрофон, аудиоЦАП, два разъёма USB, кнопка и четыре светодиода.
Рис. 1
Выводы микроконтроллера выведены на контактные площадки для монтажа штыревых разъёмов у левого и правого краёв платы, что позволяет легко подключать к ним все необходимые внешние устройства. Установленный на плате микроконтроллер STM32F407VGT6 имеет весьма неплохие параметры: 1 Мбайт FLASH-памяти, 192 Кбайт ОЗУ и тактовую частоту 168 МГц.
И наконец, плата оборудована встроенным отладчиком ST-LINK/V2, который можно использовать для отладки программ не только на имеющемся на плате микроконтроллере, но и на микроконтроллерах того же семейства, находящихся на других платах. Переключение на них выполняется с помощью съёмной перемычки и разъёма SWD.
Цена платы — около 800 руб., что можно считать вполне приемлемым.
STM32F103RBT6 Development Board
Следующим интересным вариантом является отладочная плата с микроконтроллером STM32F103RBT6 (рис. 2).
Рис. 2
Он несколько слабее, чем установленный на предыдущей плате — тактовая частота 72 МГц, 128 Кбайт FLASH-памя-ти и 20 Кбайт ОЗУ, однако периферийные устройства весьма интересны. Имеются сенсорный TFT-экран с разрешением 320×240 пкс и диагональю 2.8', встроенный USB-порт для обмена информацией с компьютером, разъём для карты памяти SD, часовой кварц на 32768 Гц, отсек для элемента питания часов реального времени и разъём ST-LINK для отладки программ.
Цена этой платы также около 800 руб., но следует заметить, что встроенного отладчика на ней нет. Для загрузки программ необходимо либо приобрести отдельный отладчик ST-LINK, либо использовать вместо него рассмотренную выше плату STM32F4-DISCOVERY
Maple Mini
Бросается в глаза внешнее сходство этой платы (рис. 3) с широко известными модулями Arduino. И это не случайно.
Рис. 3
Плата Maple Mini и была разработана как замена Arduino Nano. Язык программирования и среда разработки для устанавливаемых в Arduino микроконтроллеров семейства AVR были адаптированы под семейство STM. На интернет-странице http://leaflabs.com/docs/maple-q uickstart.html можно найти подробную информацию о языке программирования и среде разработки Maple IDE.
Отладочная плата имеет микроконтроллер STM32F103CBT6, работающий на тактовой частоте 72 МГц, имеющий 128 Кбайт FLASH-памяти и 20 Кбайт ОЗУ, что, несомненно, больше, чем в любом модуле Arduino. И тем больший плюс, что среда разработки практически не изменилась.
Отдельно заметим, что несмотря на миниатюрные размеры, Maple Mini предоставляет весьма разнообразную периферию: 34 линии ввода/вывода, два интерфейсных канала SPI и два I2C, три последовательных порта. Это позволяет с успехом применять её в различных любительских разработках. Благодаря малым размерам Maple Mini может быть встроена непосредственно в разрабатываемое устройство.
Оригинальную плату Maple Mini можно приобрести за 35 долл. США на сайте её разработчиков. Ещё 5 долл. США будет стоить доставка. Копия платы, изготовленная в Китае, обойдётся вдвое дешевле.
Программное обеспечение
Существуют несколько вариантов сред разработки, которые можно использовать для подготовки программ для микроконтроллеров семейства STM32:
— коммерческие IAR Embedded Workbench, AtollicTrueSTUDIO, Keil и др. Эти полнофункциональные продукты довольно дороги, с ценой лицензии от 1000 евро, но имеются и демонстрационные бесплатные версии с ограничением на объём разрабатываемой программы, для большинства несложных проектов их вполне хватает;
— бесплатная Eclipse с компилятором ARM-GCC требует нетривиальной настройки компилятора перед использованием. Единственный плюс на сегодняшний день — возможность работы не только в Windows, но и в Linux;
— бесплатная CooCox IDE (CoIDE) на базе того же редактора Eclipse. Выполняет загрузку и отладку программ через ST-LINK. В отличие от предыдущего варианта, CoIDE не требует каких-либо специальных настроек и работает сразу же после установки. Этот вариант наиболее удобен, им и стоит воспользоваться.
Воспользуемся CooCox IDE для создания примера программы для платы STM32F4-DISCOVERY реализующей классическое для первой программы для любого микроконтроллера мигание светодиодов. На плате STM32F4-DIS-COVERY имеются четыре светодиода, подключены они к выводам PD12- PD15 микроконтроллера. Сделаем так, чтобы они мигали поочерёдно.
Шаг 1. Запускаем среду разработки CoIDE, создаём проект. Из выпадающего списка, показанного на рис. 4, выбираем микроконтроллер STM32F407VG.
Рис.
4
Шаг 2. Как показано на рис. 5, выбираем компоненты, которые будут использованы в проекте. Основные из них — это GPIO (ввод-вывод), С Library (базовые функции языка С) и M4 Core (функции ядра процессора). При активизации того или иного компонента CoIDE автоматически копирует нужные файлы в папку проекта, что очень удобно.
Рис. 5
Шаг 3. Ввод текста программы.
Он довольно короткий и приведён в табл. 2.
Как можно видеть, всё просто и очевидно. Те, кто писал программы для микроконтроллеров AVR, наверняка увидят знакомые конструкции — инициализацию портов с указанием направления (ввод или вывод), главный цикл, в котором выполняются нужные действия. В целом же синтаксис программы полностью соответствует языку С, литературы по которому более чем достаточно. Статей по программированию для STM32 в Интернете также немало. Много примеров поставляется вместе с отладочной платой, их тоже можно использовать как образцы.
После ввода текста программы нажатием на экранную кнопку «Download to flash» она загружается в микроконтроллер. Светодиоды на плате начинают мигать. Отдельно стоит отметить возможности отладки — в любом месте программы может быть поставлена точка останова, можно запускать программу по шагам, просматривая значения переменных.
Разумеется, этот пример не идеален. Например, для управления миганием светодиодов можно воспользоваться прерываниями от таймера, что освободит главный цикл программы для других задач. Желающие могут разобраться с этим самостоятельно.
Заключение
В целом, после первого знакомства микроконтроллеры семейства STM32 оставили весьма приятное впечатление. Всё оказалось не так сложно, а удобство среды разработки, процесса отладки и большое число стандартных функций чем-то даже напомнили переход от Ms DOS к Windows — общие моменты вроде те же, но все гораздо удобнее и функциональнее.
Но главным недостатком этого семейства для любительских разработок всё-таки остаётся слишком мелкий шаг выводов.
Спроектировать и спаять плату с шагом выводов 0,5 мм в домашних условиях — задача весьма нетривиальная. Но при существующих ценах каждому радиолюбителю вполне доступны отладочные платы с уже смонтированными микроконтроллерами.
Стоит ли переделывать всё на STM и 32-разрядную архитектуру? Конечно же, нет. Есть задачи, для решения которых и ATtiny вполне достаточно. Но, например, для анализа спектра в самодельном SDR-приёмнике или приёма- передачи больших объёмов информации по сети гораздо эффективнее сразу применить мощный микроконтроллер, чтобы не упереться в недостаток памяти или производительности при совершенствовании устройства.
Автор: Д. Елюсеев, г. Санкт-Петербург
Дата публикации: 10.10.2013
Нет комментариев. Ваш комментарий будет первый.
Вы можете оставить свой комментарий, мнение или вопрос по приведенному вышематериалу:
Редакция отказалась от публикации — публикация отказывается от Редакции. Выкладываю после небольшого редактирования; таких матералов при поисках в Сети мне не попадалось, пришлось разбираться самому.
Многоразрядные ЖКИ (например, используемые в телефонах (несотовых), калькуляторах, в дисплеях на панелях сложных приборов) конструктивно выполнены для применения динамической индикации. На таких индикаторах, кроме собственно цифр, имеются изображения других (служебных) символов; они, как правило, снабжены собственным контроллером, диалог с которым возможен по тому или иному стандартному протоколу. Можно ли использовать многоразрядные индикаторы без контроллера? Это случаи, когда протокол неизвестен (отсутствует та часть устройства, которая должна формировать сигналы индикации), или МК поврежден. Рассмотрим, как организована индикация в таком приборе.
В http://kulikova-nata.narod.ru/oldsite/articles/lcd/lcd.html , http://radvs.boom.ru/indicator.html есть описание принципа действия ЖКИ индикаторов вообще, а также рассмотрена конструкция мультиплексного индикатора. Двенадцатиразрядный индикатор такого типа применяется в калькуляторах «CITIZEN». Конструкция одного из разрядов такого индикатора показана на рис.1.
Все сегменты A, B, F всех 12 разрядов конструктивно объединены одним общим (прозрачным) электродом, вывод которого обозначен COM1. Сегменты C, E, G объединены электродом COM2, а D, «точки» каждого разряда и один для всех цифр знак «минус» (на рисунке не показан) — COM3. Каждое знакоместо имеет три вывода: объединены сегменты B, C, «точка» – вывод обозначен SEG3; A, G, D — вывод SEG2; и F, E, «минус» — SEG1. Таким образом, сформирована матричная структура, которой можно управлять. Электроды COM возбуждаются трёхуровневым сигналами, один цикл индикации составляет 6 тактов. В принципе, для включения всех сегментов достаточно первых трёх тактов (1, 2, 3), ещё три (4, 5, 6) нужны именно для организации знакопеременного напряжения на выводах индикатора. Как известно, возбуждение сегментов ЖКИ желательно производить переменным напряжением, при этом долговечность индикатора на порядок выше. Следовательно, сигналы управления также должны быть инвертированы.На временных диаграммах показаны сигналы, которые необходимы и достаточны для индикации всех возможных состояний индикатора. На диаграмме 4 показаны эпюры напряжений, которые, будучи поданы на выводы SEG1,2,3 приведут к гашению всех сегментов. Это состояние обозначено символом 0. Зажигание сегмента обозначено символом 1 и все восемь возможных вариантов приведены на диаграммах 4 — 11.
Если сигналы 9 — 11 будут поданы на выводы SEG так, как указано на рисунке, будет индицироваться цифра 0 (с децимальной точкой). Индицируемые сегменты выделены красным цветом, сегмент G и знак «минус» не индицируется, они обозначены черным цветом. Легко заметить, что включение егмента происходит только в те моменты, когда сигналы на выводах COM и SEG находятся в противофазе. Если сигналы синфазны, происходит гашение сегмента.
Кроме рассмотренного случая сегменты могут быть конструктивно объединены в другом сочетании. Разобраться несложно — неизвестный индикатор можно «прозвонить» простым, общеизвестным способом: достаточно прикоснуться жалом включенного в сеть паяльника к выводу прибора, как подключенные к нему сегменты будут видны на экране.
Встречаются индикаторы, имеющие два или четыре, а не три общих электрода. При этом цикл индикации будет равен четырём или восьми тактам соответственно. Очевидно, что схему управления мультиплексными индикаторами лучше всего делать на микроконтроллерах. Собирать схему на простой логике неоправданно по причине трудоёмкости и увеличения габаритов изделия.
FILED UNDER : IT