标题:
有关CAN 通讯扩展帧和多ID问题求助
[打印本页]
作者:
0711zhao
时间:
2022-4-23 10:20
标题:
有关CAN 通讯扩展帧和多ID问题求助
在学习CAN的时候发现这个例程是用标准帧、回环模式,但是我需要改成扩展帧和多ID,看到手册上说改IDE这个配置可以改成扩展帧,就是这个代码 CAN_TxMessages[0].IDE = CAN_ID_STD; //设置为标准帧ID 此处可以改成扩展帧ID
但是除此之外还要怎么改?
uint8_t i = 0;
/* Init Transmit frame初始化发送帧*/
CAN_TxMessages[0].StdId = CAN_TX1_SID; //标准识别符
CAN_TxMessages[0].IDE = CAN_ID_STD; //设置为标准帧ID 此处可以改成扩展帧ID
CAN_TxMessages[0].RTR = CAN_RTRQ_DATA; // 数据帧
CAN_TxMessages[0].DLC = CAN_TXDLC_8; // 数据为8
for(i=0;i<CAN_TXDLC_8;i++)
{
CAN_TxMessages[0].Data[i]=CAN_Tx_Frame1_Data[i];
}
CAN_TxMessages[1].ExtId = CAN_TX2_EID;//扩展帧标识符
CAN_TxMessages[1].IDE = CAN_ID_EXT;//设置成扩展帧
CAN_TxMessages[1].RTR = CAN_RTRQ_DATA;
CAN_TxMessages[1].DLC = CAN_TXDLC_8;
for(i=0;i<CAN_TXDLC_8;i++)
{
CAN_TxMessages[1].Data[i]=CAN_Tx_Frame2_Data[i];
}
这代码是不是说CAN_TxMessages[0].为标准帧 而 CAN_TxMessages[1].为扩展帧?
然后要是改扩展帧的话过滤器试试不是也要改?
uint8_t Check_CANRxMessage(CanRxMessage* RxMessage) //检查CAN接收消息
{
// 如果 接收消息是标准帧 与 接收消息不是发送CAN_TX1标准帧ID 或
// 接收消息是扩展帧 与 接收消息不是发送CAN_TX2扩展帧ID
if ( ((RxMessage->IDE == CAN_ID_STD) && (RxMessage->StdId != CAN_TX1_SID)) ||
((RxMessage->IDE == CAN_ID_EXT) && (RxMessage->ExtId != CAN_TX2_EID)) \
) return FAILED; //返回0
// 接收消息数据帧不是发送的数据 返回0
if ( RxMessage->RTR != CAN_RTRQ_DATA) return FAILED;
// 接收消息数据长度不是发送的数据长度 返回0
if ( RxMessage->DLC != CAN_TXDLC_8) return FAILED;
// 接收消息数据0位不是0x01 与 接收消息数据0位不是0x08 或
if ( ( (RxMessage->Data[0] != 0x01) && (RxMessage->Data[0] != 0x08) ) ||\
( (RxMessage->Data[1] != 0x02) && (RxMessage->Data[1] != 0x07) ) ||\
( (RxMessage->Data[2] != 0x03) && (RxMessage->Data[2] != 0x06) ) ||\
( (RxMessage->Data[3] != 0x04) && (RxMessage->Data[3] != 0x05) ) ||\
( (RxMessage->Data[4] != 0x05) && (RxMessage->Data[4] != 0x04) ) ||\
( (RxMessage->Data[5] != 0x06) && (RxMessage->Data[5] != 0x03) ) ||\
( (RxMessage->Data[6] != 0x07) && (RxMessage->Data[6] != 0x02) ) ||\
( (RxMessage->Data[7] != 0x08) && (RxMessage->Data[7] != 0x01) ) \
) return FAILED;//返回0
return PASSED;//返回1
}
就是这个函数吗?
恳请大佬指点下 在这个例程上要改成扩展帧的话要改那几个代码?
作者:
0711zhao
时间:
2022-4-23 10:21
多ID的话该怎么配置?
作者:
vimli
时间:
2022-4-24 07:08
你说的是CAN接收过滤吧,库函数说明就有
作者:
vimli
时间:
2022-4-24 07:10
同样接收也可以用用户数据处理来做逻辑实现的,只不过处理的数据多点
作者:
SDDQ
时间:
2022-4-24 09:20
发送和接收都得是一样的,发送寄存器是标准帧,接收寄存器也得是标准帧,反之同理
作者:
0711zhao
时间:
2022-4-24 10:50
SDDQ 发表于 2022-4-24 09:20
发送和接收都得是一样的,发送寄存器是标准帧,接收寄存器也得是标准帧,反之同理
我也是这样改的 但是测试的话说失败啦
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1