用STM32F3制作OBD-II读卡器

用STM32F3制作OBD-II读卡器,stm32,can-bus,keil,obd-ii,Stm32,Can Bus,Keil,Obd Ii,我开始用stm32f303k8和MCP2551收发器CAN总线制作自己的obd2读卡器。 为此,我从配置的CubeMX和使用Hal函数的Keil开始,但我仍然试图从汽车中获取数据。。直到我找到stm32f10x代码,该代码保留elm327函数并使用AT命令,但使用标准外设库创建 这是密码 现在我只想知道如何用stm32f3的hal库替换这段代码,因为ST删除了stm32f3的标准外设库 我可以在CMSIS库和Hal函数之间合并吗 我试图用hal库重建项目,并在代码中添加copy OBD.C,但我

我开始用stm32f303k8和MCP2551收发器CAN总线制作自己的obd2读卡器。 为此,我从配置的CubeMX和使用Hal函数的Keil开始,但我仍然试图从汽车中获取数据。。直到我找到stm32f10x代码,该代码保留elm327函数并使用AT命令,但使用标准外设库创建

这是密码

现在我只想知道如何用stm32f3的hal库替换这段代码,因为ST删除了stm32f3的标准外设库

我可以在CMSIS库和Hal函数之间合并吗


我试图用hal库重建项目,并在代码中添加copy OBD.C,但我认为我需要在Config.h中做一些更改,我将帮助您学习OBDII协议

首先,你应该知道你的车的ECU。 可能ECU不支持CAN端口(ISO 15765),因此您无法使用CAN读取ECU

你的ecu型号是什么

我建议你首先在多维数据集mx中构建一个项目,启用一个串口即可

然后启用CAN协议中断

在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总线。。我将尝试你的例子,看看序列中是否有数据。。我还想知道为什么在你的主要演讲中,你要求蓝牙和K线功能。。但是您不调用CAN函数吗?

您可以在OBDII.C上看到CAN函数 首先,src检测OBDII协议并初始化端口 之后,当您想要发送或接收OBDII数据时,src使用检测到的协议连接OBDII

因此CAN函数处于OBDII.C的低级别

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 
 ...