
Приветствую!
Иногда на меня находит меланхолия. Копаюсь в архивных фотографиях, вспоминаю старые проекты. Недавно из большой коробки с барахлом достал несколько макетов, где исправлялись различные (в основном, конечно, глупые) ошибки. Это будет пост о том «как не нужно было делать» или «учимся на своих ошибках».
Большинство ошибок проектирования происходит по невнимательности и из-за недостатка времени. Чем больше у разработчика опыта, тем ошибок меньше. Уже идешь, так сказать, на опережение. Крутишь свою плату в САПР и видишь все «тонкие места». Макет у нас – это первая итерация платы проекта, и она должна запуститься практически любой ценой. Находим все ошибки, как можем исправляем навесным монтажом и отдаем программистам поднимать софт. Дальше идет предрелиз – это вторая итерация. Обычно она становится релизом, если только заказчик не решил переписать все ТЗ заново. У меня больше трех итераций, наверное, не бывало. Если на первом этапе все баги найдены и устройство запущено, то второй подразумевает перенос всех исправлений в проект. С каждым годом проектирования ошибок становится все меньше, поэтому мне пришлось постараться, чтобы найти что-то интересное, так сказать, из раннего.
Отдельно хочу пояснить, что платы с такими исправлениями не попадают к заказчику. На них происходит отладка аппаратной и программной части.
Первая в списке – это flash. Я нашел две таких платы, фотография первой в заголовке. Вторая ниже. Вроде проблема заключалась в «сдвиге» пинов то ли адресов, то ли данных. Это была критичная ошибка. Образ не записать, плату не запустить, интерфейсы не проверить. Чтобы много раз не перезаказывать и не паять платы (мы же не знаем сколько там таких ошибок) сделали переходную платку. Как сейчас помню припаивал эти проводки (за 10 лет лежания в коробке многие уже отвалились, конечно). Все стартануло несмотря на эту конструкцию.

Далее в программе – перевернутый DC/DC SY8089AAC. На схеме ниже видно, что я отразил по вертикали питатель, когда рисовал схему. Скорее всего сработал классический копи-паст.

Получилось довольно удачно. 2 вывод – это GND. Зачищаем земляной полигон напротив этого вывода, переворачиваем микросхему на 180 градусов и все становится как надо.

На плату скалера TSUMV59 поставил LDO вместо DC/DC. Стабилизатор грелся как утюг. На помощь приходит плата DC/DC на ST1S10 (тоже собственной разработки). Выпаиваем LDO, паяем DC/DC. Когда все отлажено и работает – переразводим плату.

Про картинку ниже я уже как-то писал, но не смог обойти ее стороной. Слева пример реализации навесным монтажом, а справа уже «красивая» переходная плата.

А вот что происходит, когда ошибся с расположением выводов микроконтроллера и не проверил в 3D. Тут хорошо видно, что выводы микросхемы не достают до падов на плате.

Сколько не пытался припаять – не получалось. Микроконтроллер обрабатывает кнопки и управляет питанием для CPU – без него никак. Пришлось снова изворачиваться.

Прошу прощения за качество фотографии ниже – кадр из видео. Полноценного фото, к сожалению, не сохранилось. Получилось довольно работоспособно.

Что делать, если перепутали дифференциальные пары от трансформатора к разъему Ethernet? Не беда – отгибаем выводы и паяем провода (не забываем все завязать в узел для согласования волнового сопротивления и имитации витой пары смех сквозь слезы). Ошибка и исправление не мои, но Ethernet поднялся, скорость проверять было бессмысленно, пока не исправили по-человечески.

Для вывода консольного UART с процессоров мы используем свой USB-UART переходник (были спроектированы и произведены в некотором количестве). Переходник надевается прямо на штыри – это довольно-таки удобно. Есть версия переходника UART-Bluetooth. Не нужно лишних проводов. В одном из проектов перепутали RX/TX от CPU. Не проблема!
Красные платы вообще какие-то проблемные получаются.

Для ошибки, которая показана ниже нужно еще пояснение из даташита. Микросхема ESD защиты для HDMI TPD12S521. Чтобы сделать фото я ее снял.

В документации указано, что защищаемые от ESD выводы должны соединяться на плате (вход/выход микросхемы). Кстати, так бывает не всегда. Кому интересно, можете посмотреть ESD224DQAR – она имеет встроенные резисторы. Это к вопросу о изучении даташитов от производителя. Скрин из документации на HDMI ESD TPD12S521:

Если вдруг решите вывести miniUSB для отладки, то выводите его на край платы, в противном случае кабель будет не вставить. Проверено! Но даже в этом случае есть решение! Можно один край разъема просто приподнять. Не очень эстетично, но работает.

Есть микросхемы PHY-Ethernet которым обязательно нужны подтяжки линий данных RX/TX резисторами 49R9. К таким относятся, например, RMII LAN8742. Об этом английским по белому написано в документации (даже с картинками). Если забыли (это был я) — это всегда можно исправить навесным монтажом. Да, а с другой стороны трансформатора 2x75R + керамика.

Ниже на фото даже не ошибка, а «дополнение» к имеющемуся функционалу. Делал буквально на днях. Из кодека ADAU1761 необходимо дополнительно вывести два микрофонных входа. Паялся прямо к корпусу QFN. Работает!

Дальше совершенно нелепая ошибка. Делал мелкий проект на e-ink дисплее. Выводил USB-UART на CP2102-GM для прошивки/отладки ESP32. Названия RST/RTS похожи, и я перепутал эти сигналы. Проводок в помощь. Думаю, этим никого не удивить.

Ниже интересное фото. Разъем Ethernet установлен с другой стороны платы. И это не просто так.

Тут нет ошибки инженера. В 2021 году, когда была разработана данная плата в даташите производителя WE на разъем 749951440 была допущена ошибка – разъем был «отзеркален». В 2023 году ошибку исправили, но осадок остался. Та еще проблема найти такую ошибку.

UPD. Пока читал комментарии вспомнил о еще одной ошибке с этим злосчастным разъемом, хотя тут уж сам виноват. Я выводы TCA/B/C/D подключил напрямую к 3.3В, да не просто так, а к полигону во внутреннем слое (плата 4 слоя). Проблема решается примерно так:

Слева на фото еще один «пропил» до 3 слоя. Нужно было перерезать один проводник. Из-за небольшого изменения в ТЗ (входное 24В вместо 12В) пришлось разделять цепи питания. Это тоже макет, естественно.
И напоследок – это забытый сигнал reset процессора. Косяк снова не мой, а исправлять мне, но мне нравятся такие шаманства. Плату снова-таки не запустить, так как сигнала сброса CPU нет. Pad reset на этом процессоре расположен в первом ряду шариков BGA - повезло. Нагрел феном уже запаянный процессор и воткнул в расплавленный шарик проводник. А почему бы и нет? Главное, чтобы руки не тряслись. Плата запустилась без проблем.

На этом, пожалуй, и все. Больше не смог ничего вспомнить/найти, что хоть как-то было бы интересно или смешно.
PS. Оставляйте в комментариях фотографии своих исправлений. Было бы очень интересно посмотреть на различные реализации и что-то перенять.
Не бойтесь своих ошибок и умейте их исправлять!
Спасибо за внимание и успехов!
Автор:
the_bat