Конструктор для взрослых или проектируем плату STM32F030F4P6

Что человеку для счастья нужно? Если не углубляться в философию, то человеку требуется созидание, что-то делать своими руками и особенно хорошо, если это делается для других. Если это происходит в свободное от основной работы время, то называется хобби. Последнее время пристрастился к конструированию разных электронных поделок. Это же как конструктор, только для взрослых. При этом есть настолько много разных деталек и деталюшечек, что можно всю оставшуюся жизнь собирать электронные девайсы. Можно начать с простых мигалок, а можно сделать нечто посложнее.

Недавно из игрушки сделал простого, но вполне самостоятельного робота, а сейчас решил пойти дальше. Отойти от проводков в навеску, да и от Ардуино в том числе, и присмотреться к контроллерам STM32.  Говорят, что это лучше. А чем лучше?  Ну сами посудите, если Ардуино – 8 разрядный контроллер, а STM32 – 32-х разрядный, банально быстрее. Большое количество программных таймеров и прерываний  компенсируют сложности в программировании.
Да еще если вспомнить, что Ардуино – раскрученный бренд, на котором очень неплохо делают деньги, продавая копеечные детали втридорога, то интересно попробовать собрать самому более или менее сложное устройство не вкладывая в это дело слишком уж много, но это как пойдет.

Но в любом варианте – это хобби, которое должно приносить радость от преодоления трудностей, чем более трудностей, тем интереснее их преодолевать. Ведь не зря альпинисты карабкаются на высокие и самые недоступные скалы, просто пройтись по ближайшей сопке не интересно.
А какие трудности, если нужно просто вставить один разъемчик в другой? Вот спаять нечто новое, да еще и непростое, много интереснее.
И так, если совсем с нуля изучать, то лучше взять оценочную плату. Их много, с разными контроллерами, которых тоже вариантов предостаточно. Интересно посмотреть самый дешевый и попробовать его на зуб, в смысле приложить к нему паяльник или что там получится получится. Я поигрался с несколькими оценочными платами  и понял, что они довольно разные. Нужно подбирать под задачу.  Но чтобы разобраться в контроллере, а затем использовать его в разработках нужна оценочная плата. А сделать оценочную плату своими руками – двойное удовольствие.

Миниатюрный корпус STM32F030F4P6, такие паяются либо феном, либо тонким очень тонким паяльником

Миниатюрный корпус STM32F030F4P6, такие паяются либо феном, либо тонким, очень тонким паяльником

Но для начала возьмем самый простой STM32. Самый простой (и самый дешевый) контроллер STM32F030F4P6 в корпусе TSSOP20 – 20 контактов в Чипе-Дипе 75 рублей (о, дайте два!), хотя у китайцев можно найти и дешевле. До скачка доллара вообще 20 рублей стоил. Корпус только под пайку, причем достаточно мелкую SMD. Поэтому есть в чем потренироваться. Кроме оценки возможностей контроллера здесь можно пробовать во-первых проектирование платы Eagle (он бесплатен). Опять же проба лазерно-утюжной технологии (ЛУТ) изготовления платы, да и пайка SMD и TSSOP20 после обычных деталей чувствуешь себя Левшой, которому нужно подковать блоху.

Начинаем с проекта. Я уже столкнулся с тем, что контроллеры STM32 все разные. У одного есть одни возможности у другого-другие. Поэтому для конкретного устройства нужен конкретный контроллер. К примеру, в  STM32F030F4P6 есть часы реального времени, но в корпусе TSSOP20 нет выводов под часовой кварц 32768 , хотя можно подключить кварц на 8 Мгц. Как будут работать часы от этого кварца? Нужно пробовать. И будут ли вообще работать эти китайские кварцы…

Это будет небольшая плата типа Maple Mini , которая кстати, 450 рублей – сравнима или даже дешевле многих Ардуинок. И  к тому же довольно компактна, но у меня будет совсем простая, ни пользовательских кнопок, ни светодиодов, для первого раза мне и этого вполне достаточно. Хотя один светодиод все-таки будет. Непосредственно на питание. Питание от USB разъема, поскольку контроллер питается 3.3V, то нужно ставить стабилизатор, закуплен MC33269DT-3.3G, долго крутил его на плате – размер великоват для маленькой игрушки, да и нет необходимости в 800 мА питания как заявлено,  поэтому решил воспользоваться  LP2985AIM5-3.3. Миниатюрный, но и держит всего 150мА, хотя для контроллера и тестов должно хватить.

Схема  платы  для STM32F030F4P6

схема платки для STM32F030F4P6, простейшая, стабилизатор, питание от USB и кварц (нажать для увеличения)

У этого контроллера нет поддержки USB, поэтому заливать прошивку его придется через программатор, для которого предусмотреть отдельные выводы сверху. И следовательно. к USB можно подключить только питание.

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

Плата Eagle для STM32

Помня, что контроллеры очень чувствительны к помехам, постарался землю самого контроллера вести прямо от USB, а остальное уже по широкой земле на обратной стороне платы. Земля очень широкая, обходит плату с двух сторон, только посередине пришлось воткнуть конденсаторы питания. Сверху они не помещались. Вот схема и плата. Плата сделана под ЛУТ, постарался везде, где только можно поставить широкие дорожки, но на контроллер все равно 0.3 мм, посмотрим, как будет переводится утюгом.  Файл для Eagle можно скачать тут

Уже после распайки выяснилось, что один проводок забыл развести. Это соединение 3-1 вывод на стабилизаторе. Поскольку стабилизатор с выключателем, то либо нужно было ставить выключатель, либо коротить на питание.  Ножки разъема Jtag нужно было бы сделать подряд, а получилось так, что простым шлейфом на четыре ноги не подключить, нужно переставлять проводки. Благо у меня есть шлейф, где проводки отдельные и их можно коммутировать как угодно.

Кварц завелся нормально, только поставил резистор между ним и контроллером 1Ком. Согласно рекомендациям Oscillator design guide  для STM32 нужен не всегда, но позволяет устранить возможный паразитный запуск на гармониках.

Номинал рассчитывается по формуле из того же гайда:

R = 1/(2*3.14*F*C)

где F – частота кварца в герцах С- емкость нагрузочного конденсатора, подставляем F – 8Мгц (восемь миллионов герц) С-18Пф и получаем 1.1 КОм. Я поставил 1 КОм.

Продолжение как эта плата паялась, и какие ошибки в дизайне затруднили пайку, можно почитать здесь>>

 

Плата STM32F030F4P6

Вот что получилось из платы для STM32F030F4P6 непосредственно для печати

 

 

 

Оставить комментарий

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

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>