Подсаживаю народ на STM, тут выяснили что всякие платы Discovery для простого радиолюбителя слишком космическая технология — камни дорогие, фаршу лишнего много. Вот покажи нам как сделать, что нибудь на рядовых микроконтроллерах, чтобы дешево и сердито.

Все таки, если вы впервые увидели STM и не знаете с чего начать, настоятельно рекомендую взять готовую отладочную плату и начать изучение с портов ввода-вывода GPIO, таймеров и т.д. Мы же в этой статье будем терзаться муками железной части.

Что смущает народ в стм? Возможно это:
1. Корпус, скажу честно, я тоже думал что смд паять сложно, но до тех пор пока 1 раз не припаял, теперь меня хрен заставишь сверлить DIP, это намного трудозатратнее.
2. Работа с регистрами? Но ведь в мегах те же регистры. Прочитайте 1 раз даташит все станет понятно. Не хочется? Понимаю, поэтому могу порекомендовать, стандартную библиотеку SPL. Да в ее сторону много плевков, но согласитесь, на первое время она перекроет 300% потребностей начинающего. Кстати, очень хорошо регистры понимаются когда работаешь с отладчиком, поэтому рекомендую Keil.
3. Смущают структуры инициализации SPL? Это вопрос изучения языка, если мне что то не понятно — сразу лезу читать, на этот случай у меня есть Visual Studio, где в консольных приложениях можно опробовать практически все. Прочитайте 1 раз, что такое структура, это же банально несколько переменных, объединенных общим именем. Лень читать про язык Си? Тогда тупо копируйте код, но все равно рано или поздно придется разбираться, так почему бы не сделать это сразу?

На мой взгляд все это страшно и непонятно до тех пор пока один раз не сделал, дальше идет как по маслу. Хотя нет, одна проблема пока еще висит, это тактирование, но об этом в другой раз.

Озвучим задачу. Вы наигрались с отладочной платой, уже немного умеете писать код и решили запилить что нибудь свое. Первый вопрос — какой выбрать камень? Вначале стоит озадачиться и почитать какую то общую информацию про разные серии микроконтроллеров, чем они отличаются, что можно сделать и чего нельзя. Допустим лень.

Тогда такой вариант. Допустим, одни пишут что stm32f4 это круто, другие пишут что круто, но цена нас не устраивает или не купить — отметаем. Ищем дальше, нашли stm32f1 круто, другой пишет что круто — смотрим цену, более менее порядок — решено, пускай будет серия 103.

Следующий шаг, выбор конкретного микроконтроллера, который соответствует ожиданиям, снова гуглим и читаем всякие хабры. Очень полезен параметрический поиск в интернет магазинах. Зачастую выбор определяется наличием микроконтроллеров в вашем регионе. Но, бывает так, что нет понимания, что хорошо и что плохо. В таком случае помогает метод проб и ошибок. Например, нашел статью с какой то девайсиной, которая похожа на то чего хочется, почитал комментарии, если нет вопросов — используешь такой же микроконтроллер.

Сразу нужно позаботиться о том, чем будем прошивать микроконтроллер, т.е. нужен программатор — самое элементарное писать в гугле — » программатор для STM32 » . Во всех отладочных платах, что мне доводилось держать в руках, был программатор St-link. Можете купить его отдельно, можете купить еще какой то программатор, никто вам этого не запрещает.

Остается понять из чего состоит минимальная схема. Под выбранный камень нужно почитать про тактирование и питание. В целом система не отличается от AVR — резонатор и два конденсатора
f103_ext

Питание обычно 3.3В, но мало ли что бывает. Самое правильное это прочитать все это в даташите, но можно подсмотреть как это реализовано в чужих схемах, гугл картинки вам в помощь. В итоге еще перед покупкой всех деталей, вы должны понимать, от чего вы будете питать схему, от чего тактировать и чем прошивать. Все это есть в даташите.

Допустим, я выбрал STM32F103C8T6, почему выбрал, а потому что где то услышал про него (метод проб и ошибок). Кроме того, у него 64кБ флеша, корпус LQFP-48, 20 КБайт рамы, 3 юарта, 2 spi, приемлимая цена. По характеристикам это весьма неплохо, как узнал? В этом помог опыт полученный от AVR, если бы я юзал этот камень первый раз то кроме цены и корпуса в 48 ножек остальное мне бы ни о чем не говорило. Опять же, тогда метод проб и ошибок.
lqfp48

Питать я буду от лабораторного источника питания в 3.3В, для тактирования возьму кварц на 16МГц и 2 конденсатора на 22пФ. В качестве программатора задействую плату STM32F4Discovery, которую приобрел ранее. Идем в магазин, покупаем все что нужно.

Когда все есть, переходим к процессу проектирования. Я решил просто распаять камень и ножки вывести на штырьки. Просто макетка.
1. Так как я рисую в Altium, то нужно попытаться найти посадочное место микросхемы и ее символ. Большая удача, если это есть в гугле, если нет тогда придется брать даташит в зубы и рисовать все с нуля. Хоть это и кажется сложным, но на самом деле это не так. В моем случае есть схема, которая содержит посадочное место и символ. Я тупо копирую их к себе в библиотеку, ибо может пригодится еще.
2. Обязательно открываем даташит и проверяем то, что скопировали, чтобы не получить лажу потом, в этом примере я посмотрел только 1 пин и 25, но лучше проверить каждый пин.
3. Создаем проект, цепляем библиотеки, смотрим уже конкретно, куда цеплять кварц, куда цеплять разъем программатора.

Весь процесс можно лицезреть на видео.

Когда все элементы забиты в библиотеку, идет долгий этап подготовки схемы и разводка платы, такие моменты как протянуть проводок от одного элемента к другому думаю интуитивно понятен, поэтому в ускоренном режиме. Ключевые моменты, как перейти от схематика к pcb и заливка полигоном показаны в нормальной скорости.

Довольно не очевидный момент — подготовка к печати. Идея стырена у BSVi. Из схемы достается файл сверловки и гербер. Создается отдельный композитный слой, который переводим в негатив и зеркально переворачиваем, в общем делай как на видео и будет тебе щастье. Особо дотошным — читайте доки на альтиум.

Этап изготовления платы методом фоторезиста, для тех кто не знаком показан примерный план действий. Для тех кто делает в первый раз — ютуб кишит подобными видео, изучайте.

Далее идет процесс лужения и пайки, увы видео не удалось. Плата не идеальна — 2 дорожки перегрел, одну удалось восстановить другую нет, но в целом на работоспособности это не сказалось.
test_plate

Теперь можно переходить к программированию. Снимаем перемычки с F4 и юзаем ее как погроматор.
plata

Проверяю в кейле, камень определяется.
swd

Весь процесс изготовления платы вместе с изучением даташита, отрисовкой и разводкой схемы занял 5 часов. Дальнейшие действия не отличаются от работы с отладочными платами, о чем писалось в прошлых статьях — пиши, заливай, проверяй 🙂

ЗЫ: Выяснилось, что ножку Boot0 надо заземлять, чтобы шить именно флеш память

48 комментариев: Как создать устройство на STM32 с нуля.

  • лучше взять готовый, купите stlink на али он вообще гроши стоит. можете купить отладочную плату discovery или nucleo, они все идут с программатором. будет и плата и программатор 2 в 1.

  • Вы пишете «Выяснилось, что ножку Boot0 надо заземлять, чтобы шить именно флеш память». Глупый вопрос конечно можно прочитать в датешите, но я с английским «не очень». Прошу ответить просто. Если на Boot0 подать «1», то «шить» что будем EEPROM?

  • там на самом деле комбинация выбирается, т.е. boot0+boot1 смотрится одновременно. если boot0 — 1, boot1 — 0, то будет грузиться UART загрузчик, через который можно прошивать основную программу.

  • Спасибо понял! Если можно еще один жизненно важный вопрос. Если не хотите можете не отвечать.
    Вы случайно не знаете как отключить JTAG и отставить swd в stm32f407 что бы можно было использовать например ножку PB3 и PB4?

  • если пользуетесь кубом, то там в настройке sys можно выбрать что будет включено

  • чем лучше stm avr

  • все хорошо для своей задачи

  • Самая замечательная статья. Которая вдохновила меня на создания своих устройств. Огромное спасибо!!!!

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

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

Свежие записи
Последние комментарии
  • Загрузка...
Счетчик
Яндекс.Метрика