Всем привет. Меня зовут Андрей, занимаюсь разработкой электроники и микропроцессорных устройств с 2005 года. Читаю Habr уже давно и решил поделится своим опытом одного интересного ремонта, ставшего небольшой разработкой.
Итак, по роду занятий приходится заниматься мелким ремонтом, как бытовой техники, так и более сложной: промышленной или автомобильной (сразу вспоминается мемы про «Ты‑ж программист, винду установить можешь и компы чинить тоже»). Обратился один человек с просьбой, отремонтировать Greddy Multi DA Gauge. Небольшой экскурс, что это за фирма и чем занимается.
Фирма Greddy занимается изготовлением всяких тюнингованных штук для автомобилей. Тут и выхлоп, и детали для наддува, охлаждения и всего‑всего прочего. Ну и конечно, любимая электроника. Одна из интересных разработок, это Greddy [Trust] Sirius Vision. Выглядит просто космически:

Но, мне попалась старая версия, т. н. analog gauge. Это измеритель‑показометр (обычно называют «будильник») с дисплеем. Прислал мне его человек с диагнозом «не работает дисплей». Ну, дисплей то мы перепаять сможем, несложно ( тогда даже не мог предположить, чем это обернется).
Само устройство состоит из 2-х модулей: основной блок, показометр. Так же датчики и естественно провода. В основном блоке стоит микроконтроллер от Holtek (8-ми разрядная блоха с небольшим количеством памяти) и фильтрами. Устройство показометра более интересное: тот же микроконтроллер, драйвер шагового двигателя ( стрелка управляется маленьким шаговиком с ограничителями), ИК‑приемник и собственно дисплей на SSD1305. Сам показометр работал исправно, а вот дисплей ничего не отображал. Не помогла и настройка с пульта. Вместе с прибором человек прислал 2 дисплея. Не знаю, где он их нашел, но видимо, уже ребята пытались паять и ничего не получилось. Естественно, не запустились дисплеи и после моей попытки. Что‑ж, «вечер перестает быть томным».
Замер напряжения питания показал 5в. Но по даташиту питание логической части 2.4 — 3.5 вольта. Хорошо, это устройство работало, не могли таких ошибок сделать разработчики ( возможно). Берем абсолютно новый дисплей, заказанный в Китае через кучу посредников. Подключаем его через стабилизатор на 3.3 вольта. И... тишина. точнее темнота. Не работает. И тут меня немного понесло: берем логический анализатор, осциллограф и лезем глубже: сигналы с микроконтроллера идут, интерфейс 8-ми битный параллельный. Хорошо, подключаем дисплей на контроллере SSD1306 ( набор команд почти похож). На столе наблюдается вот такая картина:

и данные на дисплее:

Хоть что то начало проясняться. Осталось дело за малым: как отзеркалить изображение малой кровью. Это уже несложно: берем отладочную плату на STM32 и начинаем процесс написания прошивки. Нужно в потоке данных (а они с дисплея летят на приличной скорости) изменить всего лишь 1 байт. STM32F303 прекрасно с этим справляется. Вот результат:

И данные:

Ура. Получилось очень симпатично. А теперь кучу проводов и микроконтроллер нужно впихнуть в очень маленькую платку. Рисуем схему, разводим плату, запаиваем микроконтроллер.


Собираем и‑иии: бац, не работает. Почему, а потому, что STM32F103, который был в наличии в маленьком корпусе не справляется с таким потоком данных. Не хватает скорости, а вернее, не хватает скорости у стандартных библиотек. Переписываем код на bit banding и все заработало как надо.

И наконец, финальная версия платы с всеми необходимыми правками:

Впоследствии узнал, что данный дефект носит массовый характер. Увы, это не выгорание пикселей, присущее OLED‑дисплеям, а именно выход из строя или механизма управления пикселями или самой логической части. Да и дисплеи эти очень сложно достать.
Вот такой получилась моя первая статься на Habr'е. Очень надеюсь, не последняя. Всем спасибо за внимание.
CitizenOfDreams
Ну то есть "фирмачи" мало того, что применили нестандартный дисплей, они еще где-то нашли массово дохнущую его разновидность. Чтобы зарабатывать на постгарантийном ремонте? Или просто кто-то решил сэкономить?
gibson_dev
Ну новые модели продавать то как то нужно.