В этой статья я бы хотел перечислить и обсудить некоторые атрибуты хороших практик разработки аппаратной части PCB для микроконтроллерных проектов, которые не зависят от конкретного приложения или проекта. Этот перечень сформировался в результате реальных инцидентов.
1. Шелкография
Шелкография практически ничего не стоит. Просто краска. Она нужна не только для навигации по плате, но также для контроля качества пайки. Вот например эти шелкографические черточки между пинами .
2. UART для отладки *
Вывести отдельный UART на какой-н разъём. UART очень нужен для запуска Command Line Interface (CLI). CLI нужна для отладки, управления, тестирования софта и железа, просмотра логов, диагностики и многого другого. Если на плате нет свободного UART, то можно сразу позабыть про тестирование, DevOps, и контроль качества софта и железа.
3. Если остались свободные пины, подключите их к точкам контроля напряжения
Если остаются свободные GPIO пины, то из них стоит делать бинарные датчики напряжения. Через делители напряжения на GPIO. Это могут быть датчик напряжения питания на выходе DC-DC чипов, датчики напряжения на выходах аналоговых ключей. Такой ценнейший FeedBack позволит написать процедуру self-тестирования для проверки монтажа и функционала PCB.
4. Analog Board ID
Уникальное для каждой ревизии напряжение, заведенное на ADC. Уникальный делитель напряжения для каждой ревизии платы. Это позволит прошивке во время инициализации проверить, что её накатили в самом деле на правильную аппаратную платформу и в случае ошибки выдать в CLI сообщения о том, что накатили не тот артефакт. Ведь у микроконтроллерных прошивок нет Device Tree как в linux и прошивка должна как-то понять, что за железо сейчас.
5. Несколько разноцветных LED(ов)*
Heartbeat LED, чтобы глядя на устройство было ясно, что прошивка в самом деле исполняется, а не зависла. Error LED для определения сбоев в устройстве. Status LED для отображения Link(ов). Вообще на каждый интерфейс хорошо ставить LED чтобы было видно, что есть DataFlow. Это особенно удобно при outdoor испытаниях приборов.
6. Больше TestPad(ов)*
TestPad(ы) нужны для bring up(па) плат.
Тыкать в TestPad электрод осциллографа намного удобнее чем тыкать в пин микроконтроллера, рискуя при этом устроить короткое замыкание.
7. GPIO выходящие на Test Pad(ы)
для отладки real-time процессов с помощью осциллографа. Периоды таймеров. Длительность процедур .
8. Пружинный разъём для программатора (Tag-Connect)*
Площадь на PCB часто очень ценный ресурс. Технология Tag-Connect (https://www.tag-connect.com/) позволяют запрограммировать устройство одно касание и отлаживать даже устройства класса "наручные часы".
Также можно выкинуть из BOM расходы на разъём для программатора так как теперь вместо разъема 6-10 точек на плате. Что особенно важно при mass production.
9. SPI-NorFlash (число-хранилище)*
Или SD карту. Для того чтобы из приложения записывать туда части новой прошивки по всем возможным интерфейсам, что только есть на плате. Все рано не удастся затолкать в загрузчик драйверы всех интерфейсов. Если есть Off-Chip flash, то можно сделать простенький загрузчик с одним только SPI драйвером, который сделает memcpy из Off-Chip в On Chip Flash и прошивка будет обновлена. Также Off-Chip flash можно организовать FlashFS для параметров и BlackBox самописца. Можно выпаять и поставить Flash больше или убрать совсем. Но на плате FootPrint для SPI Flash должен быть.
10. Четыре отверстия по краям платы *
Это позволит закрепить плату на вертикальный HIL стенд или установить на нее временный прозрачный экран, который защитит от жидкости.
до тех пор пока не появится корпус для устройства.
11. внешний аппаратный сторожевой таймер (optional)
Для защиты от исполнения чужеродного артефакта. Вероятно, что чужеродный софт не будет в полной мере догадываться о полной схемотехнике платы. Тогда плата с чужеродным софтом будет Reset(ится) и в конце концов свалится в загрузчик.
12. SPI-чип с серийным номером (optional)
Полезно для отслеживания активов как внутри так и вне компании, при тестировании и тех поддержке.
13. кнопка reset (optional)
Для аппаратного сброса и перезагрузки микроконтроллера.
14. Часы реального времени (optional)
Для TimeStamp(ов) в BlackBox самописце.
15. Если клеммники, то винтовые
Винтовые клеммники держат провода надежнее, чем зажимные клеммники. Зажимные клеммники имеют свойство выстреливать провода, которые там установлены.
16. по возможности все компоненты размещать в одном верхнем слое.
Это удешевит производство и монтаж.
17 Если USB -то USB-TypeC*
Если плате нужен USB, то лучше ставить USB-TypeC. USB-C можно ставить 2мя ориентациями. Это очень полезно при outdoor испытаниях оборудования в условиях недостаточной освещенности. Плюс вcедга можно взять кабель от смартфона.
Вывод
Как по мне эти 17 атрибутов являются базисом при проектировании PCB. Своего рода строительные леса для PCB. Некоторые пункты могут показаться очевидными, однако из 35 плат за свою работу FirmWare разработки видел только 2 с которыми реально было приятно работать, где были реализованы базовые атрибуты (помечены *). Были платы без отладочного UART, без LEDов, без TestPad, платы без памяти, без монтажных отверстий. Были платы с разъемами для программирования с шагом 1мм и много прочей дичи. Вероятно этот текст поможет кому-н при создании новых качественные устройств.
Если вам есть что добавить к изложенному списку, то предлагаю обсудить этот в комментариях.
Комментарии (62)
juramehanik
16.03.2022 08:09+23Как говорил один попугай, ставший системным архитектором: "зависит от контекста и задачи" , часть этих правил в некоторых случаях вредны или сложны для реализации.
1 Шелкография это давний холивар, но есть ситуации когда шелкография не нужна и даже вредна, но это отдельные случае, вроде там где вибрации , высокая температура и есть высокие напряжения она запрещена ибо может отслоиться и попасть куда не надо. + Некоторые оптические инспекторы на относительно современном оборудовании в рф требуют, чтобы компонента меньше 0603 были без шелка, какие то проблемы с этим.
3 Не должно быть свободных GPIO пинов на корпусе MCU.
так и нет ответа на вопрос Почему "не должно", статика ? эмс? некорректно сформулированное утверждение? Делаем устройства для промышленности, постоянно проходим по 4 уровню жесткости по стандартам EN 61000 , зависимости от оставленных неподключенными пинами МК (и оставленными ) hi-z не выявлено.
8 Пружинистый разъём для программатора (Tag-Connect) пластиковые защелки таг-коннекта ломаются очень легко на серийном производстве, разъем стоит конских денег
При серийности до 200шт в мес отверстий по pin headers (наши pls ) вполне достаточно для прошивки. Если надо сложнее, или процесс удержания контактов на плате долгий для человека - делайте полноценную тестовую оснастку с пружинными контактами и матрицей для зажима, даже на алиэкспрессе продаются удобные и недорогие заготовки для этого
15 Если клеммники, то винтовые
20 летний опыт работы коллег (конструкторов и наладчиков) в области промышленного оборудования, где в одном терминале может быть сотни подключений проводов, говорит о том, что пружинные клеммы надежнее винтовых при транспортировке и эксплуатации. А выстреливает потому, что монтаж не соответствует документации (неверный диаметр провода, нет гильзы там где должна быть). У винтовых клемм есть регламент периодического затягивания этих клемм, у пружинных его нет.Doberman341
16.03.2022 08:49+43 Не должно быть свободных GPIO пинов на корпусе MCU.так и нет ответа на вопрос Почему "не должно", статика ? эмс? некорректно сформулированное утверждение?
Думаю, имелось ввиду примерно следующее: если остались свободные пины, подключите их к точкам контроля напряжения питания, ибо selftest - это хорошо.
В каких-то случаях оправдано, в каких-то нет. Например, во многих платах есть разделение на секции с напаяными экранами для ЭМС. Тащить в нежные аналоговые цепи ножку от МК - значит пустить туда помехи.
aabzel Автор
16.03.2022 11:55Пользовался Tag-Connect(ом) полтора года подряд каждый день по 5 раз. Еще ничего не отламывалось. Tag-Connect - нормальный современный разъём.
WebConn
16.03.2022 12:265 раз в день - это не так уж много по меркам производств. После сотни раз за день рука может дрогнуть сильнее
mikkrob
16.03.2022 13:42+1Каждый день по 5 раз - это около 1000 раз за год (рабочие дни).
Мы активно пользуемся Tag-connect в серийном (>10 000 шт в год на изделие) производстве. На производстве сломаны все защёлки. Благо прошивка заливается быстро, и оператор просто рукой держит.
Хотя, в целом, очень удобная штука, конечно
mctMaks
16.03.2022 15:03основные проблемы, встреченные за время работы с этим коннектором:
забились кончики контактов (там что-то типа коронки для процарапывания оксидной пленки), чистить то ещё удовольствие;
места на плате мало, поэтому отверстия под пластиковые защелки не предусмотрены. фиксируем предлагаемой ими защелкой в виде текстолита с тремя латунными трубками. отсюда требование к обратной стороне: никаких компонентов, максимум только дорожки;
на одном разъеме "залипла" пружинка, по счастью не используемая;
ну и ценник конский конечно же на него. особенно порадовала защелка за 10$ при цене кабеле 35$.
а так да, достаточно удобная вещь оказалась.
avf1906
18.03.2022 06:593 - это вы с малопортебляющими вещами, когда каждый мкА на счету, не работали, там любой пин в hi-z является потребителем. А так да, непонятное требование. По остальным пунктам полностью поддерживаю.
GennPen
16.03.2022 08:30+3На этой PCB в среднем 10 TestPad(ов) на 1 квадратный см
Увидел только 7 тестпоинтов на всей картинке.
zatim
16.03.2022 08:45+22Article хорошая, но уж very много english слов and аббревиатур, понятных only разработчикам. Read неудобно и для junior малополезно.
serafims
16.03.2022 09:00+1Про расположение интерфейсов - совать их во все стороны - тоже плохая затея, считаю, они должны распределяться по двум торцам платы. Это не относится к разъемам для подключения периферии устройства, а только к гнездам USB, питания, HDMI и тп.
Отверстия крепежные - в идеале не прижатые к самому краю, а с отступом, чтобы можно было уголком прикрепить в корпус/стенд. Но это уже смотря, какое целевое устройство.Клеммы винтовые разные бывают. Есть хорошие, есть дешевые голубые говняные. Вообще лучше разъемные винтовые.
Про разъемы программирования - еще есть краевые разъемы, как PCI. Тоже "ничего не стоят" со стороны платы.GennPen
16.03.2022 09:08Отверстия крепежные - в идеале не прижатые к самому краю, а с отступом, чтобы можно было уголком прикрепить в корпус/стенд. Но это уже смотря, какое целевое устройство.
Крепежные отверстия, как и все остальное при проектировании печатной платы - это маленькая наука.
WicRus
16.03.2022 09:08+4Контекста нет. Про что говорит автор не понятно. Вначале показалось, что это перевод, но пометки нет. Потом стоит тэг «Разработка для интернета вещей», что подразумевает миниатюрность, которая противоречит пунктам 1, 2, 3, 6, 7 и подтверждается пунктом 8. Идея данной заметки осталась непонятной. Все пункты можно оспорить в той или иной ситуации. Возможно, было бы проще воспринимать, если бы автор не утверждал истину, а делился своим опытом. Желательно с примерами, где, как и почему используется «атрибут», и что он в итоге даёт.
Как по мне эти 16 атрибутов являются современным набором при проектировании железа. Своего рода строительные леса для PCB.
Вывод хорошо раскрывает, всю суть статьи, теперь все точно поймут, что хотел донести автор.
kovserg
16.03.2022 09:20+70. Маркировка с названием и ревизией платы.
Karlson_rwa
16.03.2022 12:26+4Причем в меди, а не в шелке.
order227
16.03.2022 12:39+1Можно и в шелке, а вот что в меди стоит сделать обязательно, так это послойную маркировку, чтобы можно было проверить не перепутал ли производитель слои на многослойке.
solarplexus
18.03.2022 11:26Это как? Ставить циферку на каждом слое? Если да, то одну под другой или со сдвигом? Это необходимо для каких-то критичных проектов?
Для домашнего проекта с небольшими частотами (до 100-200 МГц) неважен же порядок слоев, скажем в 4 слойной плате?
order227
18.03.2022 11:37Все так, просто цифры в меди в каждом слое со сдвигом каким-то, если все хорошо, то просто будет 123456, например. Если что-то перепутают, то порядок соответственно изменится.
Для 4-х слоев тоже может быть актуально в ряде случаев, если, например, часть линий у вас идёт с контролем импеданса (usb, ethernet и много чего ещё). На 100...200 МГц это не особо актуально, но если есть задача сделать «хорошо» и минимизировать эми, то будет полезно.
Вообще статья она вроде как обобщенная про платы в целом, а не только про простенькие нам МК, так что надо упоминать такое.solarplexus
18.03.2022 12:29Не понятно. Почему порядок цифр поменяется, в случае, когда напутали? Изменится глубина цифры, но не координаты по x и y.
order227
18.03.2022 12:51Плата делится как бы на 2 части: верхние и нижние слои условно. 1-2-3 верхние и они на топ смотрят, 4-5-6 нижние и смотрят на нижний слой, то есть вскрытие идет на нижнем слое. Если слои перепутаны, то и цифры соответственно меняются. Это первый маркер.
Второй маркер вы озвучили — это глубина, то есть по мере отдаление слоя от верхнего его «яркость» изменится.
vau
17.03.2022 09:36Еще хорошо себя показали надписи в виде вырезов в маске. Не нарушатся целостность полигонов.
nixtonixto
16.03.2022 15:20+2Дату производства партии и поле для кода завода не забываем. Одни и те же платы у нас одновременно собирают 2...3 завода (российский, китайский, экспериментальный и т.д.), эти платы потом разлетаются по объектам, проскочивший ОТК заводской брак присылают по рекламации — и как потом понять, кто и когда накосячил?
bat654321
16.03.2022 09:21+7Статья ни о чём.
Было бы куда полезнее рассказать о трассировке земель, минимизации помех, соединение shield разъёмов и корпуса прибора с землёй платы, нюансы гальванической изоляции
GennPen
16.03.2022 09:25+4Это не на одну большую статью потянет.
На Ютубе есть Robert Feranec, он хорошо рассказывает на подобные темы.
DerSpiwak
16.03.2022 09:55+2о там столько нюансов, что придется давать или очень общие рекомендации, которые и так известны, или рассматривать какую-то конкретную PCB и описывать почему она сделана именно так, а не иначе. Нельзя сказать, что существует определенный набор правил с точно заданным "весом" важности пунктов, делая плату по которому всегда будет хороший результат.
naviastro
16.03.2022 10:06+2Обычно, это вопрос рисков, денег и времени. Хорошее планирование и расчёты дадут более предсказуемый результат, но могут скушать больше времени и денег... но могут сэкономить время и деньги на исправлении косяков более рискованного подхода. Опыт + знания сильно влияют на снижение рисков и времени, но обычно стоят больше денег. Управление рисками - наше всё.
p.s. Robert Feranec - отличный канал
DerSpiwak
16.03.2022 09:37+8Получился гайд как сделать какую-то отладочную плату для какого-то процессора. Очень странный перечень пунктов
SBortsov
16.03.2022 09:37-4Шелкография содержит белый пигмент. Это либо оксид алюминия, либо диоксид титана. Наносить его между контактами это прям верх ума. Потом получаем плавающие эффекты при разных условиях.
Doberman341
16.03.2022 10:19+7Эмм. А какие могут быть эффекты? И то, и то - отличные диэлектрики. Если есть опасность поверхностного пробоя, то там меры надо гораздо серьезнее предпринимать.
R9A_019
16.03.2022 09:38+5странная какая то статья, хорошая pcb начинается c электромагнитной совместимости, все остальные атрибуты, элементы, размеры и корпуса подстраиваются под нее. А про нюансы электромагнитной совместимости, вообще ничего нет в статье, более того там материала наберется на 10-20 длиннопостов.
order227
16.03.2022 12:273, 9 и 12 — это все вместе называется FRU, реализуется копеечной eeprom на каждой железке через i2c, без всяких извращений типа делителя на АЦП.
8 — есть разъемы, которые занимают меньше места и при этом гораздо удобнее и надежнее цепляются. TagConnect дорогая и не удобная хрень для большинства задач. Удобно разве что первый раз залить загрузчик в камень.
16 — актуально только если разработчик не в курсе про анализ PDN и PI как таковое, на проектах уровня «stm32 и обвязка» (и прочей мелочи) часто простительно.Karlson_rwa
16.03.2022 12:30занимают меньше места и при этом гораздо удобнее и надежнее цепляются
Примеры в студию, пожалуйста!
Мне реально интересно, потому что использую tag-connect в серийных изделиях (тысячи штук в год) и всё ок. Без пластиковых ушей, правда, они неудобны.order227
16.03.2022 12:50+1Molex, part number: 0530480410
TagConnect прикольная штука в определенных задач, но вот подключать условный swd+uart через него так себе для отладки на столе.aabzel Автор
16.03.2022 13:03Отличный дизайн. Устройство похоже на коммутатор питания со счетчиком мощности. Так?
order227
16.03.2022 13:08Похоже :) Это по сути ватт-метр/электросчетчик на 60В 60А с возможностью писать логи на SD карту + вывод усредненных данных в терминал + проброска этих же данных по сети. Железка не серийная, это просто поделка для наших тестировщиков, чтобы им проще жилось и могли статистику удаленно собирать по потреблению серверов.
Dark_Purple
16.03.2022 17:38Так оно и не для отладки, а для серийного производства.
order227
16.03.2022 20:24Для серийного производства так то есть предварительна загрузка бутлоадера или прошивки на масс-программаторе и последующая запайка уже предпрошитых компонентов. Тыкаться прижимным коннектором на конвейере это такая себе идея, как минимум дорого и наличие лишней ручной операции.
JerleShannara
17.03.2022 00:51Flying probes отменили? Вполне себе конвейерная штука, применяемая как минимум для электротестирования голой печатной платы. Более того, именно при крупносерийном и массовом производстве и требовании к тестированию вылезает ещё такая операция как тестовый стенд, где уже вполне себе стоит оснастка под конкретную плату под контроль напряжений/сигналов и прочего, включая опцию заливки тестовой прошивки.
order227
17.03.2022 14:42Вы путаете разъем для отладки/заливки софта и тест поинты с пого-пинами, это разные конструктивные решения для разных задач. Заливать прошивку, особенно если она большая, это долго и удерживать на стенде лишние 3-5 минуты плату это не рационально, бутылочное горлышко на ровном месте. Есть понятная практика с предварительной прошивкой нужных чипов, которую использует вся Азия и дает максимальную скорость работы конвейера.
Dark_Purple
17.03.2022 19:46Есть же промежутичные выриантвы между тысячными и миллионными сериями, где и прижимным потыкаться не грех.
order227
18.03.2022 10:571000 штук это уже объем где предварительная прошивка чипов в лентах стоит очень дёшево, точно дешевле, чем китаец/русский, который тыкается tag-ом. До 1000 штук в год… Тут все равно, но это точно не масс прод, можно и обычный idc-10 или мелкий молекс тыкать.
Dark_Purple
18.03.2022 16:54Поделитесь информацией кто и за какие деньги готов мне прошить 1000 stm'ок и запихать из обратно в ленту или разложить в палету?
order227
18.03.2022 17:38Варианта мне знакомо два: заказать предпрошитые чипы у самих ST на партиях 25000+ штук или если меньше, то обычно масс программатор на заводе где сборка выполняется и последующая упаковка в ленту или палет, зависит от корпуса уже. По ценам сильно зависит уже от завода и как сторгуетесь, например, один из ODM шил NOR флешку 128 Мб и H743 по 0,12$ за оба чипа. На больших сериях стоимость размазывается и в пересчете на штуку снижается на порядок. По поводу кто — лучше в личку.
Karlson_rwa
16.03.2022 12:30+2Ох.
(Идет за попкорном)
Знаете, зачем на самом деле на первой картинке шелкография нанесена именно таким образом?aabzel Автор
16.03.2022 13:05Для контроля пайки. Если припой останется на белой полоске, то это значит, что тут короткое замыкание.
Karlson_rwa
16.03.2022 13:12+2(Открывает пакет, начинает хрумкать)
Тогда такой наводящий вопрос: вот на плате стоит как минимум 12-контактный разъем синенький. Как вы полагаете, зачем этому разъему на крайних выводах такие странные формы контактных площадок в виде капелек? (UPD. немного ошибся, у разъема-то скорее всего 4 контакта, а группа на 12 контактов ниже разъема это, вероятно, трансформатор или типа того. Но суть вопроса это не меняет)
(Коллеги, кто в курсе, не спойлерите, пожалуйста, я хочу узнать ответ автора этих чудесных рекомендаций)aabzel Автор
16.03.2022 16:19Я раньше не обращал внимание на эти каплеобразные пины. Плюс схемы той платы у меня не было как и самой платы сейчас нет. Помню, что это 100BaseTx разъём. У меня несколько версий:
1 для жесткости крепления разъема.
2 для электромагнитной совместимости. что-то связанное с высокими частотами
3 может для автоматической конвейерной сборки так удобнее
Karlson_rwa
16.03.2022 16:21(Продолжает жевать)
Всё мимо.
Еще варианты будут?
И, кстати, нет ли полной фотки платы?aabzel Автор
16.03.2022 16:23Karlson_rwa
16.03.2022 16:30+2Понятно, спасибо.
Из полного вида снизу понятно, что шелк сделан под селективку, поскольку если бы полностью паяли волной, то вся вскрытая медь была бы в припое.
Shnurokspb
16.03.2022 16:58У меня заканчивается попкорн, не томите, жутко интересно! =)
Karlson_rwa
16.03.2022 17:09KstnRF
17.03.2022 07:47-1Эммм., это ответ?
Karlson_rwa
17.03.2022 13:46+2Ну да, не похоже?
Хорошо, прокомментирую чуть более развернуто.
Каплевидные крайние площадки — это т.н. solder thieves. Нужны для пайки волной. Характерный явный признак. В данном случае разработчик дополнительно подстраховался в узких местах, добавив шелк туда, где потенциально может залипнуть при пайке волной. После того, как автор показал полную картинку, стало понятно, что плата паялась не волной (отсутствует традиционная «стрелка», показывающая направление движения платы по конвейеру), а использовалась селективная пайка, поскольку вскрытые от маски участки меди не имеют следов припоя на них.
Что такое пайка волной и селективная пайка можете посмотреть (пока ещё) на ютубе, например :)KstnRF
17.03.2022 14:26Не совсем понимаю отношения данного ответа к первому Вашему же вопросу, начавшему эту ветку "почему шелкография нанесена именно таким образом?" А остальные контактные площадки? Обведённые полностью/частично/без шёлка.
Если ответ "контроль замыканий между выводами", то автор сразу ответил.
Я лично не знаю, потому и спрашиваю. К шелкографии адгезия гораздо хуже, чем к маске?
Karlson_rwa
17.03.2022 17:14А остальные контактные площадки? Обведённые полностью/частично/без шёлка.
Видя плату, даже изначальную её часть, можно заметить, что шелк нанесен только в самых узких местах и то не везде. Почему? Потому что автор платы таким образом пытался сделать дополнительный барьер для жидкого припоя (шелк ведь тоже имеет толщину, причем не нулевую). Там, где с его точки зрения расстояния были достаточными, чтобы замыкания при пайке волной или селективкой не возникали, шелка вообще нет.автор сразу ответил.
Изначальная цель шелка здесь — не контроль качества пайки, а предотвращение возникновения залипаний между выводами при выбранной технологии пайки. Контроль тут вторичен, на мой взгляд.
Насчет адгезии сходу данных не нашел, надо копаться, а в текущих условиях немного не до этого.KstnRF
17.03.2022 19:17Вот я сразу тоже усомнился про контроль. Потому что по мне визуально лучший контраст припоя на цветном фоне, чем на белой шелкографии.
ToSHiC
17.03.2022 03:07Чтобы поверхностным натяжением отцентровало компонент? Разъёму бы это как раз не помогло - у него вон там какие жирные синие ножки в текстолите, припой его вряд ли смог бы утянуть.
PR200SD
17.03.2022 11:20Пины вроде относятся к трансформатору, а не разъему, разъем скорее всего smd.
SergeyMax
Если уже дело дошло до запуска чужеродного софта, то добавить туда сброс внешнего ватчдога, или просто сдуть его с платы... ну я не знаю.