Skip to content

simulation of the response to the ELM327 request over the CAN bus using the Cyclone V FPGA

Notifications You must be signed in to change notification settings

hurisson/can_ebu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

can_ebu

can_ebu

Необходимое оборудование: FPGA - Cyclone V GX Stater Board, диагностический адаптер ELM 327 BT, модуль CAN-bus TJA 1050 , Android-смартфон, DSLogic U 2 Basic

Необходимое ПО: DSView, Quartus Prime 18.0 Standard Edition, Car Scanner Цель подготовки – убедиться в работоспособности модуля-приемопередатчика CAN-bus TJA 1050 , главной задачей которого является преобразование аналоговых уровней сигналов физической шины (CAN_H, CAN_L) в логические уровни (TX, RX).

Процедуры:

1) Установить на устройство Android приложение Car Scanner ELM OBD 2 для последующей
коммуникации адаптера с CAN-шиной
2) Установить на ПК специализированное ПО DSView, для анализа и расшифровки данных
CAN-шины
3) Установить САПР Quartus Prime 18.0 Standard Edition
4) Подключить стенд согласно рисунку и таблице, предложенных ниже:
ELM327: VCC Cyclone V: +12V
ELM327: GND Cyclone V: GND
ELM327: CAN_L TJA1050: CAN_L
ELM327: CAN_H TJA1050: CAN_H
Cyclone V: +3.3V TJA1050: VCC
Cyclone V: GND TJA1050: GND
Cyclone V PIN_T21: RX TJA1050: RX
Cyclone V PIN_D21: TX TJA1050: TX

После подключения стенда я буду анализировать пакет на CAN-шине – инициализация подключения между ELM 317 и электронным блоком управления автомобиля.

1) Подключение логического анализатора DSLogic U 2 Basic к выходу RX модуля TJA 1050
2) Включение питания FPGA
3) Инициализация подключения между ELM и смартфоном через приложение Car Scanner
(здесь используется Bluetooth)
  1. Инициализация подключения ELM и ЭБУ автомобиля через приложение Car Scanner
  2. Прослушивание траффика на RX с помощью логического анализатора На временной логической диаграмме, представленной ниже, я вижу запрос от ELM к ЭБУ. Идентификатор данного сообщения – 0 x 7 df (всегда запрос от ELM к ЭБУ – см. ISO15765). Скорость передачи 250kbit/s.

Поле ACK в данном кадре находится в рецессивном состоянии (логическая “1”) – что довольно-таки логично, так как подключенные устройства на CAN-шине отсутствуют и ELM не получает ответа от них.

Анализируя временной промежуток от поля признака старта передачи до поля признака ACK можно сказать, что он примерно составил 456 микросекунд.

Осуществлю имитацию ответа устройством. В качестве устройства выступает FPGA - Cyclone V GX, подключенное к портам RX и TX модуля TJA1050. RX - порт приема данных с ELM на FPGA, рецессивный во время простоя. TX – порт передачи данных с FPGA на ELM ( Данные порты не переименовываются на их сопоставимые в RTL-дизайне )

Частота работы FPGA составляет 50 MHz. При скорости 250 кбит/с - длительность передачи одного бита составляет 4 микросекунды ( 4000 наносекунд) или 200 тактов (1 такт – 20 наносекунд) для FPGA.

Признаком начала передачи является доминантный уровень (0) на линии сигнала RX.
Ловлю доминантный уровень и запускаю счетчик.
По наступлении 456 микросекунд выставляю доминантный ноль на линии TX.

Подключаю логический анализатор к линии CAN_L адаптера ELM и TX модуля TJA1050. Генерирую битстрим, прошиваю FPGA и заново инициализирую подключение смартфона и ELM327.

Как видно из времянок анализатора, ACK выставлен успешно.

После выставления ACK, адаптер ждет ответ на свой запрос, настроившись на прием. Так как мы выставили ACK, но не ответили полноценным кадром, ELM инициализирует повторный запрос с идентификатором 0 x 7 df по таймауту.

Чтобы передать полноценный ответ, я должен знать идентификатор и данные для передачи, для этого пришлось подслушать передаваемый трафик (ответ на запрос от ELM) с ЭБУ своего автомобиля Volkswagen.

Подключив в диагностический разъем автомобиля ELM-адаптер и инициировав подключение адаптера к ЭБУ, я смог получить ответ на запрос с помощью логического анализатора.

Запрос на подключение к ЭБУ (ID:0x 7 df, 500kbit/s)
Ответ на запрос от ЭБУ (ID:0x 7 e8, 500kbit/s – по стандарту ISO 15765 )

Теперь, имея идентификатор и получаемые данные от ЭБУ, я могу сымитировать данную передачу на FPGA.

Описание конечного автомата RTL для имитации ответа от ЭБУ:

Имитация передачи данных с ЭБУ: Как видно 0-порт логического анализатора, он же RX, перешел в доминантное состояние к концу нашей посылки, что означает – ELM принял ее.

Об успешном подключении нам сообщило приложение Car Scanner на смартфоне, указав при этом скорость соединения 250kbaud и протокол ISO 15765 - 4 CAN.

Вывод: модуль-приемопередатчик TJA 1050 работает корректно

About

simulation of the response to the ELM327 request over the CAN bus using the Cyclone V FPGA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published