В России бытует мнение, что программистам микроконтроллеров не нужна никакая схемотехника. Особенно в таких организациях, которые изначально долго занимались Web(ом), а потом вдруг решили прикинуться электрониками.
Попробуем разобраться в справедливости этого наивного утверждения и понять, что вообще нужно для старта разработки firmware.
Иной раз складывается мнение, что в РФ вообще никогда электроникой не занимались. Никаких традиций в российской электронике не сформировалось. Никакой преемственности нет. Никаких best practices не выделилось, как это повсеместно в большом IT. Что вся громадная 90-летняя история мировой электроники просто прошла как-то мимо РФ. Видимо эпоха, когда в стране кибернетика считалась лженаукой сделала свое нехорошее дело.
Там не менее попробуем разобраться как всё таки надо работать с электронными платами. Что для этого нужно из доков.
0--Фотография печатной платы с двух сторон (PCB Pix)
Казалось бы простая вещь. Однако в России часто бывает, что в новостях анонсируют о создании микропроцессора или устройства и при этом нигде нет никакой документации и даже фото на хвалёное изделие отсутствуют. Поэтому фото это прежде всего доказательство, что плата для которой пишется софт в самом деле существует в физическом мире.
Поэтому фото это доказательство, что плату вообще собрали (или собрали частично), или купили. Эту фотографию можно также посылать в компанейском мессенджере в качестве приложения для тех кто ещё не в курсе соответствия между названием платы и её внешним видом. По качественному фото платы в высоком разрешении можно понять очень многое. Например какая pdf(ка) со схемотехникой конкретно нужна для этой платы, если есть несколько похожих вариантов на жестком диске. В общем просто двусторонее фото платы это уже такая себе хорошая документация.
Как говорил один знаковый:
дайте мне фото платы и я напишу для неё загрузчик
1--Цветная блок-схема печатной платы (Block Diagram)
Блок-схема нужна чтобы ввести в курс дела новых людей. Прежде всего программистов. Блок-схема также позволит вам быстро вернуться к давно законсервированной разработке. На блок схеме следует отразить основные моменты, которые нужны например для написания прошивки. Это номера UART, SPI, I2C, количество RAM, FLASH, максимальная частота, битовые скорости интерфейсов, количество регистров в умных чипах, I2c адреса и прочее.
Проблема в том что большинство схемотехников в РФ не составляет блок схемы банально потому, что не знают как это делать. Их этому не учили в институте. А если они и пытаются накропать блок-схему, то получается так, что лучше бы они этого не делали. Они добавляют градиенты, затенения, размытости, насыпают много стразиков. Смотришь на их блок-схемы и думаешь это рисовала женщина. Потом оказывается это рисовал парень, но его схема выглядит как и женщины.
Про то как составлять блок-схемы PCB есть добротная методичка тут https://habr.com/ru/post/667030/
Если проводить аналогию, то блок-схема это как загрузчик u-boot. Цель Блок-схемы быстро загрузить в мозг разработчика большую и сложную систему.
*2--Схемотехника в *.pdf (Circuit diagram/Schematics diagram)
Это самое главное. Это основной документ на любое электронное устройство. Уже глядя на схемотехнику становится очевидно, что это и на что способно. Бывает достаточно просмотреть схемотехнику и уже понятно какой для нее нужно писать Firmware. Причем схемотехника должна быть именно в *.pdf так как при анализе схемотехники нужно многократно пользоваться поиском (Ctrl+F). Если нет схемотехники, то говорить про какую бы то ни было разработку firmware не приходится.
*3--Папка с datasheet(ами) на каждую микросхему в PCB
Часто найти datasheet это весьма нетривиальное занятие. Особенно если на маркировке корпуса это явно не написано. Дело еще в том, что некоторые чипы продаются под NDA (например PM6766, FDA801) и просто (за)Google(лив) вы не нейдете ничего кроме флаера. Поэтому схемотехники обязаны предоставить программистам все datasheet(ты) с errata на этапе сдачи конструкторской документации.
4-- Перечень элементов в виде электронное таблицы. (Bill Of Materials)
Перечень очень полезный документ. Особенно в формате электронной таблицы. На основе полноценного BOM можно, например, делать всяческую аналитику. Например, можно вычислить оценку минимально возможной площади необходимой для печатной платы. Посчитать минимальную стоимость изделия. Вычистить теоретическое энергопотребление. Найти самое слабое звено при климатических испытаниях и прочее. Оценить потенциально санкционно нестойкие микросхемы.
При этом важно делать BOM в виде (рас)share(ной) электронной таблицы в облаке. Так её смогут просматривать и редактировать множество разработчиков. Старые советские BOM(ы) в виде таблицы в *.pdf давно потеряли свою актуальность и смысл.
Вот пример образцового BOM. https://docs.google.com/spreadsheets/d/1OjjYhNh0zToOJ0MFgpm2HVs3wwSPBhPpXjJwW4TlKwg/edit#gid=1423611896
5--Таблица проводов (Wire Table)
При написании кода firmware для PCB приходится первым делом конфигурировать GPIO пины. В современных платах это 200...400 пинов. Для этого приходится выписывать где-то отдельно конкретные пины и определять по схемотехнике их свойства. Вход/выход. Какая именно нужна подтяжка. Какая нужна периферия, какой устанавливать ток, какую устанавливать частоту тактирования и прочее. В случае когда есть таблица проводов в Google SpreadSheet, то это можно эффективно понять и сделать благодаря стабильной сортировке по категориям и раскраске нужных проводов для акцентирования внимания на конкретной сути.
Также таблица проводов нужна для верификации самой схемотехники. Тут идея проста. Если по существующей якобы схемотехнике невозможно понять, где начинается, а где заканчивается каждый провод, то эту горе-схемотехнику нельзя использовать и следует отправить на доработку обратно создателю.
Вот пример образцовой WireTable
https://docs.google.com/spreadsheets/d/1OORWLG3IgiS_SvEASOm0HJW1asHwws-V46CHfTqbaBE/edit#gid=0
*6--Топология печатной платы (PCB Layout)
Как только надо будет измерить сигнал на реальной плате так сразу понадобится топология. Это просто необходимо, чтобы понять куда подключать электроды осциллографа. Если вы будете тыкаться в плату не зная топологии, то 5% вероятность, что при первом же касании электродом осциллографа дорожки на PCB вы плату сожжете.
7--Монтажная схема (Assembly Diagram)
На плате может быть 40...100+ микросхем. Большинство из них будут выглядеть абсолютно одинаково. Чтобы найти на плате, где находится одна конкретная микросхема (например U13), то вам обязательно необходима монтажная схема. Это по сути упрощенная топология верхнего и нижнего слоя, на которой показаны только номера микросхем, их габариты и их взаимное расположение относительно друг друга. К счастью в промежуточных слоях микросхемы еще не впаивают. Поэтому у этой схемы всего 1 или максимум 2 листа.
У монтажной схемы обычно 2 листа
*8--Чертёж механики (PCB Mechanical)
Это нужно для того чтобы понять как расположены отверстия для крепления платы на вертикальном HIL стенде для авто тестов. В принципе эту схему можно составить опосля, если присутствует сам экземпляр изделия (печатная плата) и штангенциркуль.
9--Описание платы на языке dot (optional) (Block Diagram Auto Trace)
Бывает что схемотехника настолько запутана и сложна, что глядя на неё просто нереально сразу понять, что там, как, да зачем. Посмотрите например схемотехнику платы NRF5340-ADK. Там схемотехника построена из супер кластеров на 20 листах, аж *.pdf подвисает при поиске. Зато если чисто формально написать граф на языке dot и отрендерить граф утилитой graphviz в разных цветах, то картина заметно проясняется. Подробнее про это тут https://habr.com/ru/post/682346/
Иерархия схем получается такая
В общем перечень необходимой схемотехники получился такой
№ |
Название документа |
Расширение |
обязательность |
приоритет |
производная |
0 |
Фото платы с 2х сторон |
*.jpg |
main |
высокий |
уникальная |
1 |
Блок-схема PCB |
*.svg |
derivative |
высокий |
2 |
10 |
DataSheet(ы) на каждый компонент |
main |
высокий |
уникальная |
|
2 |
Схемотехника |
main |
высокий |
уникальная |
|
3 |
Топология всех слоёв PCB |
*.pdf или Altium Designer |
main |
высокий |
уникальная |
4 |
монтажная схема |
derivative |
средний |
3 |
|
5 |
таблица проводов |
Google spread Sheet |
derivative |
средний |
2 |
6 |
PCB Mechanical |
*.svg или autocad |
derivative |
средний |
3 |
7 |
Bill Off Material |
Google spread Sheet |
derivative |
средний |
2 |
8 |
Описание графа схемотехники |
*.gv |
derivative |
низкий |
2 |
9 |
чертеж корпуса |
AutoCAD |
main |
высокий |
уникальная |
Если же у вас в распоряжении есть только PCB, то максимум, что вы сможете - это сделать фото с двух сторон, потом восстановить габаритный чертеж при наличии штангенциркуля. Если есть микроскоп, то может быть, если повезёт вы сможете примерно составить BOM и найти в интернете datasheet(ы). Но даже это при плате в 40+ чипов может занять многие недели реверс-инжиниринга.
Вывод
Как видите для разработки электроники и системного софта надо целая куча всяческих разных схем и таблиц (10 штук!). Что-то является первоисточником(электрическая схема и топология), а что-то производным. Но абсолютным минимумом является электрическая принципиальная схема (Э3) и топология разводки. Всё остальное можно так или иначе синтезировать на основе схемотехники и топологии. Однако без электрической принципиальной схемы и топологии говорить о разработке и отладке системного софта говорить не приходится.
Невозможно серьёзно относиться к разработке когда документация отсутствует или сделана тяп-ляп. Тем более невозможно испытывать симпатию к продукту про который ты ничего не знаешь.
Делайте качественные комплекты схем. Это точно пригодится.
Если есть, что добавить, то пишите в комментариях
Акроним |
Расшифровка |
PCB |
Printed circuit board |
BOM |
Bill of materials |
CAD |
Computer-aided design |
КД |
Конструкторская документация |
Links
Комментарии (32)
Karlson_rwa
00.00.0000 00:00+6Если вы будете тыкаться в плату не зная топологии, то 95% вероятность, что при первом же касании электродом осциллографа дорожки на PCB вы плату сожжете.
Поясните, пожалуйста, сеё смелое утверждение.aabzel Автор
00.00.0000 00:00-1Самый простой случай.
Техник нечаянно установил GND крокодил от осциллографа на дорожку 5V, подал питание на плату и всё. Или задел землей ионистр.Karlson_rwa
00.00.0000 00:00+2подал питание на плату и всё
А, простите, плата при таком конфиге у вас от чего питается?aabzel Автор
00.00.0000 00:00-1Например от переходника 220 V AC -> 5V DC
https://www.chipdip.ru/product0/8010236420?yclid=691210591795729542&utm_source=direct&utm_medium=cpc&position_type=premium|k50id|010000002661154_2661154|cid|52323837|gid|4967508818|aid|12411171013|src|search_none&utm_campaign=Y_dinamicheskaya_tehnika&utm_content=text1_ya&utm_term=Karlson_rwa
00.00.0000 00:00+1Хорошо, спрошу по-другому. Это ваш личный опыт? Ну, что устройство после такого фокуса скажет всё. И выпустит белый дым.
aabzel Автор
00.00.0000 00:00+1В одной питерской конторе был чинуша схемотехников которого постоянно жаба душила программистам схемотехнику давать. В итоге в его отделе платы горели у всех регулярно.
Karlson_rwa
00.00.0000 00:00Извините, это не ответ на мой вопрос. Повторюсь: Это ваш личный опыт?
Техник нечаянно установил GND крокодил от осциллографа на дорожку 5V, подал питание на плату и всё. Например от переходника 220 V AC -> 5V DC
Ну, что устройство после такого фокуса скажет всё. И выпустит белый дым.aabzel Автор
00.00.0000 00:00-2У нас в таких случаях платы сгорали так, что даже работающее ранее прошивки не стартовали.
Никто особо не разбирался что именно произошло. Просто тепловизор показывал, что уже при нормальном повторном включении микроконтроллер вдруг стал перегревался до 60 градусов+ и Heartbeat LED не мигает
Приходилось перекидывать проц в 170+ пинов.Mike-M
00.00.0000 00:00+71) По приведенной вами ссылке указан блок питания, который весит 1 кг. Значит, он трансформаторный, т. е. с гальванической развязкой от сети. В этом случае никакого сгорания платы не будет.
2) «У нас в таких случаях платы сгорали так, что даже работающее ранее прошивки не стартовали» — да что вы говорите? Если на плату попало 230 В, то ни одна прошивка не сможет стартовать, это же очевидно.
3) «Никто особо не разбирался что именно произошло» — и несмотря на это, вы делаете вывод, что 95% плат сгорают…
4) «Просто тепловизор показывал, что уже при нормальном повторном включении микроконтроллер вдруг стал перегревался» — снова нет никакой взаимосвязи с подачей 230 В на плату от неизолированного БП.
5) «Приходилось перекидывать проц в 170+ пинов» — угу, а остальные элементы на плате после попадания сетевого напряжения остались целы и невредимы )
Не отвечайте. Лучше исправьте свое заблуждение. Я, как и двое других комментаторов, считаю это утверждение слишком категоричным:
Если вы будете тыкаться в плату не зная топологии, то 95% вероятность, что при первом же касании электродом осциллографа дорожки на PCB вы плату сожжете.
Скорее наоборот, вероятность спалить плату не превышает 5%, потому что большинство изделий всё же имеет гальваническую развязку от сети.
И да, электроды — у эхокардиографа или электросварки. У осциллографа — щупы )YDR
00.00.0000 00:00+1я недавно отлаживал некоторый силовой проект. Оказалось, что безопаснее всего убедиться, что земли более-менее соединены в розетке, и крокодил заземления щупа никуда не подключать. Щуп был 1:1000, и можно было безопасно "тыкать" почти в любые точки устройства :-) на проблемы, связанные с настолько длинным общим проводом не наткнулся.
Еще один прикол был, когда транзистор, в нормальном режиме холодный, стал сильно нагреваться и отпаял свой затвор :-) после устранения причины всё заработало, но транзистор я всё же заменил.
select26
00.00.0000 00:00+1И что при этом произойдет?
Вы смеха ради осциллограф в руки то возьмите, прежде чем такое писать.
Я ещё удивился - у вас в тексте у осциллографа электроды появились вместо щупов.
Я вот могу земляной щуп на питание установить, а активный - на землю. И просто увижу что с питанием происходит. В обратной полярности. Без вреда для платы и прибора.
Frutt
00.00.0000 00:00Я думаю тут имелась в виду другая история. Щупы осциллографа можно и на дорожки в 230 В посадить, а вход осциллографа как правило рассчитан на 30 В.
P.S. Да, это мрачная идея, когда на плате 230 В, к сожалению бывают и такие схемотехники =/
Gromin
00.00.0000 00:00+6Вам бы или заголовок сменить или текст статью поправить.
В заголовке:Какая документация нужна для полноценной работы с электронной платой?
Вторым же абзацем:
Попробуем разобраться в справедливости этого наивного утверждения и понять, что вообще нужно для старта разработки firmware.
Для "старта разработки firmware" ничего кроме схематики не нужно. Платы на этот момент может вообще не быть и это нормально.
Далее.
Фотография печатной платы с двух сторон (PCB Pix)
Вообще не нужно. Прям совсем. Тем более как "доказательство".
Цветная блок-схема печатной платы (Block Diagram)
Цветная? На примере - образцовая? Нет, она не образцовая. Разные шрифты, информация разбросана по схеме как попало, блоки не выделены, да даже описываемые вами в тексте "порты подключения" не обозначены. Как будто бы на "отвали" нарисована.
Перечень элементов в виде электронное таблицы. (Bill Of Materials)
Для разработки FW он не нужен. Как максимум "полезен" да и то - все есть на схеме.
Вот пример образцовой WireTablehttps://docs.google.com/spreadsheets/d/1OORWLG3IgiS_SvEASOm0HJW1asHwws-V46CHfTqbaBE/edit#gid=0
Доступ только по запросу. Чего не расшарите?
Если вы будете тыкаться в плату не зная топологии, то 95% вероятность, что при первом же касании электродом осциллографа дорожки на PCB вы плату сожжете.
Если неизвестная плата у кого-то горит с вероятность 95% то, ИМХО, тут в руках проблема. Может мультиметр тот же взять для начала?
Какой-то немного хейтерский коммент получился.. Короче для начала разработки FW (да и вообще разработки FW) нужна по сути только схема платы. Монтажная схема и топология пригодятся при отладке реальной платы. Ну и даташиты иметь в одной кучке тоже хорошо (с errata). Остальное может быть полезно, но совсем не безапелляционно нужно.
aabzel Автор
00.00.0000 00:00нужна по сути только схема платы
Ну дадут тебе схемотехнику 17 листов, где на каждом листе 12 летающих фрагментов. Ты начнешь её смотреть, изучать. На 3ий день выяснишь, что схемотехники 2 листа забыли включать в *.pdf(ку). День на пятый поймешь, что это за устройство вообще. И только на 7ой день начнешь писать firmware.
А тут тебе предлагают схемотехнику + блок-схему(1 лист). Ты посмотришь по диагонали на-блок схему. Через минуту поймешь, что это за устройство, через 10мин начнешь писать firmware изредка поглядывая на схемотехнику.Если проводить аналогию, то блок-схема это как загрузчик u-boot. Блок схема загружает в мозг разработчика большую и сложную систему.
Меня удивляет, что вообще приходится объяснять такие простые вещи.
aabzel Автор
00.00.0000 00:00Смысл схемы - это показать что-то на одном листе.
Делают же схемы агрегатов для авто механиков.
Аналогично. PCB для программиста МК это как автомобиль для автослесаря. Надо четко представлять что и как там подключено.
Современные PCB уже настолько сложны, что для них блок-схема тоже очень даже кстати.
punzik
00.00.0000 00:00+5Иной раз складывается мнение, что в РФ вообще никогда электроникой не занимались.
Очень смелое предположение.
ilya_pu
00.00.0000 00:00+3некоторые чипы продаются под NDA (например PM6766, FDA801) и просто (за)Google(лив) вы не нейдете ничего кроме флаера
Я где-то не там гуглю? https://www.google.com/search?channel=fs&q=PM6766 и уже третья строчка выдачи ведёт на сайт https://datasheetspdf.com/datasheet/PM6766.html, где в свободном доступе лежит тот самый даташит на 54 страницы... https://www.google.com/search?channel=fs&q=FDA801 - и первой же строкой идёт датабриф на 11 страниц, но с блок-диаграммой и описанием пинов... Возможно, в том датабрифе недостаточно полно раскрыты какие-то ТТХ, но тогда так и нужно говорить - информация неполная, урезанная, а не "вы не найдёте ничего"...
С главной мыслью статьи - о том, что необходимо приучать себя кропотливо собирать воедино все крупицы добытой информации - полностью согласен, но по другим причинам: во-первых, когда у вас есть все "исходники", с проектом будет намного легче разбираться, чем если ничего нет и нужно искать информацию заново; во-вторых, в последние годы (три-пять лет, может чуть больше) пошла тенденция удалять материалы с сайтов (особенно старые) или прекращать поддерживать сайты. С одной стороны, пожизненную гарантию никто не давал, но с другой стороны, когда открываешь книгу прошлого года издания, в которой предлагается скачать софт, а он недоступен ни в каком виде (ни через поиск, ни через VPN, его просто нет), понимаешь, что кто-то тебя чего-то лишил, вернее - недодал.
aabzel Автор
00.00.0000 00:00Я где-то не там гуглю? https://www.google.com/search?channel=fs&q=PM6766 и уже третья строчка выдачи ведёт на сайт https://datasheetspdf.com/datasheet/PM6766.html, где в свободном доступе лежит тот самый даташит на 54 страницы... https://www.google.com/search?channel=fs&q=FDA801 - и первой же строкой идёт датабриф на 11 страниц, но с блок-диаграммой и описанием пинов...
54 стр это тоже Flyer.
Вот вы попробуйте найти битовую детализацию регистра STATUS_BYTE и всех остальных регистров. Это просто необходимо, чтобы написать драйвер.без битовой детализации плата с чипом PM6766 - металлолом
Даташиты для чипов подобного класса это сотни страниц. Вас не смущает, что вы нашли только 54?
aabzel Автор
00.00.0000 00:00Этой информации мало. Та спека, что вы указали (54 страницы ) это тоже флаер.
Это тоже самое, что если бы вы спросили прохожего в неизвестном городе как добраться до ж/д вокзала, а вам ответили "двигайтесь на север".
hw_store
00.00.0000 00:00+1Недавно попадался даташит на ethernet-контроллер от intel (QFN-64, 9*9мм) - 824 страницы.... ))
А насчёт того, что на некоторые чипы нету даташитов в открытом доступе, автор к сожалению прав.aabzel Автор
00.00.0000 00:00-1на некоторые чипы нету даташитов в открытом доступе, автор к сожалению прав.
это проявления "технологического диктата" со стороны так называемой "демократической части" мира.
N1X
Вроде и слова русские, но просто набор...
Принциписальная схема это... Она же "Схема электрическая принципиальная", если совсем дотошно. Схемотехника - несколько другое понятие.
А вообще пользоваться нужно тем, что есть. Блок-схема для понимания общей архитектуры. Для всего остального в идеале файлы проекта, будь то altium, pads, да хоть pcad. Можно и папку бумажную, вопрос времени разработки.
aabzel Автор
Программистам микроконтроллеров обычно altium на Linux не устанавливают.
N1X
Да, возможно я подтянул сюда свой "идеал". Что еще раз подтверждает то, что у всех фломастеры на вкус разные. У меня просто есть возможность открыть проект. Возможно правильнее предложить интерактивный PDF из этих CADов, я хотел сказать что удобно то, что имеет навигацию по схеме. Это упрощает и ускоряет работу.
aabzel Автор
Altium может из файла проекта автоматически сгенерировать таблицу проводов в Excel?
aabzel Автор
Altium может из файла проекта автоматически сгенерировать BOM в Excel?