Досліджуємо CAN шину авто

Працювати напряму із CAN шиною авто без практичного досвіду трохи небезпечно, тому попробуємо запустити частину блоків “на столі”.

CAN двожильна мережа (вита пара), де кожен можу починати говорити. На рівні HW реалізований захист від колізій (із врахуванням пріоритету – чим менший ідентифікатор тим він першим відправиться). Розглянемо першу версію яка працює із 11 бітним ідентифікаторами повідомлення (2048 комбінацій). І стандартною довжиною даних 8 байт.

Важливий біт RTR (Remote Transmition Request): 0 – Data Frame (можна рахувати як повідомлення всім), 1- Remote Frame (запит інформації).

Гарний навчальний канал Eugene Irimia, де детально розказано про CAN.

В шафці находимо автомодуль для експериметів Front Controls Display Interface Module (FCDIM) DM5T-18B955-AA або як називають “калькулятор” з пакету РП32.

Розібравши екран по розєму зразу видно який пін за що відповідає.

Процесор MC9S12XHZ512, трансівер CAN TJA1040, LIN TJA1020, DC-DC V8675-50. Усі SMD копоненти посаджені на клей, перехідні отвори герметизовані.

Підключатися для початку будемо ELM327. Мережа запустилася і без термінаторів на 120 ом. Підключаємося через термінал і даємо команди, ресет модуля:

AT Z

Модуль сидить на MS-CAN, виставляємо протокол CAN 11bit 500 kbit:

AT SP 6

Включемо відображення заголовків

AT H1

В документації AsBuilt находимо адресу модуля 7A5, виставляємо заголовок з яким ID будемо стати дані (фільтр пакетів покищо не будемо налаштовувати):

AT SH 7A5

і попробуємо відправити 1 байт x01. При відсутності пакетів у шині даних модуль через 3 секунди глибоко засинає, тому на перший пакет може не бути відповіді, і модуль його ігнорить.

>01
NO DATA
>01
7AD 03 7F 01 11
>

Як бачимо нам прийшла відповідь із ідентифікатором 7AD, довжина даних 03 байти, но бачимо що прийшло 7F що означає помилку, і байт команди яку ми відправили. 11 – сервіс не підтримується (на 10 прийшло 13). Із ISO 14229 отримуємо коли відповідей. Перебором можна найти усі можливі відповіді.

0x11 serviceNotSupported
0x12 subFunctionNotSupported
0x13 incorrectMessageLengthOrInvalidFormat
0x14 responseTooLong

на 1001 приходить 7AD 06 50 01 00 32 01 F4

В інтернеті найдено опис подібного проекту FoDiMoCo – Ford display module (FDIM) controller де описується, щоб екран відображав інформацію потрібно слати пакети із ідентифікаторами 0x50c (10 Hz) і 0x3e8 (1 Hz). Щоб забезпечити таку кількість пекетів потрібний CAN-Hacker.

В групі переслали печатку плату CANable STM32F042x6 (STM32F042C6T6) & MCP2551 & AP2202K. Якщо комусь треба поділяся друкованою платою.

На алі було куплено платки MCP2551 ($1).

Також для зручності комутування купив роз’єм OBD мама із виводом всіх контактів на алі ($3), а також конектор папа на алі ($1.5).

TBD

Застереження: усе що ви робите із своїм авто є Ваша відповідальність. Дуже багато адреналіну дає така ілюмінація на авто:

Коментарі