Графический ЖК дисплей магнитолы Volkswagen к Arduino

Попала ко мне магнитола Wolkswagen Premium 7 CQ-EV14612G с большим графическим ЖК дисплеем.



На вскидку разрешение там около 256х64 пикселей (но это не точно). Размеры железной рамки 146х52 мм. От дисплея идет тонкий 17 пин шлейф на печатную плату.

Захотев подключить его к какому-нибудь микроконтроллеру, пытался гуглить все маркировки, безуспешно.


Потыкал осциллографом и мультиметром во все пины шлейфа и вот что обнаружил: логика и напряжение питания находятся на уровне 3.3 вольта, но на некоторых контактах обнаружены различные странные напряжения, видимо нужные для регулировки контрастности. Составил “таблицу” пинов от 17 до 1 (в обратном порядке):
+3.3 | CLK (NC) | DH | +3.3 | DL | DH | DL | +3.3 | GND | -8.3 (NC) | +2.0 | +0.7 | -6.0 | -7.3 | -8.6 | +3.3 | +3.3
Где NC - дорожка на плате никуда не идет, пин висит в воздухе.
DH - пин на котором замечены изменения уровня при смене на дисплее информации, в простое он +3.3V.
DL - пин на котором замечены изменения уровня при смене на дисплее информации, в простое он 0V.
CLK - явно сигнал тактирования, частотой 5.6 кГц, но он тоже никуда не подключен и создается дисплеем

Какой это может быть протокол связи? не похож на большинство графических ЖК дисплеев, требующих 8 data-пинов и еще штуки 4 пинов по типу CS/RS. Может быть SPI?
Какой это может быть контроллер дисплея и какая библиотека под ардуину может к нему подойти?
Ну и было бы неплохо узнать его точную распиновку.
Всем заранее спасибо.

Дополнение: дисплей ну очень похож по размерам на OLED дисплеи 5.5 дюймов 256х64 на драйвере SSD1322, и этот драйвер как раз поддерживает и параллельный интерфейс, и SPI.

Дополнение 2: у дисплея разрешение оказалось 212х58, и в интернете ни одного дисплея с таким разрешением не удалось найти. Подключен он действительно по SPI, и даже примерно понял его распиновку, но подключив этот дисплей через ESP32 даже при использовании прерываний и быстрой работы с GPIO мне не удалось перехватить пакеты по этой SPI шине, она какая то очень быстрая не смотря на то что микроконтроллер который в магнитоле управляет этим дисплеем не имеет аппаратного SPI и работает на частоте 32 мгц против 240 у ESP32. Единственное что остается попробовать - подключить напрямую к аппаратному SPI у ESP32 (который в теории может на частоте до 80 мгц работать) и сохранить передаваемые дисплею данные в какой то буффер, а потом на маленькой скорости отправить их дисплею. Ну и потом анализируя и изменяя пакеты понять как с этим дисплеем работать и написать какую то библиотеку.

он и работает, у меня, на ESP32S3 с дисплеем ST7796

по идее тебе нужна инициализация дисплея, а дальше у всех одинаково

В качестве master - да, 80 мгц. А вот в качестве slave уже всего 10 мгц, оказывается.

Дополнение 3: Чтобы упростить задачу перехвата пакетов ESP32, собрал преобразователь последовательной шины в параллельную на 8 битном сдвиговом регистре и 3 битном двоичном счетчике, таким образом преобразовав ~8 мгц последовательный сигнал в ~1 мгц параллельный сигнал.


Это уже удалось вполне стабильно перехватывать и декодировать на ESP32, и после пары попыток отправки этих пакетов обратно на дисплей - он их принял! После ручного анализа и осознования этих пакетов они оказались достаточно простыми, отправляются 8 групп каждая по 212 байт каждая, в каждой такой группе - область дисплея 212х8 пикселей, один байт = 8 вертикальных пикселей. Определив обязательные команды инициализации и очистки дисплея, написал свою прослойку для Adafruit_GFX, и оно работает!

На случай если кто то захочет повторить, распиновка сигнальных контактов:
15 - CS
14 - RST (я его даже не подключал)
13 - D/C
12 - SCLK
11 - MOSI
Код (архив): https://drive.google.com/file/d/1FMeEG5D0vGFk1Vf-Epsp7S7NFFNgFy7C/view?usp=sharing

5 лайков

Хорошая работа!