Проблемами с постоянной нехваткой микросхем сейчас никого не удивить. Началось это всё ещё в конце 2020 года, в начале 2021 стала сильно тяжелее, с введением санкций в 2022 году стал просто кошмар!

Я сейчас с грустью вспоминаю времена, например, 2019 года, когда при заказе партии микроконтроллеров в 2-3 тыс. шт. я выбирал на складах поставщиков самую низкую цену при этом ориентируясь на срок поставки в 1-4 дня! Тогда остатки у них в 20-30 тыс. шт. считались нормальным явлением.

Начиная с 2021 года такие цифры тоже ещё можно было увидеть, но сроки выросли до 15-30 дней. Сейчас реальность такова, что поставка в течение 30 дней считается уже большой удачей, если удаётся отхватить партию микросхем хотя бы в 500-1000 шт. Обычный срок 50-60 дней. При этом даже при своевременной оплате счёта нельзя быть уверенным в поставке. У нас до сих пор из 10 заказов отменяется почти половина. Объясняют это тем, что "кто-то уже перехватил данную партию", хотя мы давно уже платим вперёд и держим у поставщиков на депозите определённый запас денежных средств для мгновенной оплаты.

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

Из-за проблем с поставками мы постоянно занимаемся поиском аналогов всех используемых микросхем. И если с той же I2C-памятью, драйверами RS-232, RS-485 проблем нет, так как их всегда можно чем-то заменить, то вот с микроконтроллерами и преобразователями питания большие проблемы. Про спец. микросхемы вообще молчу. Сейчас мы стараемся их не использовать вообще.

В первой части статьи пойдёт речь о микроконтроллерах. Так сложилось, что мы используем в основном продукцию компании Microchip. Уже в прошлом году под текущие проекты было практически нереально оперативно приобретать более-менее приличные партии одного вида микроконтроллеров. Поэтому нам пришлось в одном и том же устройстве использовать различные модели. Сейчас разнообразие моделей только в одном контроллере мониторинга и управления ИБП "СКУП-2" достигает 8 шт!

Это порождает следующие проблемы:

  1. Необходимость изготовления различных печатных плат под разные корпуса микросхем.

  2. Необходимость сборки универсальной прошивки под все типы микроконтроллеров.

Первую проблему решаем так:

По возможности пытаемся объединять на одной плате посадочные места под два типа микросхем. Сейчас вариант с TQFP + QFN является для нас фактически нормой:

Тут ещё добавляется проблема с Ethernet-контроллером, который тоже получается доставать в двух видах – корпус SOIC с шагом 1,27 мм и корпус SSOP с шагом 0,65 мм. Но под него универсальное посадочное место сделать не получилось.

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

А вот с созданием единой прошивки пришлось попотеть. Понятно, что она "единая" только абстрактно. Мы используем микроконтроллеры совершенно разных подсемейств, у которых периферия отличается очень сильно. Например, PIC18F46K22 и PIC18F46Q43.

Поэтому пришлось в первую очередь максимально переработать наши библиотеки для работы с периферией. В них появилось большое количество define’ов, но в итоге получилось свести всё к единому стилю. Полностью отличается только начальная инициализация микроконтроллеров, но и тут мы постарались максимально унифицировать её в пределах похожих подсемейств.

Далее мы добавили в каждую прошивку функцию для определения "типа микроконтроллера", по факту просто код модели. Это нужно для софта верхнего уровня при обновлении "прошивки". Код представляет собой одну букву от A до Z за исключением буквы X (об этом будет ниже). Таким образом, у нас на данный момент есть возможность использования 25 типов микроконтроллеров в одном устройстве. Надеюсь, что этим всё и ограничится ????.

Разработку "прошивок" для микроконтроллеров мы осуществляем в среде MPLAB X. Там есть очень удобная штука в настройках проекта – конфигурации. Для каждого типа микроконтроллера мы задаём свои уникальные параметры: адрес расположения загрузчика и т.п. В результате весь проект можно отлаживать на какой-то одной модели (стараемся брать самую "дохлую" в плане периферии и памяти, например, PIC18F46K22), а затем уже пересобирать под все остальные типы:

В итоге мы получаем набор hex-файлов, которые фактически должны идти на одну и ту же плату, но с разными моделями микроконтроллеров. Чтобы пользователь не мог перепутать и залить "прошивку" от другой модели мы поступили следующим образом.

Написали небольшую утилитку, которая из набора этих hex’ов формирует единый контейнер (фактически это ZIP-архив), содержащий все эти файлы, а также небольшой XML-документ, в котором прописано соответствие нужного файла и "типа микроконтроллера".

Вот пример такого документа:

<firmware>
  <version number="2.0 b649" />
  <bin name="site.bin" crc="DD92FB61796B332F951D6E7B939F658C"/>
  <list>
    <item revision="AX" file="atlas3000_AX_2_0b649.hex" crc="25BD8F6C3F8E4F5B5716AF98FA916F35" />
  </list>
</firmware>

Здесь имеется определённая гибкость. К примеру, одна прошивка может соответствовать разным типам микроконтроллеров. Также контейнер может содержать дополнительные файлы, например, Web-интерфейс устройства. Они тоже содержатся в списке. При этом наши hex-файлы имеют дополнительную метаинформацию: номер версии, дату и время сборки, код устройства, имя файла Web-интерфейса и т.п. Подобные данные оформляются в виде строк, начинающихся с точки с запятой:

;ENCODED=1
;VERSION=2.0 b649
;DATETIME=08.04.2022 14:38:07
;DEVICE_ID=27

;DEVICE_REV=AX
;BIN_FILE=site.bin
:020000040000FA
:101300002AB1DF95673F2061BFEE81DB3A00F0FA3A
:101310005EAA8A2CEEDDBDF6D15F3A338EF1A1F2E2
:1013200045430F31ED59674497E1A1C68F666A9E28
:101330006A75295983376CE7288E96B3F83612D42C

Эта информация добавляется автоматически отдельной утилитой после окончания сборки прошивки.

При формировании контейнера проверяются все "перекрёстные ссылки", а также совпадение номеров версий для всех видов "прошивок".

При обновлении "прошивки" софт для ПК считывает "тип микроконтроллера" с платы и достаёт из контейнера нужный hex-файл. В случае группового обновления устройств для каждого из них эта процедура повторяется автоматически:

Особняком в данной системе стоят платы, выпущенные до 2020 года, когда чип использовался всегда один. Они тогда ещё не имели функции считывания "типа микроконтроллера". Для таких вариантов у нас используется "прошивка по умолчанию". В контейнере она помечается буквой X. В большинстве случаев такой микроконтроллер поддерживается и сейчас, поэтому подобные прошивки идут, как правило, с двухбуквенным типом: AX, BX и пр.

В следующей части я расскажу как мы делаем свои субмодули, тоже с целью максимальной универсализации.

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


  1. red-cat-fat
    17.05.2022 10:14

    А мне интересно - в рамках всеобщего "импортозамещения", у вас не планируется переход на отечественные МК?


    1. FDA847 Автор
      17.05.2022 10:18
      +13

      А не на что пока переходить. Миландр не доступен в нормальных количествах, а Микрон только-только начал выпуск своих МК на базе ядра RISC-V. Но там надо ещё разбираться. Поэтому приходится выкручиваться сейчас. У нас есть определённый запас на складе, плюс периодически подкупаем нужные PIC'и.

      Естественно, рассматриваем возможные китайские альтернативы. Но там с поставками тоже пока не очень. А перейти на совсем другое семейство МК это несколько месяцев работы. Поэтому хочется заложиться на что-то легко доставаемое.


      1. BaTpyIIIKa
        17.05.2022 17:00
        +1

        Да вроде нет проблем с поставками китайских МК. По крайней мере 32-х битных кортексов. С преобразователями DCDC у них тоже всё красиво. Немного растянули сроки поставок их текущие антиковидные меры, раньше до 2-х недель приходили, сейчас 3 недели. Будет интересно - подскажу компанию, которая возит из Китая компоненты по привлекательным срокам и ценам.


        1. Gryphon88
          17.05.2022 17:41
          +4

          Тут, наверное, многим интересно. Как и процент брака с фактической актуальностью и полнотой документации, чем традиционно славятся китайцы :)


          1. BaTpyIIIKa
            17.05.2022 18:32
            +4

            не к тем китайцам Вы привыкли.

            Такие производители как GigaDevice, Artery, Nuvoton, Geehy, LogicGreen не уступают по качеству и документации тем же SMT. Такой производитель преобразователей DCDC как Monolitic Power System на тестах показал себя в полтора раза лучше и надёжней Texas'ов в реальных тестах. При этом цены на китайскую продукцию значительно ниже.

            Контакты компании которая таскала из Китая позже оставлю. Сейчас под рукой только контакт главного менеджера - stratosander@gmail.com Александр. Они нам проект полностью под китайский БОМ переводили.


            1. FDA847 Автор
              17.05.2022 18:39
              +1

              С GigaDevice всё не так радужно. Есть проблемы с тем же USB-модулем. Поэтому перейти по щелчку пальцев не получится.

              Мы используем DC-DC от Diodes вместо Microchip'а. Всем устраивают их изделия. И ценой тоже. Только вот достать 1-2 катушки (3000-6000 шт.) очень непросто. Срок от 3 недель. Сейчас вот как раз ждём очередную партию.

              Возможно, есть поставщики, которые привезут и побыстрее, но принципиально это ничего не меняет, т.к. проблема именно в ограниченности выпуска чипов. Их просто нет в нужном количестве.


              1. BaTpyIIIKa
                17.05.2022 21:07

                Если имеются проблемы с дросселями, то советовал бы рассмотреть китайские Chilisin. Качество хорошее, поставки с Китая беспроблемные


            1. Gryphon88
              17.05.2022 18:47
              +2

              Спасибо. Авось получится реанимировать проект, без "нашего человека в Сайгоне" не получилось подобрать замену ключевым компонентам.

              GD любим и ценим, особенно за оперативно выпущенный гайд "GD32 and STM32 Compatibility", хотя они официально в РФ не поставляются с апреля. А вот ESP я очень не люблю из-за багфиксов прямо в серии, без изменения номера ревизии. В итоге костыли, вбитые по эррате, неожиданно делают больно с новой поставкой)


            1. KbRadar
              20.05.2022 02:04

              В полтора раза по какому параметру? Давайте перейдем на язык цифр.


    1. Albert2009ru
      18.05.2022 14:13
      +1

      А среди отечественного разве есть что-то сопоставимое, если взять докризисные времена, по ценам с PIC? Для примера, был ли и есть ли, например, аналог простенького PIC16F18326, который стоит/ил также или дешевле. Ну и есть ли такая же IDE типа MPLAB-X для разработки? Будет супер если хотя бы "на бумаге" такое существует.


  1. karambaso
    17.05.2022 11:20

    Как-то бы коротенько описать, насколько все эти приседания влияют на себестоимость? Разработка всё равно ведь постоянный штат сотрудников держит, и они, видимо, справляются, значит затраты растут на основе сокращения размера партии (печатных плат, покупка самих контроллеров и т.д.). Но вроде как это не должно сильно влиять, может процентов 10-15, но в цене конечного изделия они уменьшаются за счёт всего остального железа/пластмассы.

    Или себестоимость всё же возрасла существенно?


    1. FDA847 Автор
      17.05.2022 11:26
      +4

      Себестоимость, к сожалению, выросла прилично. Но в основном за счёт удорожания микросхем. Те же PIC'и буквально в начале февраля мы брали по 200-250 руб. в партиях от 100 шт. Сейчас дешевле 750 найти сложно. То же самое касается и остальных чипов.

      На этом фоне затраты на переработку плат несильно велики. Разводка новой платы в спокойном режиме под новый проц это неделя работы одного разработчика. Ещё неделя - изготовление и тестирование опытного образца. Далее уже можно запускать в серию.

      Доработка "прошивки" занимает чуть больше времени - около 2-3 недель со всеми тестами. Но опять же зависит от семейства МК. Между 46K22 и 46K42 разница огромная, а между 46K42 и 46Q43 уже совсем мизерная. Ну, для наших задач.


  1. Benhealy
    17.05.2022 20:14
    -7

    Эх, электронику советскую сюда бы


    1. blind_oracle
      17.05.2022 20:18
      +4

      С двумя ручками для переноски?


  1. vanfukovmail
    17.05.2022 20:45
    -10

    Хорошо бы закрыть всю разработку и производство электроники на россии.


    1. iBuilder
      19.05.2022 23:18

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


  1. RTFM13
    18.05.2022 03:07

    Забавно. 20 лет назад делал для внутренних нужд конторы очень похожее устройство (самый первый опыт с микроконтроллером, вместо моргания светодиодом). И тоже на PIC18. Не думал, что функционал еще востребован.

    картинка


  1. Gudd-Head
    18.05.2022 20:12

    В итоге мы имеем целый набор плат с различными комбинациями контактных площадок.

    Почему не сделать для контроллеров разные маленькие переходные палаты, которые уже будут паяться на одинаковые большие (материнские) платы?