Как и зачем я делал очередную отладочную плату

27 августа 2018

Прошло больше года с тех пор, как я познакомился с микроконтроллерами STM32. За это время были перепробованы разные отладочные платы, из которых наиболее удобными для меня оказались платы серии Nucleo. Но даже они не лишены некоторых неприятных дефектов. Как известно, удобство в мелочах. Поэтому в какой-то момент было решено сделать отладочную плату, которая была бы удобна лично мне.

Говоря о дефектах отладочных плат Nucleo, я имею в виду следующие:

  • Плата использует разъем MiniUSB, который в наше время практически полностью был вытеснен MicroUSB. Приходится держать под рукой два вида кабелей, и постоянно перепроверять, тот ли кабель ты взял на этот раз.
  • Пины на плате не подписаны. Приходится постоянно сверяться с файлом на компьютере, к тому ли пину ты подключаешь провод, и терпеливо отсчитывать нужное количество пинов сверху или снизу.
  • Пины расположены как попало. Было бы удобно, к примеру, иметь все пины PA0, PA1, и так далее слева, а PB0, PB1, и так далее справа.
  • На плате не предусмотрен батарейный отсек для подачи питания на VBAT. Если в проекте используется RTC, приходится подключать батарейку как-то сбоку, а это лишние провода.
  • Кнопки и светодиоды на плате расположены таким образом, что при втыкании в плату Arduino-шилда они становятся недоступны.
  • Ну и другие мелочи: декоративные надрезы на плате, которые не предают ей прочности, расположение отверстий для болтов таким образом, что одним из них нельзя воспользоваться из-за расположенных рядом гнезд для Arduino-шилда, совершенно не нужные мелкие перемычки и пины на обратной стороне платы, и так далее.

Свою отладочную плату я назвал LimeSTM32. Имя ничего не означает, кроме тех фактов, что оно не было никем занято, а сама плата зелененькая. И да, я честно слизал имя у LimeSDR, чего уж греха таить. После нескольких экспериментов плата обрела следующий вид:

Отладочная плата LimeSTM32

Плата была спроектирована в KiCad. В сущности, она представляет собой просто микроконтроллер и минимум обвязки, подобно тому, как ранее было описано в посте Используем STM32 безо всяких отладочных плат.

Полный список использованных компонентов и где их можно купить:

Плюс к этому для прошивки LimeSTM32 понадобится программатор STLink v2, если вдруг у вас его еще нет. Понятно, что на большинство компонентов (батарейный отсек, кварцевые резонаторы, кнопки и светодиоды) можно смело забить и все еще получить рабочую плату. Если вдруг под рукой нет требуемых компонентов размера 0805, на их место можно вполне успешно вкорячить аналогичные компоненты размеров 0603 или 1206.

Микроконтроллер STM32F405 были выбран из тех соображений, что он похож на использованный мной до этого большую часть времени STM32F411, но также имеет FSMC (Flexible Static Memory Controller), с которым мне может захотеться поиграться в будущем. Кроме того, его «старший брат» STM32F415 используется в плате HydraBus, под которую пишут разные интересные прошивки. Эти прошивки должно быть не сложно портировать на LimeSTM32.

Я не стал разводить на плате USB-UART, потому что в одном проекте он может быть нужен на одних пинах, в другом проекте — на других пинах, а в третьем USB-UART вообще не нужен. По тем же соображениям было решено не добавлять на плату слот для подключения SD-карт и какие-либо еще компоненты. В конце концов, всегда есть вариант подключить внешний модуль ровно туда, куда нужно, или воспользоваться подходящим шилдом. В частности, на eBay можно найти небольшой USB-UART модуль на базе CP2102 (используйте запрос «cp2102 micro usb module 6pin»), который по размеру идеально помешается на плате между кнопками и разъемом IDC-10. На одной из своих плат я просто приклеил такой модуль суперклеем и припаял тонкими проводами к пинам PA9 и PA10, получив вариант с UART’ом.

Изготовление 10 плат на JLCPCB обошлось мне в 2$ плюс 7.15$ за доставку. Цена компонентов при покупке в Чип-и-Дипе (не самый дешевый, зато быстрый вариант) у меня получилась 12$, из которых большая часть приходится на МК. В итоге полная стоимость LimeSTM32 оказалась сопоставима со стоимостью платы Nucleo-F411RE (20$), только у меня еще осталось девять запасных плат.

Не берусь утверждать, что плата получилась идеальной во всех отношениях. Но я лично нахожу ее намного удобнее плат Nucleo, и потому считаю изначально поставленную цель достигнутой. На момент написания этих строк я достаточно доволен платой, чтобы ближайшее время не вносить в нее больших изменений. Исходники платы, файлы Gerber, а также примеры проектов вы найдете в этом репозитории на GitHub.

А доводилось ли вам проектировать свои собственные отладочные платы, и если да, то что из этого вышло?

Метки: , .

Понравился пост? Узнайте, как можно поддержать развитие этого блога.

Также подпишитесь на RSS, Facebook, ВКонтакте, Twitter или Telegram.