Протокол керування КД-чейнджером

Продовжуємо розпочате. Цього разу я розповім про те, що міститься в корисному навантаженні кадру 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) до КД чейнджера (18) із запитом про стан (ідентифікатор повідомлення MSG ID = 01). КД чейнджер, якщо він є і справний, відповідає повідомленням, що підтверджує статус готовності (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). Справа в тому, що крім функцій прийому ефірних станцій, цей блок виконує функції підсилювача. Якщо автомобіль не обладнаний бортовим монітором, то в корпусі радіоприймача розташовується касетний або КД програвач. У такому варіанті він розташовується в центральній консолі. Якщо ж автомобіль укомплектований бортовим монітором, то радіоприймач розташовується в багажному відділенні і дообладнаний аудіо входом для касетного програвача. Касетний програвач вмонтований в бортовий монітор.

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

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

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

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

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

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

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

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

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

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

Кольором тут виділені повідомлення управління CD-чейнджером і відповіді на них.

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

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

Спльзовані джерела:

  • Bus System Troubleshooting, 2001
  • I-BUS Inside, Franck Touanen, 2002