- PVSM.RU - https://www.pvsm.ru -
Сигнал REMOTE (напряжение 12В, который служит для включения внешних усилителей когда включена магнитола) из современных штатных магнитол вывести не так просто. Если раньше можно было использовать ножку ST-BY микросхемы-усилителя, то теперь разработчики магнитол не используют эту ножку, потому что появились микросхемы-усилители с цифровым управлением.
Можно поискать на плате дорожки, на которых появляется напряжение тогда, когда включается магнитола, но в большинстве случаев они не подходят. Можно подключиться к питанию подсветки дисплея, вот только в этом случае усилитель может включаться незапланированно — до включения встроенного усилителя (что сопровождается щелчками в тракте) или при регулировке климата или при работе парктроника.
Попробую описать другой вариант выхода из положения на примере штатной магнитолы Swing на Skoda Octavia A7
Оконечный усилитель — TDA7563, на него аналоговый сигнал приходит с DSP SAF7741HV.
TDA7563, как выяснилось, очень любят разработчики штатных магнитол из-за того, что микросхема имеет цифровое управление и диагностику по шине i2c, а i2c применяется в магнитолах уже очень давно. Микросхема усилителя при включении магнитолы по команде основного процессора производит тест динамиков, результат теста отдаёт по i2c — определяется обрыв/КЗ, что позволяет блоку магнитолы выдавать эти ошибки по CAN диагностическому оборудованию. В спящий режим микросхема усилителя переводится тоже командами по i2c (нога ST-BY усилителя не используется), что сильно усложняет получение сигнала REMOTE.
Вообще, вся магнитола постоянно запитана, независимо от того, включена ли она и включено ли зажигание. Просто все ненужные микросхемы (и усилитель в том числе) засыпают до тех пор пока не понадобятся и их не разбудит основной процессор магнитолы (в нашем случае ).
Состояние включенности габаритов и включенности зажигания магнитола получает по CAN. Обмен с кнопками руля — по CAN до блока шлюза диагностических шин, далее — по LIN до контроллера кнопок в руле.
Идея в том, чтобы на внутреннюю шину магнитолы i2c посадить ещё одно устройство на базе простого и дешёвого микроконтроллера, которое будет прикидываться микросхемой усилителя и слушать все команды, которые летят в неё от процессора магнитолы. Причём i2c позволяют нашему «шпиону» оставаться незаметным для процессора магнитолы. Встроенный усилитель будет функционировать как и прежде, а сигнал REMOTE будет формироваться микроконтроллером ровно тогда, когда магнитола будет включать свой встроенный усилитель. Данный способ подойдет для всех магнитол, в которых применена микросхема TDA7563 или совместимые с ней по протоколу обмена.
Само устройство было собрано в выходные на плате, на которой кроме микроконтроллера расположились только 3 резистора и 2 отладочных светодиода (необязательных). Микроконтроллер выковырян из ненужного устройства, поэтому долго над выбором мк я не думал.
Всё достаточно просто. Нам всего лишь нужно реализовать i2c-slave с адресом как у TDA7563 (0x6C) и ждать обращений на запись. Далее нужно принять 2 Instruction byte от процессора магнитолы и их проанализировать. Интересующие биты — Standby Off в байте IB2, Unmute Rear Channels и Unmute Front Channels в байте IB1. Вообще выяснилось, что магнитола сначала выставляет бит Standby Off и с небольшой задержкой — биты Unmute Front Channels и Unmute Rear Channels.
Командные байты я описал в виде структур бит, которые поместил в объединение вместе с массивом из 2 байт, чтобы при заполнении буфера обращаться к нему побайтово, а при разборе команды иметь удобный доступ к битам:
typedef struct
{
unsigned char HighEfficiencyMode_Left :1;
unsigned char HighEfficiencyMode_Right :1;
unsigned char CurrentDetectionDiagnosticEnable:1;
unsigned char LineDriverModeDiagnostic :1;
unsigned char StandbyOff :1;
unsigned char FastMuting :1;
unsigned char NotUsed1 :1;
unsigned char NotUsed2 :1;
} tIB2;
typedef union
{
struct
{
tIB1 IB1;
tIB2 IB2;
} IBs;
char Bytes[2];
} tTWI_Buff;
А так выглядит проверка команды (я проверяю биты Standby Off и Unmute Front Channels):
TWCR |= (1 << TWINT); // Сброс флага прерывания.
}
Весь проект можно скачать отсюда [1]. В принципе код легко переделывается под любые мс усилителей с управлением по i2c. (встречал TDF8546, например).
Контроллер у меня спит 99% времени в режиме Power-down. Просыпается при обращении к его i2c-адресу (используется аппаратный TWI), принимает команду, анализирует её, при необходимости выдаёт 1 на вывод REMOTE_3.3, моргает вторым отладочным светодиодом (D2) и снова засыпает.
Процесс отладки:
Когда прошивка отлажена можно приступать к сборке магнитолы.
Плату я приклеил к экрану тюнера:
Т.к. на плате у меня не было предусмотрено место для транзисторов, формирующих из REMOTE_3.3 контроллера напряжение 12В, просто взял управляемый логическим уровнем 78R12. Также добавил интегральный предохранитель N10 на 0,4А.
К i2c-шине магнитолы подпаялся на ногах TDA7563:
Магнитола собрана. Заветный синий проводок
Автор: ElectricFromUfa
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy-ili-sdelaj-sam/91566
Ссылки в тексте:
[1] отсюда: https://yadi.sk/d/pO_fqsJLgyrMF
[2] Источник: http://geektimes.ru/post/251524/
Нажмите здесь для печати.