Добрый день, Хабр!
Решил написать небольшую статью о запуске разработанного и спаянного устройства на базе процессора iMX8MQ от NXP. Идея возникла из-за того, что нам предстоит запускать много разных проектов, а характер первоначального тестирования и запуска однообразен и, возможно, путь, пройденный мною не раз, кому-то поможет не ошибиться при вводе в эксплуатацию и не сжечь устройство.
Статья не является универсальной инструкцией к действию, а представляет собой результат проделанной работы по запуску конкретной платы.
Печатная плата
Печатная плата модуля имеет 10 слоев, поэтому электрическую проверку она проходила на заводе и визуально ее проверять нет смысла, лишь бы полюбоваться (платы с более чем 2 слоями всегда должны проходить электрическую проверку).При производстве было выбрано иммерсионное покрытие золотом, чтобы улучшить автоматизированный монтаж на производстве.
Так как это первый прототип на этом процессоре, то я буду паять его вручную, чтобы исключить ошибки установки на заводе и заодно проверю все блоки питания (как ни странно, если производство конкретного устройства еще не налажено) на заводе иногда бывают ошибки в номиналах).
Рисунок 1. Печатная плата модуля для iMX8MQ без компонентов.
Пассивный внизу
Первое, что я сделал, это установил пассивку на нижний слой платы.Я нашел это сразу первая проблема .
Изначально под iMX8 установлены конденсаторы типоразмера 0201, которые я решил поменять на 0402. Чтобы они устанавливались корректно, я отредактировал наши стандартные посадочные места (и правила в Altium), чтобы иметь возможность устанавливать компоненты ближе к друг друга.
Я тоже решил изменить типоразмеры 0603 и немного просчитался.
Видно, что на плате эти конденсаторы прижаты друг к другу, что недопустимо для автоматизированной установки.
Так как проблема наблюдается только на 0603, а их размещение позволяет увеличить расстояние между ними, исправлю это в следующей итерации.
Рис.
2. Установка пассивных компонентов снизу.
На всякий случай я с помощью мультиметра проверил наличие замыканий во всех точках выводов блока питания относительно GND, так как ошибку в виде «залипания», допущенную на этом этапе, будет сложно обнаружить на последующих этапах.
Короткого замыкания нигде не обнаружено, можно продолжать.
Установка некоторых компонентов сверху
Внизу поставлю пассив и часть активного, а именно «первичные источники питания».Входная мощность моего модуля составляет 3V3. Помимо нескольких DC/DC и LDO, плата содержит PMIC (MC34PF4210A1ES) — контроллер управления питанием, а также несколько источников вторичного питания.
PMIC также имеет входное напряжение 3V3, но я его пока устанавливать не буду.
Для фиксации платы я использую простой держатель, не позволяющий компонентам смещаться вниз при нагреве платы феном сверху.
Рис.
3. Установка некоторых компонентов сверху.
Теперь важно визуально осмотреть плату с обеих сторон и убедиться, что все компоненты стоят ровно, нигде нет лишнего припоя и нет «залипаний» между выводами компонентов.
Следующий шаг – еще раз проверка мультиметром выходных точек блока питания на наличие коротких замыканий.
Первое применение напряжения
Напряжение на плату буду подавать от лабораторного токоограничивающего блока питания.Поскольку я пока не уверен в правильности схемы и разводки блоков питания, то необходимо ограничить ток, например, 100мА, а напряжение выставить 3В3. При таком токе ничего не должно сгореть, но в случае короткого замыкания я это увижу по питанию.
Рис.
4. Подача напряжения на плату.
Просто припаиваю два провода и включаю лабораторию.
Дыма нет, расход практически одинаковый.
Мы думаем, что пока все нормально.
Помимо контроллера питания, 3V3 питает два DC/DC и два LDO. Я использовал супервизор питания, чтобы включить фидеры, так что их тоже следует загерметизировать.
Выяснил вторая проблема .
При разработке схемы я забыл посчитать делитель одного из DC/DC и в результате вместо 0V9 на его выходе получилось 2V5. Если бы в этот момент припаять процессор, то он, скорее всего, сгорел бы, так как это напряжение ядра.
Делаю регулировку резисторов фидера обратной связи, завожу, все нормально.
Установка ПМИК
Этот контроллер питания имеет несколько встроенных DC/DC и LDO. Кроме того, он управляется по I2C и имеет несколько сигналов, например PORb (сигнал сброса процессора) и т. д.Рис.
5. Установка PMIC на плату.
После установки микросхемы еще раз проверяем цепи входного/выходного питания на наличие коротких замыканий.
Далее мы устанавливаем ограничение тока лабораторного работника на 200 мА и подавать еду.
По умолчанию все выходы PMIC имеют фиксированные значения, поэтому проверяем даташит и смотрим на силовой осциллограф.
Помимо самих выходных напряжений, я смотрю на генерацию выводов SW (перед дросселями), чтобы оценить, есть ли какие-либо падения частоты.
Проверяю, подается ли сигнал сброса на процессор.
Все в порядке.
Давай продолжим.
Установка процессора и памяти
Процессор имеет 621 шар (от англ.ball — шарик), память LPDDR4 с 200 выводами, также в исполнении BGA. Заклеиваю феном с нижним обдувом, так как корпуса маленькие и нет опасений, что он может перегреться.
Рис.
6. Установка BGA на плату.
Новый этап пайки – новый тест на короткое замыкание и новый визуальный осмотр.
Важно, чтобы BGA располагались ровно по отношению к плате, боковые шарики были одинакового размера и не было искажений относительно шелкографии.
В процессоре имеется вывод управления питанием VDD_ARM, важно проверить, чтобы он не был закорочен ни на питание, ни на землю.
Рис.
7. Схема управления питанием VDD_ARM. Я назвал этот вывод PWM_LED (его нужно будет назвать более корректно, чтобы избежать путаницы в будущем).
Проверяем PORb, PMIC_nINT, PMIC_ON и другие сигналы на наличие короткого замыкания.
На этом этапе при тестировании нужно быть особенно внимательным, так как перепайка процессора трудоемка и дорога, а повторно нагревать плату нецелесообразно.
Сделаю небольшое отступление по поводу контактов, которые расположены под процессором.
Поскольку у нас нет рентгеновского контроля, сложно оценить пайку всех выводов под BGA, но способ все же есть.
Если вам необходимо убедиться, что проводник доходит до процессора, то можно снять с него все подтяжки и компоненты и с помощью мультиметра проверить его относительно GND на диодном тестере.
Например, если в дальнейшем неясно, дойдет ли вывод PMIC_ON до процессора, можно убрать PMIC, резисторы R117, R118 и конденсатор С240 (по схеме на рис.
7.), освободив тем самым этот вывод. .
Есть еще один вариант - в u-boot (загрузчике) можно настроить выходные контакты и установить на них логические 0 и 1, проверив напряжение мультиметром, но это не всегда возможно, например, если u-boot не работает. старт, или выход чипа не может быть настроен как GPIO, например, как контакты CSI/DSI для камеры и дисплея.
Этот процессор имеет множество вариантов загрузки.
Я предоставил все возможные варианты использования резисторов boot_cfg. Не буду углубляться в эту тему, так как на данном этапе у меня подготовлена SD-карта с u-boot. Так что мне нужен только этот режим.
В дальнейшем u-boot будет запускаться с QSPI, а образ будет загружаться с eMMC. На этапе тестирования удобнее всего использовать SD-карту.
Еще до пайки платы модуля я собрал материнскую плату, на которой у меня есть USB для консоли (в iMX8 две консоли, поэтому я использовал двухканальную микросхему USB-UART — CP2105-F01-GMR).
Также на плате имеется мощный преобразователь 3V3 и все необходимые разъемы для тестирования интерфейсов.
Плата сложная, но это еще и макетка, которая позволит все быстро проверить и запустить.
Процесс запуска был аналогичен описанному выше.
Рис.
8.Модуль на материнской плате.
Я также подаю питание на консоль.
ничего.
Расход в норме, все питание на месте.
Присутствует сигнал сброса.
Проверяю генерацию кварцевых резонаторов и генераторов - есть клочья.
Нагрев процессора низкий.
Для загрузки платы (как я писал выше) можно использовать несколько интерфейсов: SD/eSD, MMC/eMMC, NAND, QSPI и SPI_NOR. Все эти интерфейсы имеют тактовый выход. Встаём на эти клочья один за другим, перезагружая плату.
Увидел глюки по QSPI, значит процессор пытается загрузиться с пустого чипа.
Это третья проблема – выбран неправильный интерфейс загрузки.
Меняю режим на SD/eSD и:
Рис.
9. Первый запуск u-boot.
Заключение
После запуска u-boot был проведен тест DDR (через USB_OTG) с помощью программы MSCALE_DDR_Tool от NXP, затем прошивался образ и постепенно поднимались интерфейсы, такие как I2S, MIPICSI, MIPIDSI, USB, HDMI и т.д. На момент написания статьи не запустилась только физика Ethernet, но, надеюсь, проблема скоро решится (обязательно добавлю, когда начнется).PS: После перепайки imx8 физика Ethernet заработала.
Один контакт не припаян.
Спасибо за внимание, до скорой встречи и быстрых запусков! Теги: #Производство и разработка электроники #Сделай сам или Сделай сам #Электроника для начинающих #запуск #разработка #Altium #iMX8
-
Что Делает Apple Iphone Лучшим Смартфоном
19 Oct, 24 -
Я Пишу Программу Для Чтения Rss На Flex.
19 Oct, 24 -
Непроходимые Дебри Бизнеса, Часть 2
19 Oct, 24 -
Azure-Iaas-Сборник №9 (Июль-Август)
19 Oct, 24