1. Введение (Почему IAR)
В прошлой статье по IAR я объяснил выбор просто: потому что не Keil. Ну а если более развернуто, то еще и потому что не Coocox и не Eclipse. Давайте вместе пройдемся по минусам:
- Keil — дорогой (upd: хотя в комментариях подсказывают, что для STM32F0 и STM32L0 он вообще бесплатен!);
- Coocox — нет симулятора, нет поддержки AVR;
- Eclipse — имеет симулятор, но убогий, работающий только под бубном;
Что предлагает IAR?
- Во-первых, бесплатную версию (лимит кода 16 Кб для Cortex-M0/M0+/M1).
- Во-вторых, нормальный симулятор для отладки кода — кто-то сейчас поморщит носом, что настоящие джедаи отлаживают только в железе, а мне вот лениво каждый раз заливать прошивку, да и свободы как-то больше.
- В третьих, IAR работает и под AVR, для этого нужно скачать соответствующую версию и при установке выбрать другую директорию (адепты AVR Studio дружно негодуют, а я не хочу курить две IDE, когда можно ограничиться одной).
С инструментами разобрались, перейдем к подопытному...
2. Что будем изучать
А изучать мы будем микроконтроллер STM32F030F4P6. Потому что он самый простой для домашней пайки. А еще самый дешевый — эдакий attiny13, только в мире STM32. Стоит чуть-чуть дороже тиньки, зато флеша 16 Кб (как раз в лимиты бесплатного IAR вписались!) и ног в три раза больше. А про богатство периферии (АЦП, UART, IRTIM...) я вообще молчу.
Изначально, у меня лежала душа к раскурке отечественной микросхемы от Миландр (К1986ВЕ92QI), но доллар подскочил, цена «отечественного» мк резко выросла — со 160 до 400 рублей — и как-то расхотелось иметь с ними дело...
3. Крик души, который можно не читать (и не писать)
Знаете, растущее количество материала по 32-битным контроллерам несомненно радует: сайты, статьи, отладочные платы... Но черт побери, нельзя же так зацикливаться на последних! Нет, правда, я всеми руками за облегчение жизни разработчиков, за быстрый старт... Только ведь довольно быстро надоедает управлять диодиками на дискавери-платах, хочется чего-то реального, не оторванного от жизни — и мы опять скатываемся в ардуино!
Ну а как иначе, если почти в каждой вводной статье советуют: «Начинать дружить с контроллерами STM32 надо с...»
- Плат STM32Fx-Discovery
- Программатора Versaloon
- Программатора-отладчика ST-LINK-V2
- STM3220G-EVAL
- Супер-мега-платы-звоните-прямо-сейчас
Я понимаю, что авторы этих статей не хотят терять ту публику, которая паяльник держит второй раз в жизни, но почему так популярен программатор «5 проводков» для AVR и так бессовестно обходится стороной «2 (!) проводка» на STM32? Наверное, потому что на отладочных платах есть встроенные пищалки, дисплеи, диодики... Плюс возможность отладки. Нет, вы серьезно?! Это правда то, что нужно позарез начинающему?
Странно, ведь я всегда считал, что начинающему нужна возможность как можно быстрее пройти этап трехколесного велосипеда. В чем прелесть 5 проводков? В том, что после программирования, плату с микрухой можно сразу затолкать в корпус. И не бояться, если что-то сгорит — новая микруха стоит копейки. Зато вокруг STM32 просто какой-то ореол таинственности для непосвященных. Что, действительно? Для того, чтобы начать изучение stm32 так важна функция отладки? Нет, это правда очень полезная фича, но не в рамках же «помигать диодиком»! Что, не все могут паять такую мелочь? Так можно легко научиться. И даже без фена! Смысл вообще их изучать, если на практике применять не собираетесь? И, наконец, самое главное: разве начинающий настолько беспомощен, что не сможет сам решить, какую обвязку ему выбрать: диодик или дисплей?
В первых статьях настоящего цикла не будут использоваться готовые отладочные платы. Не будут от слова совсем. Полигоны для испытаний мы спаяем вместе, попутно вкурив их работу. А вот как вкурим, пойдут примеры на плате Pinboard (а то что, я зря ее покупал?) — впрочем, это для моего удобства, вы сможете обойтись и без нее.
На этом водная часть закончена, кто дочитал — молодец, а остальные уже читают следующую статью, чего и вам желаю!
Комментарии (26) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
Архитектура камней настолько сложна и глючна, что без отладки запустить столь-либо маломальски значимый проект невозможно вообще.
Тоесть я говорю не о мигании светодиодом, а о ситуации когда прошивка уже более 30-40 КБ флеша и задействовано более 70% переферии кристалла.
Для ситуации когда прошивка меньше, STM32 вообще не нужен. Ибо с мелкими проектами суперски справляются АВР-ки.
Это, уважаемый автор, я говорю как человек который уже много лет делает проекты только на STM32, и только с полной выкладкой по периферии и математике.
Ну а без отладки, можно гарантированно помигать светодиодиком. :)
STM32 - нужен уже тем, кому не хватает 8-ми битных АВР-ок.
А на таких проектах, извольте 100% поддержки флеша компилятором, извольте отладку... и прочие фенечки типа трассировки ... без которых работа с STM32 - уже не работа а откровенный BDSM.
[Автор]
Раскурка основной периферии микроконтроллера не упирается ни в 30, ни в 40, ни даже 3 кБ флеша, если речь не идет об использовании готовых библиотек.
По мере усложнения проектов к новичку самому придет понимание, что требуется отладка и опять-таки, он уже сам будет готов выбрать: ST-LINK-V2 или дискавери-плата, или еще что-то. А для переслать пару байт через SPI/USART, снять данные с АЦП, получить ШИМ и т.д. это явно лишнее.
Безусловно, аврки могут многое, но лично меня очень отталкивало при переходе с АВР, что везде мне тыкали в нос дискавери-платами, хотя мне хотелось для начала просто "помигать диодиком" и ради этого покупать отладочную плату казалось избыточным, даже если бы она стоила не более 100 рублей.
Ну а готовые библиотеки тут не при чем. Речь же не идет о банальной инициализации периферии. Речь идет о обработке данных. Код растет именно на математике, а не на библиотеках. Ну если конечно не писать математику на асме :)
Вообщем я считаю что тыкать "дискаверей" это конечно безусловно неправильно, т.к. платы эти сами по себе ущербны даже излюбленный всеми F4, и не дают понимания, что "там под капотом пламенный мотор".
Тыкать надо готовым проектом, а не отладочной платой :)
Мне кажется сутью отладочных плат от STM является только получение дешевого программатора-отладчика под все семейство сразу.
Кстати в списке отладчиков-программаторов отсутствует самый главный Keil ULINK :) Именно с него надо начинать "дружить" :)
[Автор]
раз
два
Несмотря на кажущююся простоту, весь "пламенный мотор под копотом" задействован по самое "не хочу".
Во втором вообще пришлось заюзать DMA, USB. DAC, ADC с регулярками и инекцией, COMP2, RTC, все таймеры, PLL, почти весь RAM, EEPROM, запись во флеш, температурную компенсацию, приоретизацию NVIC, и возможно еще что-то "по мелочи" что я сейчас вероятно уже не вспомню.
PS. Это какраз именно те случаи, когда АВР-ка просто физически не способна обеспечить нужное быстродействие(с кодом любой красоты и оптимальности) и нужную перефирию.
Когда человеку тыкают мигающим светиком на дискавери или каким-нить новомодным акселерометром впаянным на F4, это не создает понимания что это мощьный и очень гибкий МК. Потому как на ардуине такие давно есть. А если потыкать в нос картинкой с импульсами милисекундной длительности, амплитуду которых надо измерить с высокой точностью на одно преобразование, а она уникальна для каждого импульса. И прифаршеровать это еще в добавок условиями обработки до 49000 таким импульсов в секунду, и их мат. анализ в придачу. То человек начинает понимать, что это действительно мощный МК. До нюансов получения PWM сигнала способного держать стабильные 1.1 кВ напряжения с дрейфом в пару вольт в долгосрочной перспективе с кучей математики и периферии для этого, обычно народ не дочитывает :)
Поправка: конечно речь идет о "МИКРО-секундной" длительности.
[Автор]
раз
два
Ну а схемы, гербера, прошивки и монтажки есть.
И вы очень хитро опустили фразу
[Автор]
1. Не каждый новичок сможет сделать плату под STM32 с их шагом а тем более запаять
2. Полно китайских плат
3. Было бы удивительно если STM не стал везде как пример вставлять свои DVBOard
4. Да в будущем CubeMx и генерируемый им код будет тормозить разите
5. Да в HAL есть косяки и приходится под свои нужды их править.
6. Когда достаточно будет опыта вы сами сможете постепенно отказаться от HAL драйверов
7. Иногда действительно полезно заглядывать в HAL т.к. некоторая периферии сходу просто не запускается а у некоторой есть просто баги как писалось выше
8. Как то удивительно начинающий начинает что то пинать и делать выводы
[Автор]
2. Полно китайских *любое_устройство*
3. Но не в каждую же статью SMT32 в рунете
4. К чему это?
5. К чему это?
6. Скорее, наоборот, когда будет достаточно опыта, тогда и следует переходить на HAL, чтобы в случае косяков последней знать, в какую сторону копать
7. Что подтверждает пункт 6.
8. Как-то удивительны пинки в комментариях: "полно китайских плат" и "не каждый новичок умеет паять".
Но 120% те кто начинают не кинутся вот прям паять сразу.
А те кто уже знаком с котроллерами, как раз таки и возьмут Discovery - потому что им нафиг не нужно заморачиваться с платами.
Поглядите на проект Амперка, они не зря выбрали концепуию мин. проводов максимум модуле.
И да. это не пинки в комментариях.
Если вы рискнули писать статьи то и принимайте все то что вам говорят при чем не с высока своих знаний а с осознания что вы еще чтото не знаете.
Вы явно не эксперт т.к. они не сидят на таких сайтах и вообще им не в прикол тратить время на такие статьи
Успехов
[Автор]
А по теме - STM32F030F4P6 микроконтролер из серии "value line" имеет некоторые ограничения по переферии и ограниченое гарантированое количество циклов "запись-стирание", по моему 1000 раз. Их плюс в цене, я брал в Китае от 10шт по 0,55$ за "камень", что как говорится Atmega отдыхает.
И все-же на мой взгляд, гораздо интересней для учебы МК STM32F042F6P6 :
- корпус TSSOP20;
- Flash-память - 32 кБайт;
- RAM-память - 6 кБайт;
- 48 MHz CPU, USB, CAN and HDMI CEC functions
Вот где разгулятся... Я на таком МК делал себе отладочную платку: переходник TSOP20-DIP и минимальная обвязка. На ней отлаживаю все, а уже потом "подгоняю" код под F030F4.
И еще, Keil по-моему вообще без ограничений для STM32F0xx.
[Автор]
по аналогии - attiny45 интересней, чем attiny13... но изучив последний, можно легко перейти на первый :)
но за наводку спасибо, возможно, когда буду разбирать USB, возьму на вооружение этот камушек.
Хотя может и не понадобится — на we.easyelectronics недавно обсуждалась либа виртуального usb - stm32f030-vusb. Будем посмотреть, по моему опыту с тиньками, программный усб не слишком стабилен: может на одном компе работать нормально, а на другом "неизвестное устройство"... причем, на том же компе меняешь усб-контроллер - и все заводится.
да? не слышал.
ссылка - http://www.compel.ru/2015/03/20/keil-uvision-dlya-stm32f0-i-stm32l0-bez-ogranicheniy
Просто с IAR у меня как-то не срослось, а Keil... ну люблю я его.
А по поводу МК, есть еще интересный экземпляр STM32F030K6T6 вообще в 32-yх выводном корпусе LQFP-32, шаг 0,8мм(типа Аtmega8). К примеру шаг у STM32F030F4P6 - 0,65мм.
Кроме того есть еще L-серия(STM32L0xx) c EEPROM и уменьшеным потреблением для батарейного питания.
[Автор]
p.s. Ух ты, и активация гораздо приятней, чем IAR - просто на официальном сайте лежит ключик - юзай кто хочет!
Я по таком случаю даже статью немного поправлю
[Автор]
[Автор]
[Автор]