0б. Маршруты по темам: CAN и диагностика автомобиля
Маршруты А–Г из раздела 0 идут по частям справочника, маршрут новичка (0а) — к первому прибору. Здесь маршруты другого рода: задача уже есть, и нужно пройти все разделы одной темы по порядку, не собирая их по оглавлению.
Первый такой маршрут — Д: CAN и диагностика автомобиля. Тема разложена по справочнику широко: шина, надстройки над ней, файлы описания сообщений, стенд на компьютере и пять мини-проектов. По порядку она читается за десять шагов — от кадра на шине до своего блока, который живёт на шине наравне с заводскими.
Опоры: раздел 0 — уровни и платы (0.1, 0.2); если микроконтроллер ещё не в руках, сначала маршрут новичка (0а) или маршрут А (0.3) до UART и прерываний.
Как это называется в документации
Оригинал Перевод learning path маршрут: разделы по порядку под одну задачу silent mode (SILM) режим «только слушать»: узел не подтверждает кадры и не ставит кадры ошибок bus load загрузка шины: доля времени, занятая кадрами rest-bus simulation имитация остальных блоков шины на стенде
0б.1 Как идти по тематическому маршруту
Правила те же, что у маршрута новичка (0а.1): один шаг — один раздел, из раздела выносится столбец «Что вынести», а подразделы из «Что пока пропустить» откладываются до второго прохода.
Своё у тематического маршрута одно: машина — не первый стенд. Первые шесть шагов проходят на столе — две платы или плата и адаптер USB-CAN на коротком отрезке шины с двумя терминаторами. К машине прибор подключается на седьмом шаге, и первые подключения — только в режиме «слушать» (198с.2).
Уровень маршрута — средний → продвинутый: шина CAN (19), UDS (19д) и свой блок (198у) — продвинутые разделы, остальные семь — средние.
0б.2 Маршрут Д: CAN и диагностика автомобиля
Уровень маршрута: средний → продвинутый. Десять шагов: шина, расшифровка сообщений, стенд, первый прибор, диагностика в два слоя и три прибора для машины.
| Шаг | Раздел | Что вынести | Что пока пропустить |
|---|---|---|---|
| 1 | 19 | кадр и арбитраж, трансивер и два терминатора по 120 Ом, точка выборки около 87,5 %, фильтр приёма обязателен; режим самопроверки работает без трансивера | 19.7 ошибки и уход с шины — к шагу 10 |
| 2 | 19е | что такое DBC: сообщение, сигнал, множитель и смещение; порядок байт Intel и Motorola | 19е.3–19е.5: мультиплексор, счётчики и CRC, генератор кода — к шагам 9 и 10 |
| 3 | 19ж | стенд на компьютере: адаптер USB-CAN, SocketCAN, candump и cansend — компьютер становится узлом шины | 19ж.2–19ж.3: устройство gs_usb побайтно |
| 4 | 198е | первый прибор: сниффер SLCAN на F103, режим «только слушать», кольцо в прерывании; почему строки идут через UART, а не USB | 198е.6 сверка ядра с моделью |
| 5 | 19в | длинное сообщение поверх кадров по 8 байт: SF, FF, CF и управление потоком FC; тайм-ауты | 19в.4 адреса в машине и дополнение кадра |
| 6 | 19г | OBD-II: общий запрос 0x7DF и ответы 0x7E8…0x7EF, ответ = служба + 0x40, PID и формулы, коды ошибок; имитатор на STM32 — машина пока не нужна | 19г.5 ELM327 |
| 7 | 198р | сканер для машины: разъём и питание через защиту, фильтр на восемь адресов ответов, опрос по кругу | — |
| 8 | 19д | UDS: тот же путь, другой словарь — сеансы и TesterPresent, данные по DID, коды неисправностей, прошивка через диагностику на F407 | 19д.5 seed и ключ — при первом чтении достаточно идеи |
| 9 | 198с, 198т | приборная панель — только слушать, фильтр-список и сигналы по DBC; регистратор — метки времени, кольцо и запись на карту | один из двух — второй к повторному проходу |
| 10 | 198у | свой блок на шине: сообщение в DBC со счётчиком и CRC, свои коды неисправностей, отключение от шины, прошивка по шине | — |
Порядок держится на одном: каждый следующий шаг пользуется предыдущим. Сниффер (4) читает шину, расшифрованную по DBC (2), и проверяется на стенде (3); OBD-II (6) едет поверх ISO-TP (5); UDS (8) — поверх того же ISO-TP с тем же способом ответа и отказа; свой блок (10) собирает всё сразу: DBC, коды неисправностей, UDS и прошивку по шине.
0б.3 Что нужно на столе
- Шаги 1–6. BluePill и трансивер на 3,3 В (тот же, что в 198р.2), второй узел — адаптер USB-CAN из 19ж или вторая плата; отрезок витой пары и два терминатора по 120 Ом на концах. Машина не нужна: ответы дают имитатор 19г.6 и стенд 19ж.6.
- Шаг 7. Машина с разъёмом OBD-II и питание прибора от неё — через предохранитель и защиту от выбросов (198р.2, раздел 173).
- Шаги 8–9. Плата на F407: на ней загрузчик UDS (19д.6), приборная панель и регистратор (198с, 198т).
- Шаг 10. Свой блок собирается на F103 (198у.1); вариант на G474 с FDCAN в разделе только намечен (198у.8).
0б.4 Куда дальше: развилки после маршрута Д
- 19а — CAN FD: 64 байта в кадре и вторая скорость для данных — когда восьми байт и 1 Мбит/с мало.
- 19б — CANopen: промышленный протокол поверх CAN.
- 19и — J1939: CAN грузовиков и спецтехники.
- 19к — K-line: диагностика старых машин по UART.
- 19л — LIN: дешёвая шина кузовной электроники рядом с CAN.
- 19з — rusEFI: открытый блок управления двигателем, вся тема в одном настоящем изделии.
- 57в — силовая электроника под управлением по CAN.
0б.5 Грабли
Начать с машины. Узел с неверной скоростью на шине машины не молчит: он ставит кадры ошибок и мешает блокам. Сначала стенд (шаг 3) и имитатор (19г.6), в машине первые подключения — только в режиме «слушать» (0б.1).
Один узел на шине. Кадр без подтверждения повторяется без конца — одинокий узел не уходит с шины, а остаётся пассивным. Для отладки без второго узла есть режим самопроверки (19.7).
Ждать приёма без фильтра. Без явно настроенного фильтра bxCAN не принимает ничего (19.5).
USB и CAN на F103 одновременно. Они делят одну память и вместе недоступны (19.8) — поэтому сниффер отдаёт строки через UART (198е).
Путать OBD-II и UDS. Дорога одна — ISO-TP и тот же способ ответа и отказа, — а словарь разный: OBD-II — общий для всех машин, UDS — заводской (19д.1).
0б.6 Итоги
- Маршруты по темам — для того, у кого задача уже есть: разделы одной темы по порядку, правила чтения — как у маршрута новичка (0а.1).
- Маршрут Д — десять шагов: шина (19), DBC (19е), стенд (19ж), сниффер (198е), ISO-TP (19в), OBD-II (19г), сканер (198р), UDS (19д), панель или регистратор (198с, 198т), свой блок (198у).
- Уровень — средний → продвинутый; продвинутые шаги — 19, 19д и 198у.
- Шаги 1–6 проходят на столе, машина — с шага 7, и сначала только в режиме «слушать».
- После маршрута — семь развилок: 19а, 19б, 19и, 19к, 19л, 19з, 57в.
Дальше: раздел 0в «Маршруты по темам: от макета к изделию» — второй маршрут по теме: путь от работающего макета до прибора, который можно отдать в серию.