создание OBD-II ридера с использованием STM32F3 - PullRequest
0 голосов
/ 05 июня 2019

Я начинаю делать свой собственный читатель obd2 с шиной CAN приемопередатчика stm32f303k8 и MCP2551. Для этого я начинаю с CubeMX для настройки и Keil, используя функции Hal, но я все еще пытаюсь получить данные из машины ... пока не нашел код stm32f10x, который переопределяет функцию elm327 и работает с AT Command, но создает со стандартной периферийной библиотекой ...

Вот код https://github.com/ARoozitalab/ELM327-OBDII-STM32

Теперь я хочу просто узнать, как заменить этот код библиотекой hal stm32f3, потому что ST удаляет стандартную периферийную библиотеку для stm32f3

.

Можно ли объединить библиотеки CMSIS и функции Hal?

Я пытался пересобрать проект с помощью библиотеки hal и добавить копию OBD.C в мой код, но я думаю, что мне нужно внести некоторые изменения в Config.h

Ответы [ 3 ]

1 голос
/ 06 июня 2019

я помогу вам с последовательностью выучить протоколы OBDII

в первую очередь, вы должны знать об ECU вашего автомобиля.может быть, этот ECU не поддерживает CAN-протокол (ISO 15765), и поэтому вы не можете прочитать свой eCU с помощью CAN

какая у вас модель ecu?

Сначала я предлагаю вам в cube mx создать проект, включите один последовательный и можете

, затем включите прерывание CAN protovcol

в обработчике прерываний CAN, используйте этот пример кода:

    CanRxMsg RxMessage;
    CanTxMsg TxMessage;
  /* receive */
  CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
        printf("idv: %u ",RxMessage.IDE);
        printf("exID: %04X ",RxMessage.ExtId);
        printf("ID: %03X ",RxMessage.StdId);
        printf("DLC: %02X ",RxMessage.DLC);

        printf("DATA:");
  for(i=0;i<RxMessage.DLC;i++) 
     { 

        printf(" %02X ",RxMessage.Data[i]); 

     }

        printf("\r\n");

этот код преобразует полученный массаж CAN вserial (ваша последовательная скорость передачи данных должна быть 115200) (и ваша скорость передачи CAN должна быть 500k), затем подключите плату к последовательному монитору на вашем ПК, вы увидите, что внутренняя машина отправляет приемный массаж, например:

idv: 0 exID: 80012CC ID: 43F DLC: 08 DATA: 00  40  60  FF  68  48  09  00 
idv: 0 exID: 80012CC ID: 580 DLC: 08 DATA: 00  00  00  00  00  00  00  00 
idv: 0 exID: 80012CC ID: 440 DLC: 08 DATA: FF  00  00  00  FF  47  09  00 
idv: 0 exID: 80012CC ID: 580 DLC: 08 DATA: 00  00  00  00  00  00  00  00 
idv: 0 exID: 80012CC ID: 545 DLC: 08 DATA: 80  47  00  8B  00  00  00  00 
idv: 0 exID: 80012CC ID: 690 DLC: 08 DATA: 00  00  00  00  00  00  0C  00 
idv: 0 exID: 80012CC ID: 7DF DLC: 08 DATA: 02  01  0C  00  00  00  00  00 
idv: 0 exID: 80012CC ID: 7E8 DLC: 08 DATA: 04  41  0C  09  C8  00  00  00 
idv: 0 exID: 80012CC ID: 545 DLC: 08 DATA: 80  00  00  8A  00  00  00  00 
idv: 0 exID: 80012CC ID: 580 DLC: 08 DATA: 00  00  00  00  00  00  00  00 
idv: 0 exID: 80012CC ID: 440 DLC: 08 DATA: FF  00  00  00  FF  4D  09  00 
idv: 0 exID: 80012CC ID: 580 DLC: 08 DATA: 00  00  00  00  00  00  00  00 
idv: 0 exID: 80012CC ID: 545 DLC: 08 DATA: 80  00  00  8C  00  00  00  00 
idv: 0 exID: 80012CC ID: 440 DLC: 08 DATA: FF  00  00  00  FF  4F  09  00 
idv: 0 exID: 80012CC ID: 580 DLC: 08 DATA: 00  00  00  00  00  00  00  00 
idv: 0 exID: 80012CC ID: 440 DLC: 08 DATA: FF  00  00  00  FF  52  09  00 
idv: 0 exID: 80012CC ID: 545 DLC: 08 DATA: 80  00  00  8A  00  00  00  00 
idv: 0 exID: 80012CC ID: 580 DLC: 08 DATA: 00  00  00  00  00  00  00  00 
idv: 0 exID: 80012CC ID: 690 DLC: 08 DATA: 00  00  00  00  00  00  10  00 
idv: 0 exID: 80012CC ID: 7DF DLC: 08 DATA: 02  01  0C  00  00  00  00  00 
idv: 0 exID: 80012CC ID: 329 DLC: 08 DATA: 86  BD  6B  10  11  20  00  14 
idv: 0 exID: 80012CC ID: 7E8 DLC: 08 DATA: 04  41  0C  09  DC  00  00  00 
 ...
0 голосов
/ 08 июня 2019

вы можете видеть функции CAN на OBDII.C на первом src, обнаруживать протоколы OBDII и инициировать порт после этого, когда вы хотите отправить или получить данные OBDII, src использует обнаруженный протокол для подключения OBDII

, поэтомуФункции CAN находятся на низком уровне OBDII.C

0 голосов
/ 07 июня 2019

Большое спасибо за ваш ответ!Я уверен, что моя машина имеет CAN-BUS. Я попробую ваш пример, чтобы увидеть, есть ли данные в последовательном. Я хочу знать также, почему в вашем Main.C вы вызываете Bluetooth и K-Line Function ..но вы не вызываете функцию CAN?

...