Протокол управління CD-чейнджером

Продовжуємо розпочате. Цього разу я розповім про те, що міститься в корисному навантаженні кадру I/K-bus, коротенько про пристрої інформаційно-розважальної системи BMW e38, e39, e46, e53, і розглянемо детальніше роботу протоколу на прикладі чейнджера компакт-дисків.

За логікою речей канальний рівень містить у своїх даних протоколи більш високого рівня. У I/K-bus так і відбувається, тільки в ньому немає протоколів мережного та транспортного рівнів на подобу TCP/IP. В кадрі ніде немає інформації про адресу мережі, але межсетевое взаємодія можлива. Виконується воно за допомогою шлюзу, який виконаний в блоці комбінації приладів. Суть роботи шлюзу проста — він знає в якій мережі розташований той чи інший блок, у відповідності з цим пересилає кадр в іншу мережу, якщо відправник і одержувач знаходяться в різних. Таким чином забезпечується межсетевое взаємодія на канальному рівні ніби це єдиний сегмент мережі. Малюнок нижче ілюструє підключення мереж у загальній системі взаємодії блоків управління.



Слід уточнити, що ліва схема справедлива для кузовів і e38 e39, e53 з блоком комбінації приладів підвищеної функціональності (IKE high). У e39, e53 з базовим блоком комбінації приладів (KOMBI), а також у e46 шини I-bus і K-bus фізично об'єднані в одну.

D-bus — це діагностична шина (k-line). По ній підключається діагностичне обладнання. Ця шина не має фізичного підключення до всіх органів управління, але через шлюз в IKE/KOMBI завдання взаємодії забезпечується повною мірою. Для прикладу блок навігації підключений тільки до I-bus, але з допомогою сервісного/діагностичного обладнання ми можемо прочитувати сервісну інформацію, помилки і робити кодування.

То що міститься в корисному навантаженні кадру I/K-bus, я буду називати протоколом прикладного рівня. В основі своїй він складається з двох частин. MSG ID — ідентифікатор повідомлення, займає один символ. MSG DATA — доповнююча інформація повідомлення може не бути зовсім або займати до 32 символів. На наступному малюнку показано, як це виглядає:



Так як символ складається з 8 біт, виходить можливих варіацій команд (CMD ID) 256. Чимало, напевно навіть з запасом, і мені відомі далеко не всі. Але на деяких ключових я зупиню увагу.

Повідомлення з ідентифікатором MSG ID = 01 — запит стану пристрою. Перш ніж взаємодіяти з яким-небудь пристроєм, необхідно переконатися в наявності і справності. Ця команда вирушає пристрою, в стані якого необхідно переконатися. При цьому поле MSG DATA не заповнюється. Щоб інформація про стан пристроїв була актуальна весь час, команда повторюється періодично. Розглянемо цей вид повідомлення на прикладі кадру 68 03 18 01 72 (тут і далі вміст кадру буде позначатися цифрами в шістнадцятковому обчисленні). Кадр відправляється від радіоприймача (ідентифікатор пристрою 68) до CD-чейнджеру (18) із запитом про стан (ідентифікатор повідомлення MSG ID = 01). CD чейнджер, якщо він є і справний, відповідає повідомленням, що підтверджує статус готовності (MSG ID = 02). Повний фрагмент відповідного кадру 18 04 FF 02 00 E1. Відповідь віщається всім в локальну мережу, так як адреса одержувача FF. Тут крім ідентифікатора повідомлення передаються додаткові дані — MSG DATA = 00. Якщо значення даних дорівнює 01, це означає що пристрій тільки включилося і це його перше повідомлення про готовність. Такий варіант діалогу спостерігається між багатьма блоками управління.

Управління відтворенням музичних треків, радіостанцій або зміна рівня гучності можливо як з рульового колеса так і з центральної консолі. Ці органи управління передають інформацію на радіоприймач з тієї ж I-bus. Повідомлення регулювання рівня гучності ідентифікується номером 32, а в даних міститься керуюча інформація. Нижче наведена структура цього повідомлення.



Дані складаються з одного байта, в якому синій біт відповідає за напрямок зміни рівня: 0 — збавити, 1 — додати. А зелені біти показують силу відносної зміни від 1 до 15 дискретних рівнів. Наприклад кадр, який при натисканні клавіші «+» на рульовому колесі, виглядає так 50 04 68 32 11 1F. Це повідомлення змушує радіоприймач збільшити гучність на 1 дискретний рівень. Якщо різко крутонуть баранчика управління гучності на центральній консолі за годинниковою стрілкою, то в шину буде відправлений кадр C0 04 68 32 91 0F. Тут мультиінформаційний дисплей повідомляє про вимогу збільшити гучність на 9 дискретних рівнів.

Для кнопкового управління характерні три види повідомлення: кнопка натиснута кнопка утримується тривалий час і кнопка відпущена. У даних повідомлення, крім стану кнопки, передається її ідентифікатор. Наприклад повідомлення з MSG ID = 3B означає, що передається інформація про зміну стану кнопок на рульовому колесі, відповідальних за управління радіоприймачем та телефоном. MSG DATA складається з одного символу і містить інформацію про кнопці, зазнала впливу.



В бітах синього кольору позначається кнопка. Якщо це 0-й біт, то вплив на кнопку «пошук вгору». Якщо 1-й біт, то кнопка «R/T». Якщо 3-й біт, то кнопка «пошук вниз». У бітової області зеленого кольору позначається стан кнопки. Якщо всі біти рівні 0, то це означає, що кнопка натиснута. Якщо 4-й біт дорівнює 1, то було тривале утримання кнопки. Якщо 5-біт дорівнює 1, то кнопка була відпущена. Розглянемо ситуацію, коли ми перемикаємо музичний трек на наступний при натисканні кнопки на кермі. В шину буде надіслано з невеликим інтервалом два кадру: 50 04 68 3B 01 06 та 50 04 68 3B 21 26. Перший кадр повідомляє, що була натиснута кнопка «пошук вгору». Другий повідомляє, що була відпущена кнопка «пошук вгору».

Для кнопкового управління на центральній консолі, будь то мультиінформаційний дисплей або бортовий монітор, підхід той же передається інформація про ідентифікатор кнопки та її стан. Але структура повідомлення побудована за іншим.

Тепер розглянемо в загальному як влаштована інформаційно-розважальна система на автомобілях e38, e39, e53. А саме та її частина, що відповідає за відтворення музики і радіо. На малюнку нижче я представив схематично пристрій цієї частини системи.



Центральну роль тут займає радіоприймач (RAD). Справа в тому, що крім функцій прийому ефірних станцій, цей блок виконує функції підсилювача. Якщо автомобіль не обладнаний бортовим монітором, то в корпусі радіоприймача розташовується касетний або CD-програвач. В такому варіанті він розташовується в центральній консолі. Якщо ж автомобіль укомплектований бортовим монітором, то радіоприймач розташований у багажному відділенні і дообладнаний аудіо входом для касетного програвача. Касетний плеєр вмонтований в бортовий монітор.

Акустична система може бути в трьох виконаннях: проста стереосистема, Hi-Fi або Top Hi-Fi. У першому випадку радіоприймач безпосередньо підключений до динаміків. В Hi-Fi акустичній системі динаміків більше і вони підключені до радіоприймача через додатковий підсилювач. Такий підсилювач крім підвищення потужності аудіо сигналу виконує функції активної еквалізації під автомобільну акустику і розділяє звук на діапазони для відповідних динаміків. Система top Hi-Fi ще крутіше. В ній крім всього вище перерахованого присутня сабвуфер, а силитель виконує эквализацию в залежності від швидкості автомобіля, тим самим компенсується гучність салону. Так само система доповнена ефектом об'ємного звучання.

Відображення інформації про обраному джерелі відтворення, номер треку, частоті радіостанції та інше, а також управління виконується на центральній консолі за допомогою бортового монітора або мультиинформационного дисплея або чогось ще. Щоб не відволікатися від керування автомобілем, управління відтворенням аудіо може бути виконано на багатофункціональному рульовому колесі (MFL), про який згадувалося вище.

CD-чейнджер (CDC) виконаний як доповнення до радіоприймача. Обмін керуючими командами і відповідями проводиться тільки між радіоприймачем та CD-чейнджером. Робиться це за I-bus, як вино на схемі. Аудіо сигнал в аналоговій формі передається на лінійний вхід радіоприймача, де підсилюється і надходить далі на акустичну систему. Якщо акустична система top Hi-Fi, то сигнал від CDC подається безпосередньо до підсилювача в цифровій формі.

Тепер розглянемо докладніше безпосередньо сам діалог CD-чейнджера і радіо по шині I/K-bus. Як було описано раніше, радіоприймач періодично надсилає запити про статус CD-чейнджера. Якщо такий присутній в автомобілі і він справний, то негайно в шину буде надіслано відповідь про присутність. Отримавши відповідь, радіоприймач формує в меню на центральній консолі додатковий режим відтворення, в якому джерелом є CD-чейнджер. Водієві залишається тільки натиснути відповідну кнопку, щоб радіоприймач запустив відтворення CD-чейнджера, отримав інформацію про завантаженому компакт диску, номер треку та відобразив цю інформацію на центральній консолі.

Управління відтворенням CD-чейндра виконується повідомленням з ідентифікатором MSG ID = 38. Структура повідомлення наступна:



Як видно, повідомлення просте за структурою та містить два ключових параметри: CMD і ARG. В CMD передається код необхідного режиму відтворення, а в ARG додаткові дані. Для наочності і простоти розуміння, нижче представлена таблиця, в яку зведено мені відомі команди:



Таким чином виконується управління CD-чейнджером, а той у свою чергу підтримує зворотний зв'язок повідомленнями з ідентифікатором 39:



В даному повідомленні передається стан CD-чейнджера і його режим відтворення. Більш детально про кожному символі повідомлення в наступній таблиці:



Слід зазначити, що є команди управління від радіоприймача, на які CD-чейнджер повинен відсилати негайна відповідь, як підтвердження прийняття команди, інакше команди будуть відправлятися по таймауту 500 мс повторно. До таких команд відносяться: «почати відтворення», «зупинити відтворення», «перемотування», «режим випадкового вибору треків» і «режим сканування треків». Отримавши команду з відповідним ідентифікатором CMD, CD-чейнджер на потрібний запит змінює індикатор стану і відсилає повідомлення радіоприймача. У разі команди «перемотування» індикатор залишається у режимі простого відтворення, тільки змінюється статус на «FAST FORWARD» або «REWIND». Радіоприймач заспокоюється, що команда успішно прийнята і перестає бомбити повторними повідомленнями.

Далі хочу привести лог трафіку I/K-bus, де до шини підключені три пристрої: мультиінформаційний дисплей, радіо і програмний емулятор CD-чейнджера. Цю просту мережу я зібрав у себе на столі, щоб проводити аналіз роботи взаємодії блоків управління і налагоджувати програмний CD-чейнджер.



Кольором тут виділені повідомлення управління CD-чейнджером і відповіді на них.
  • Жовтий — це переключення на попередній трек.
  • Зелений — включення і виключення перемотування
  • Синій — включення і виключення режиму твори треків у випадковому порядку.


Підводячи підсумок, хочу сказати, що застосувавши даний протокол на найпростішому програмно-апаратні рішення, можна «легально» вклинитися в штатну інформаційно-розважальну систему автомобіля. Як найпростіший приклад створити свій функціональний по сучасним мірками медіа програвач, який буде отримувати керівні команди з рульового колеса, центральній консолі і видавати звучання за штатною акустичної системі.

Испльзованные джерела:
  • Bus System Troubleshooting, 2001
  • I-BUS Inside, Franck Touanen, 2002
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.