В России бытует мнение, что программистам микроконтроллеров не нужна никакая схемотехника. Особенно в таких организациях, которые изначально долго занимались 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/

пример образцовой блок-схемы PCB
пример образцовой блок-схемы PCB

Если проводить аналогию, то блок-схема это как загрузчик 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(ы) на каждый компонент

*.pdf

main

высокий

уникальная

2

Схемотехника

*.pdf

main

высокий

уникальная

3

Топология всех слоёв PCB

*.pdf или Altium Designer

main

высокий

уникальная

4

монтажная схема

*.pdf

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

https://habr.com/ru/post/451158/

Комментарии (32)


  1. N1X
    00.00.0000 00:00
    +6

    Схемотехника платы

    Вроде и слова русские, но просто набор...

    Принциписальная схема это... Она же "Схема электрическая принципиальная", если совсем дотошно. Схемотехника - несколько другое понятие.

    А вообще пользоваться нужно тем, что есть. Блок-схема для понимания общей архитектуры. Для всего остального в идеале файлы проекта, будь то altium, pads, да хоть pcad. Можно и папку бумажную, вопрос времени разработки.


    1. aabzel Автор
      00.00.0000 00:00
      +1

      Программистам микроконтроллеров обычно altium на Linux не устанавливают.


      1. N1X
        00.00.0000 00:00
        +1

        Да, возможно я подтянул сюда свой "идеал". Что еще раз подтверждает то, что у всех фломастеры на вкус разные. У меня просто есть возможность открыть проект. Возможно правильнее предложить интерактивный PDF из этих CADов, я хотел сказать что удобно то, что имеет навигацию по схеме. Это упрощает и ускоряет работу.


    1. aabzel Автор
      00.00.0000 00:00

      Altium может из файла проекта автоматически сгенерировать таблицу проводов в Excel?


    1. aabzel Автор
      00.00.0000 00:00

      Altium может из файла проекта автоматически сгенерировать BOM в Excel?


  1. Gudd-Head
    00.00.0000 00:00
    +2

    Я бы поставил наверх спецификацию, а не перечень.


    1. aabzel Автор
      00.00.0000 00:00

      Под cпецификацией подразумеваются технические требования. Так?


      1. Gudd-Head
        00.00.0000 00:00
        -1

        Нет, ТТ это просто надпись на схеме.

        Я имею в виду готовую плату, с радиаторами, винтиками и гайками, на микрсхемах, например.


  1. Karlson_rwa
    00.00.0000 00:00
    +6

    Если вы будете тыкаться в плату не зная топологии, то 95% вероятность, что при первом же касании электродом осциллографа дорожки на PCB вы плату сожжете.
    Поясните, пожалуйста, сеё смелое утверждение.


    1. aabzel Автор
      00.00.0000 00:00
      -1

      Самый простой случай.
      Техник нечаянно установил GND крокодил от осциллографа на дорожку 5V, подал питание на плату и всё. Или задел землей ионистр.


      1. Karlson_rwa
        00.00.0000 00:00
        +2

        подал питание на плату и всё
        А, простите, плата при таком конфиге у вас от чего питается?


        1. aabzel Автор
          00.00.0000 00:00
          -1

          1. Karlson_rwa
            00.00.0000 00:00
            +1

            Хорошо, спрошу по-другому. Это ваш личный опыт? Ну, что устройство после такого фокуса скажет всё. И выпустит белый дым.


            1. aabzel Автор
              00.00.0000 00:00
              +1

              В одной питерской конторе был чинуша схемотехников которого постоянно жаба душила программистам схемотехнику давать. В итоге в его отделе платы горели у всех регулярно.


              1. Karlson_rwa
                00.00.0000 00:00

                Извините, это не ответ на мой вопрос. Повторюсь: Это ваш личный опыт?

                Техник нечаянно установил GND крокодил от осциллографа на дорожку 5V, подал питание на плату и всё. Например от переходника 220 V AC -> 5V DC
                Ну, что устройство после такого фокуса скажет всё. И выпустит белый дым.


                1. aabzel Автор
                  00.00.0000 00:00
                  -2

                  У нас в таких случаях платы сгорали так, что даже работающее ранее прошивки не стартовали.

                  Никто особо не разбирался что именно произошло. Просто тепловизор показывал, что уже при нормальном повторном включении микроконтроллер вдруг стал перегревался до 60 градусов+ и Heartbeat LED не мигает

                  Приходилось перекидывать проц в 170+ пинов.


                  1. Mike-M
                    00.00.0000 00:00
                    +7

                    1) По приведенной вами ссылке указан блок питания, который весит 1 кг. Значит, он трансформаторный, т. е. с гальванической развязкой от сети. В этом случае никакого сгорания платы не будет.

                    2) «У нас в таких случаях платы сгорали так, что даже работающее ранее прошивки не стартовали» — да что вы говорите? Если на плату попало 230 В, то ни одна прошивка не сможет стартовать, это же очевидно.

                    3) «Никто особо не разбирался что именно произошло» — и несмотря на это, вы делаете вывод, что 95% плат сгорают…

                    4) «Просто тепловизор показывал, что уже при нормальном повторном включении микроконтроллер вдруг стал перегревался» — снова нет никакой взаимосвязи с подачей 230 В на плату от неизолированного БП.

                    5) «Приходилось перекидывать проц в 170+ пинов» — угу, а остальные элементы на плате после попадания сетевого напряжения остались целы и невредимы )

                    Не отвечайте. Лучше исправьте свое заблуждение. Я, как и двое других комментаторов, считаю это утверждение слишком категоричным:
                    Если вы будете тыкаться в плату не зная топологии, то 95% вероятность, что при первом же касании электродом осциллографа дорожки на PCB вы плату сожжете.
                    Скорее наоборот, вероятность спалить плату не превышает 5%, потому что большинство изделий всё же имеет гальваническую развязку от сети.

                    И да, электроды — у эхокардиографа или электросварки. У осциллографа — щупы )


                    1. YDR
                      00.00.0000 00:00
                      +1

                      я недавно отлаживал некоторый силовой проект. Оказалось, что безопаснее всего убедиться, что земли более-менее соединены в розетке, и крокодил заземления щупа никуда не подключать. Щуп был 1:1000, и можно было безопасно "тыкать" почти в любые точки устройства :-) на проблемы, связанные с настолько длинным общим проводом не наткнулся.

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


      1. select26
        00.00.0000 00:00
        +1

        И что при этом произойдет?
        Вы смеха ради осциллограф в руки то возьмите, прежде чем такое писать.
        Я ещё удивился - у вас в тексте у осциллографа электроды появились вместо щупов.
        Я вот могу земляной щуп на питание установить, а активный - на землю. И просто увижу что с питанием происходит. В обратной полярности. Без вреда для платы и прибора.


    1. Frutt
      00.00.0000 00:00

      Я думаю тут имелась в виду другая история. Щупы осциллографа можно и на дорожки в 230 В посадить, а вход осциллографа как правило рассчитан на 30 В.

      P.S. Да, это мрачная идея, когда на плате 230 В, к сожалению бывают и такие схемотехники =/


  1. 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). Остальное может быть полезно, но совсем не безапелляционно нужно.


    1. aabzel Автор
      00.00.0000 00:00

      нужна по сути только схема платы

      Ну дадут тебе схемотехнику 17 листов, где на каждом листе 12 летающих фрагментов. Ты начнешь её смотреть, изучать. На 3ий день выяснишь, что схемотехники 2 листа забыли включать в *.pdf(ку). День на пятый поймешь, что это за устройство вообще. И только на 7ой день начнешь писать firmware.

      А тут тебе предлагают схемотехнику + блок-схему(1 лист). Ты посмотришь по диагонали на-блок схему. Через минуту поймешь, что это за устройство, через 10мин начнешь писать firmware изредка поглядывая на схемотехнику.

      Если проводить аналогию, то блок-схема это как загрузчик u-boot. Блок схема загружает в мозг разработчика большую и сложную систему.

      Меня удивляет, что вообще приходится объяснять такие простые вещи.


    1. aabzel Автор
      00.00.0000 00:00

      Смысл схемы - это показать что-то на одном листе.
      Делают же схемы агрегатов для авто механиков.
      Аналогично. PCB для программиста МК это как автомобиль для автослесаря. Надо четко представлять что и как там подключено.

      Современные PCB уже настолько сложны, что для них блок-схема тоже очень даже кстати.


  1. punzik
    00.00.0000 00:00
    +5

    Иной раз складывается мнение, что в РФ вообще никогда электроникой не занимались.

    Очень смелое предположение.


    1. aabzel Автор
      00.00.0000 00:00

      Дело в том что эпоха, когда в стране кибернетика считалась лженаукой сделала свое дело.
      И теперь электроника это такая диковинка для РФ и никто толком не понимает, что в ней делать.


      1. punzik
        00.00.0000 00:00
        +3

        Вы наверное в какой-то не той РФ живёте.


  1. 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, его просто нет), понимаешь, что кто-то тебя чего-то лишил, вернее - недодал.


    1. 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?


    1. YDR
      00.00.0000 00:00

      надо подчеркнуть, что собирать локально.


    1. aabzel Автор
      00.00.0000 00:00

      Этой информации мало. Та спека, что вы указали (54 страницы ) это тоже флаер.

      Это тоже самое, что если бы вы спросили прохожего в неизвестном городе как добраться до ж/д вокзала, а вам ответили "двигайтесь на север".


    1. hw_store
      00.00.0000 00:00
      +1

      Недавно попадался даташит на ethernet-контроллер от intel (QFN-64, 9*9мм) - 824 страницы.... ))
      А насчёт того, что на некоторые чипы нету даташитов в открытом доступе, автор к сожалению прав.


      1. aabzel Автор
        00.00.0000 00:00
        -1

        на некоторые чипы нету даташитов в открытом доступе, автор к сожалению прав.

        это проявления "технологического диктата" со стороны так называемой "демократической части" мира.