Что должно быть на каждой PCB с STM32

в 18:48, , рубрики: dac, GND, LED, mco, stm32, swd, tagconnect, test pad, uart, цап

Что должно быть на каждой PCB с STM32

Что должно быть на каждой PCB с STM32 - 1

С моей точки зрения большинство разрабатываемых электронных плат работают под управлением микроконтроллера STM32. Если обобщить их схемотехнику, то можно кое-что вынести за скобки. Вот об этом сейчас и поговорим. Что должно быть заложено в каждую электронную плату на основе МК STM32? Само собой надо добавить квадратные первые пины на вилках, шелкографию, тест пады, симметричные отверстия 3мм по краям для крепления платы, удобный USB для питания и т.п. Но есть кое-что еще. Некоторые особенности проектирования PCB применимы только для STM32. Но обо всём по порядку.

1) Вывести пины тактирования MCO1(PA8) и MCO2(PC9) на TestPADы. Это даст Вам возможность проверить осциллографом реальную установившуюся частоту ядра, кварцев или PLL. Это ничего на стоит. Всего-то вывести два пина на два test pad-a. Благодаря MCO пинам у вас не будет проблем с отладкой тактирования.

Function

GPIO

MCO1

PA8

MCO2

PC9

2) Добавить кнопку на пин nRST. Это нужно для пересброса прошивки в режиме пошаговой отладки. Особенность дешевых ST-link программаторов в том, что он частенько подвисает. Это приводит к тому, что GDB отладчик зависает тоже и отваливается при программном сбросе из-под IDE. Новая сессия отладки включается минуты, а зачастую тоже обрывается. Знакома ситуация? Аппаратный reset без пересброса питания нужен как раз для пошаговой отладки кода прошивки.

3) Добавить для программирования по SWD разъем Tag-Connect. Площадь на PCB зачастую очень ценный ресурс. Технология Tag-Connect позволяют запрограммировать устройство просто прикосновением к PCB и отлаживать даже миниатюрные PCB размера фитнес браслетов. Благодаря Tag-Connect также можно исключить из BOM платы расходы на пластмассовый разъём для программатора, так как теперь вместо разъема просто 6...10 металлических точек на плате и три отверстия рядом. Плата станет дешевле. Это также упростит логистику закупки компонентов. Что особенно важно при массовом производстве. К Tag-Connect можно будет подцепиться также и китайскими прищепками с PogoPins (PCB Clip Clamp Fixture Probe Pogo Pin) коих разновидностей на aliexpress сотни и стоят они не дороже 200 руб. Разъем Tag-Connect делает Texas Instrumenst, Nordic Semiconductor и прочие вендоры в своих отладочных платах. Это уже стандарт индустрии.

Что должно быть на каждой PCB с STM32 - 2

4) Вывести отдельный свободный аппаратный UART на какой-нибудь PLD разъём. Желательно вилку. UART очень нужен для printf-отладки. Еще на UART можно запустить Shell. Shell нужна для отладки, управления, тестирования софта и железа, просмотра логов, диагностики и многого другого. Если на плате нет свободного UART, то можно сразу позабыть про тестирование, DevOps, загрузчик, и контроль качества софта и железа. Если на плате нет выведенного UART, то изделие обречено.

5) GND для оссциллографа. GND всегда нужно для подключения мультиметра, для подключения ослика, для подключения логического анализатора. На плате не просто должны быть удобные пины для GND. Пинов с GND должно быть несколько (3+).

6) Светодиоды. Желательно чтобы их было как минимум три. LEDы это способ послать сигнал от прошивки к человеку. По мигающему HartBeat LED можно, например, судить, что программа не зависла. По красному LEDу можно сигнализировать об ошибках и авариях внутри программы. Status LED может мигать при принятых пакетах в RS485 и т.п.

Номер LED

Назначение LED

LED1

HartBeat

LED2

Error

LED3

Status

7) Для LEDов надо стараться назначить такой пин на котором есть аппаратный PWM. Например в STM32 на PA4 просто нет каналов PWM. Почему это важно? Сейчас объясню. Бывает так, что из-за проблем с логистикой на PCB ставят не те LEDs или не те токо ограничивающие резисторы. В результате свечение LEDов оказывается запредельно ярким. Ослепительно ярким. Условно при обыкновенном GPIO=1 LED освещает пол комнаты. Самый простой выход - управлять LEDом через аппаратным PWMом. Если на GPIO пине нет PWM, а мы хотим на LED регулировать яркость, аппаратным ШИМ, то PWM придется дергать при помощи GPIO из прерываний по таймеру, что замедлит исполнение основной прошивки и приложения. Прерывания всегда замедляют прошивку. В идеале PWM должен работать без прерываний. Сам по себе. Отсюда и получается, что LEDы должны быть на каналах аппаратного PWM. Другие МК ( TI, NRF ) позволяют назначать периферию на любой пин, но у STM32 это не так. Отсюда и такое пожелание.

8) Добавить фаски по углам PCB. Это чтобы не поцарапаться об углы PCB. Чтобы не порвать пакет при перевозке платы в рюкзаке и т п. Скругленные края даже выглядят приличнее нежели острые углы.

9) Еще надо выводить на TestPADы DAC (ЦАП) пины. В STM32 это обычно PA4 и PA5. DAC очень полезен при отладке RealTime процессов. По сути содержимое переменной можно осциллографом смотреть в реальном времени. Очень удобно, если прошивка делает какой-то ЦОС. Можно буквально выходы квадратурного смесителя (I; Q) разглядывать на ослике в режиме фигур Лиссажу (режим XY).

10) Добавить на свободный ADC уникальное константное напряжение для каждой новой версии платы. Значение напряжения можно задать резистивным делителем напряжения. Условно 0.25V или 2.7V, 1.5V, 2V, 2.5V и т. д. Это нужно не только для модульного теста ADC, но и чтобы прошивка, прочитав напряжение c ADC могла понять на какой плате её собственно запускают. В случае ошибочной загрузки не той прошивки не на ту плату выдать красным LEDом сигнал об аварии. Так сделано например на St-link программаторах версии V2. Если жалко ADC, то можно и четыремя-пятью GPIO бинарно задавать версию платы. Просто одни пины подтянуть резистором 40kOm к GND, а другие к VCC. Обычно свободные пины всегда остаются.

11) Если есть место, то можно еще джамперами задавать прошивке какой-то код. Условно NVRAM на джемперах. Так можно задать прошивке режим работы просто извне переставив положение джамперов.

12) Если есть выбор ставить корпус BGA или LQFP, то лучше отдавать предпочтение корпусу LQFP. Так как в случае с QFP корпусом проще паяльником замкнуть соседние пины для каких-либо аппаратных ремонтов.

Вот пожалуй и всё что я могу отметить про STM32.

Итоги

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

Если есть, что добавить про особенность разработки PCB на STM32, то можете поделиться своим опытом в комментариях

Источники

tag-connect

Исправление аппаратных ошибок на серийных изделиях

Как разработать плату, пригодную для массового производства? Подход Design for Manufacturing

Автор: danil_12345

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js