Подсаживаю народ на 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 с нуля.

  • Мда…. вы гений)) … что бы мы делали без вашего сайта)))

  • пошли бы на другой сайт 🙂

  • Фотошаблон на чем печатаешь? Струйник или лазерный? Фоттризист какой?

  • калька обычная, лазерник, фоторезист негативный Ordyl alpha

  • И на кальке у вас получается такой мелкий шаг (STM32) засветить? Кальку пропитываете чем то? чем засвечиваете ? На сколка лампа? Какое расстояние засветки? Сколка времени засветки?. Проста счас печатаю фотошаблон на плёнке для лазерника но бывает проблема не всегда пропичатывает

  • Извеняюсь, не увидел видео после просмотра видео отпало куча вопросов 😛

  • Не как не могу найти кальку в пачках тока в рулонах. в рулонах пойдёт?

  • Спасибо за статьи по stm, все интересно, еще бы только описывали программирование в бесплатном coocox, вообще бы супер)

  • для этого микроконтроллера есть китайская макетка (на али) со всем необходимым минималом, стоит порядка 7 уе 😳

  • Разницы в чем писать быть не должно, ибо либы одинаковые. Кстати все статьи, кроме одной под кокос.

  • еще во много предстоит разобраться

  • Админ а все же какую лампу используете

  • когда я искал лампу то обошел все магазины, или нигде не было, или было слишком дорого, поэтому взял оуфк-01, это кварцевая лампа для прогреваний :mrgreen:

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

  • такие лампы у меня есть попробую спасибо за ответ

  • Admin, а как делаете на кальке двух сторонние платы? Как совмещаете слои?

  • Пока не делал, это есть в ближайших планах, но нет подходящей платы, обычно на 1 стороне умещаюсь.

  • Забыли поставить конденсаторы 4 штуки по питанию, как можно ближе к ножкам по 20пф. Лабораторный БП нафик не нужен если программировать по SWD от Discovery, на ней уже есть 3,3 вольта. Так же надо бы добавить кнопочку для BOOT. Вдруг захочется прошить через бутлоудер. Кнопочку RESET забыли. Я еще люблю ставить светодиод по питанию, дабы видеть наличие последнего. Если писать проги в Кокосе, то кварц лучше ставить на 8МГц, так как там по умолчанию тактирование настроено на него.

  • Да кой какие косяки всплыли, о них потом добавлю

  • Рекомендую попробовать STM32CubeMX + IAR. Кокос забудется через неделю. 😉

  • Пробовал, причем несколько раз, как раз недавно угорали — инициализация в 20кБ для одного только юарта это мягко говоря полный «абзац». Посмотреть распиновку и назначение выводов он конечно очень полезен. В общем то, пока не вижу смысла переходить на hal. И да, в своих проектах я юзаю keil 🙂

  • Вся засада в том что ST полностью перешли под IAR и поддерживают только его. Даже все последние примеры чисто под него. А насчет 20кб это перебор. У меня код с библой FATfs на голом SDIO занимает 50кб. Видать еще чего-то там прописали))) Чудес не бывает.

  • Чет перемудрили. Я только что создал кубом проект UART1 STDIO + настройка тактирования. Все заняло 3,69кб. Скорее всего в настройке проекта не поставили выводной файл bin. По умолчанию IAR создает выходной файл motorola. А он оооочень большой.

  • Я пока погряз в дебрях математики :mrgreen: , как закончу, всерьез возьмусь за stm, тогда наковыряю пару статей про hal и куб. Короткий опыт общения с кубом, не вызвал большого позитива, хотя возможно Вы правы и за ним будущее 🙂

  • Математика это хорошо, много проблем решает. Особенно с аналоговыми датчиками, так что удачи. 🙂

  • А зачем лудить печатные проводники на плате? Разве это не неряшливо?

  • без защиты проводники будут окисляться

  • что значит окисляться!? А фоторезист зачем!? Банка китайского стоит 5 евро. Хватит на пол-жизни, покрыл плату, положил маску и под ультрафиолет. Плата зелененькая, как с конвеера! А лужение это…. это тупизм.

  • есть аргументы и за и против, но по большому счету… вообще пофигу, нравится вам делать маску — кто же против, делайте. на текущий момент, того результата что дает эта технология, мне не достаточно, поэтому я полностью потерял к ней интерес.

  • Можно ли выложить скиншот печатной платы, или схему. Чтобы было видно, покрупнее. Лучше схему. Я как новичок сомневаюсь во всем. Спасибо.

  • можно было бы, старый винт сдох вместе со всеми старыми проектами

  • А просто в комментарии написать что с чем соединять? Уж простите мою назойливость.

  • Имеется ввиду программатор с МК.

  • находите ноги на мк и на программаторе swclk, swdio, gnd и соединяете одноименные ноги.

  • Спасибо понял!!!!!

  • И забыл вас поблагодарить, вы всегда откликаетесь на все просьбы, и отвечаете на все вопросы, даже на самые неадекватные. 😛

  • Добрый день админ. Когда то тоже так смотрел непонятно на атмегу. Ничего не понятно, что писать, что та4ое таймер, что такое регистр и т.д. Но разобрался и делал рабочие проэкти. Но есть одно огромное но в атмеге, при прошивке возможно что могут самовольно записаться неправильно лоскбити и как последствия мк перестает отвечать. Меня это просто возмутило до ужаса, 6 камней так лежит. Начал читать об арм и приятно удивлен что фюзов нет и запороть нельзя. Вся настройка идет програмно. Я не нашел у вас информации о прошивке stm через rs232 , это самая приятная новость которую я прочитал. Плюс Вы не сказали почему перешли с соосох на другую ide.

  • Прошивка через UART довольно специфическая штука, поэтому и не описано. В кейле отладчик нормальный и проект как никак развивается, кроме того до 32к кода он бесплатный.

  • А разве IAR не развивется? Я не могу судить с практики что лутше а что нет потому что я только неделю назад посмотрел на арм. Судя по даташиту комбинация над 2 выводами с арм вводит его в режим достопа во флеш. Даже программа прошивки флеш от stm а есть. Мне не позволительно отладочная плата . Я буду делать плату устройства с прошивкой через usart.

  • Купил в Китае плату с STM32F103 — и что мне делать с ней дальше то ? С атмелами и микрочипами вообще не было проблем ! Для атмелов программатор Громова, для микрочипов extra-pic , все самодельные … А для этой херни что нужно ? Собирать программатор на таком же ? Или покупать готовый ?

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

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

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