STM32 CAN如何通过PGN来过滤数据
如图:已知了PGN,怎样才能过滤我想要的数据
CanRxMsg RxMessage;//定义一个接收CAN数据的变量
u8 can_rx_data;
RxMessage.StdId=0x00;
RxMessage.IDE=CAN_ID_STD;
RxMessage.DLC=0;
if(CAN_MessagePending(CAN_FIFO0))
{
CAN_Receive(CAN_FIFO0,&RxMessage);
if(XXXXXX == 0x00F601)//XXXXX表示一个关键的代码,我不知道是什么,但我想应该跟RxMessage有关,我想通过这个PGN的判断来得到我想要的数据,我该怎么做,求各位大神指点迷津,小弟感激不尽!!!!!
{
for(i=0;i < RxMessage.DLC;i++)
{
can_rx_data = RxMessage.Data;
}
}
}
RE:STM32 CAN如何通过PGN来过滤数据
这是J1939协议的解析,根据协议规定的CANID内容解析出PGN数据,然后比较就可以了。:D这是J1939中文标准中的一部分,其中有关于如何在PDU中解析PGN的方法,供楼主参考吧
RE:STM32 CAN如何通过PGN来过滤数据
1、CAN数据接收放入缓冲区2、从缓冲区中读取到CAN数据,如果是要ID匹配就判断ID,如果是要PGN匹配就截取PGN。
RE:STM32 CAN如何通过PGN来过滤数据
为了过滤出一组标识符,应该设置过滤器组工作在屏蔽位模式。为了过滤出一个标识符,应该设置过滤器组工作在标识符列表模式。
页:
[1]