Начну издалека. Ровно год назад ко мне случайно попала автомагнитола Volkswagen Premium 7. Не пропадать же добру — подумал я — и решил реверс‑инжинирить её дисплей.
Спустя много попыток, изучений новых для меня инструментов и способов анализа сигналов — удалось вывести на её дисплей своё изображение. В районе лета мне пришла идея, что с этим всем сделать — часы + метеостанция + монитор ресурсов пк + драйвер подсветки стола.
На этом этапе мне пришла идея: заводская подсветка была одноцветной (синей), так ещё и крайне тусклой. Надо ставить что‑то своё. Под руку попалась WS2812 адресная светодиодная лента — яркая и RGB.


Результат превзошёл все мои ожидания: подсветка получилось яркой и необычной. Её цветом можно было наглядно выводить дополнительную информацию. Об этом всём можно и наверное нужно писать отдельную статью, однако код под это всё я писал под себя и свои потребности, и выкладывать такое я пока-что не готов. Да и Premium 7 магнитол в природе меньше и они дороже, чем RCD310.
Ах да, статья же про RCD310. В этом году я решил продолжить традицию и купил магнитолу Volkswagen RCD310. На Авито есть десятки таких магнитол за 500 рублей, при желании можно найти ещё дешевле. Есть 2 версии дисплеев этой магнитолы - с обычным дисплеем (FSTN Positive, чёрный текст на ярком фоне) и с инвертированным (FSTN Negative, яркий текст на чёрном фоне). Отличить их можно по фотографиям: обычные дисплеи - серо-жёлтого цвета, инвертированные - чёрного. На обычные ЖК дисплеи я уже насмотрелся, так что захотел попробовать инвертированный, особенно с моей RGB подсветкой.
В прошлый раз я изобретал интересный, но переусложнённый велосипед на советских сдвиговых регистрах, чтобы «перехватить» быстрый сигнал. В этот раз я подготовился лучше - купил... нет, не логический анализатор, а микроконтроллер RP2040. Оказалось, что под него существует отличный проект логического анализатора, способный захватывать до 24 каналов с частотой до 100 MSPS. Самый дешёвый логический анализатор, что я нашёл, стоит в 3 раза дороже RP2040, и способен лишь на 8 каналов и 24 MSPS.
Ну так вот, разобрал магнитолу, запитал от 12 вольт, потыкал мультиметром и осциллографом в контакты разъема передней панели, записал всю нужную информацию о напряжениях, и отдельно выделил те контакты, на которых было замечено что-либо похожее на передачу информации. К таким контактам, а их оказалось 6, я припаял RP2040, и начал логически анализировать.

Ещё до этого всего я заметил, что от дисплея к плате уходит 2 шлейфа - скорее всего 2 отдельных контроллера. Так и оказалось: на каждый контроллер есть свой CS и DC. Данные отправляются по очереди то в один контроллер, то в другой. В остальном вполне обычный протокол общения, похожий на дисплей в Premium 7 и даже на дисплей недавнего POS-терминала. Оно и не удивительно: как минимум 2 из 3 дисплеев производит Varitronix.
Ещё во время прошлого реверс-инжиниринга Premium 7, я понял, что в Volkswagen не работают перфекционисты, иначе я не знаю, как объяснить необычное разрешение 212x58 пикселей того дисплея. Диагональ видимой области там, к слову, около 5.5 дюймов. Здесь же, в RCD 310, я практически до последнего не знал разрешение дисплея. Я его узнал методом проб и ошибок, когда уже успешно вывел тестовую картинку на её дисплей. Тогда же я узнал достаточно странный порядок секторов дисплея, и странное поведение двух верхних и двух нижних полосок пикселей: ими нельзя управлять отдельно (можно включить/выключить только целую область из 2 вертикальных пикселей). Возможно это можно как-то исправить особыми командами, но я в этом сомневаюсь, и убедившись что проблема не в моём коде - забыл про эти линии. Так вот, инженеры Volkswagen не огорчили и в этот раз: оказалось что в RCD310 стоит дисплей с разрешением 316х55 пикселей (316х59 с учётом этих странных линий) и диагональю 7.2 дюйма. Не смотря на большее разрешение - дисплей заметно уже, чем в Premium 7, однако диагональ больше из-за сильно возросшей ширины.
На дисплей от основной платы приходит 3 напряжения - 3.3, 12 и 14.5 вольт, однако для работы самой матрицы нужно только 3.3 и 14.5. 12 нужны для подсветки, которую я всё равно не собираюсь использовать. Подсветка здесь, кстати, уже сильно лучше, чем в Premium 7: белая и достаточно яркая. Можно остановится на её использовании, но это не мой путь. Мой путь - приклеить на термоклей кусок из 11 светодиодов WS2812 светодиодной ленты. У меня была 60 светодиодов на метр, и оно отлично работало для Premium 7, но здесь, как-будто, хочется больше светодиодов и больше яркости. Сейчас яркость просто средняя, может даже заводские белые светодиоды были ярче. Ленты 96 или 144 светодиода на метр подойдут лучше. В оригинале тут было 16 светодиодов подсветки.
Также приклеил на двусторонний скотч DC-DC повышающий стабилизатор на MT3608 - он делает из 3.3 вольт нужные 14.5 вольт. Кстати, регулируя это напряжение можно регулировать контрастность - после ручного регулирования пришёл туда-же - 14.5 вольт.

Здесь можно было остановится, или даже подключить все оригинальные кнопки и энкодеры к микроконтроллеру и использовать это всё вместе. Но это тоже не мой путь — слишком уж большая эта передняя панель в сборе, многовато там кнопок для моих проектов, и мало места выделено под дисплей. Я бы мог оставить оригинальную плату как есть, и просто поставить дисплей под углом, как в моём проекте на Premium 7, но я пошёл дальше: обрезал лишнюю плату. Лишняя она потому, что на ней, по сути, только немного обвязки кнопок и транзисторы для светодиодов подсветки. Ни то, ни другое мне не нужно. Поэтому просто отломал лишние куски платы снизу и сверху, а потом обработал напильником. При этом всём выделяется стекловолоконная пыль, вредная для человека, так что это лучше делать на улице, смачивая всё водой, в защитных очках и респираторе. Или можно окунуть всю плату и инструменты под воду. Или можно не резать плату.
Я почему‑то когда резал плату — совсем не подумал о дорожках на ней. Не смотря на то, что все важные для дисплея компоненты находятся под ним — дорожки питания частично проходят за его пределами. Понял я это только когда отрезал и выбросил лишние куски платы. Пришлось восстановить несколько дорожек в схеме генерации разных напряжений для ЖК матрицы.

Здесь стоит поговорить, собственно, о подключении этого дисплея к МК: плата даёт доступ к DC и RST каждого контроллера, однако их можно объединить между собой. Итого получается 6 GPIO микроконтроллера нужно, чтобы управлять обоими контроллерами. Ну и ещё один на управление адресной лентой.
DC (слева) и RST (справа) для второго контроллера можно найти в районе микросхемы HC4066 в левой части платы, и подключить к DC/RST первого контроллера:

Основной блок контактов управления - чуть правее двух микросхем HC14. Контакты эти - 6 круглых контактных площадок, вполне удобных для пайки.

Назначение этих 6 контактных площадок, сверху вниз:
CS2
RST
DC
CLK
DATA (MOSI)
CS1
Код в этот раз я писал более универсальным образом, только digitalWrite, его скорости в целом хватает, при желании можно его усовершенствовать под конкретную платформу. Единственное ограничение - весь буфер кадра хранятся в оперативной памяти, а это чуть более 2 кб, так что всякие Uno/Nano такое не осилят. Но всякие ESP/STM/RP - вполне.
Код выложил на Github.
Немного фоток результата:



Кроме дисплея, из магнитолы можно использовать разве что пару энкодеров, конденсаторы и SMD светодиоды подсветки. Ещё возможно можно как-то использовать блок чтения CD дисков и микросхему аудио усилителя, но этим я не занимался.
Nexoic
А можно в сток магнитоле с переделкой сделать чтоб выводить время разгона показатели с двигателя и тд? Ну и функционал магнитолы оставить, но чтоб можно было переключить в режим продвинутого бортового компьютера ?
С такой же классной rgb подсветкой ?
Assket
Можно, а зачем? ©