TI中文支持网
TI专业的中文技术问题咨询交流网站

280049 CAN接收帧数据长度怎么获取

280049,CAN接收每一帧数据时,哪个寄存器里能同时得到这一帧数据的字节长度?

谢谢。

Green Deng:

这个还得看具体你的邮箱设置是什么样的,就例程中提供的配置而言,接收的长度可以参考:

// Initialize the receive message object used for receiving CAN messages.// Message Object Parameters://Message Object ID Number: 2//Message Identifier: 0x1234//Message Frame: Standard//Message Type: Receive//Message ID Mask: 0x0//Message Object Flags: None//Message Data Length: 2 Bytes//CAN_setupMessageObject(CANA_BASE, 2, 0x1234, CAN_MSG_FRAME_STD,CAN_MSG_OBJ_TYPE_RX, 0, CAN_MSG_OBJ_NO_FLAGS,MSG_DATA_LENGTH);

Aiden:

回复 Green Deng:

我的接收邮箱配置,
// Initialize the receive message object used for receiving CAN messages.
//Message Object Parameters:
//Message Object ID Number: 11
//Message Identifier: 0x234
//Message Frame: Standard
//Message Type: Receive
//Message ID Mask: 0x0
//Message Object Flags: None
//Message Data Length: 8 Bytes
CAN_setupMessageObject(CANA_BASE, RX_OBJ_CAN_SWITCH, RX_MSGID_CAN_SWITCH,CAN_MSG_FRAME_STD, CAN_MSG_OBJ_TYPE_RX, 0,CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);

我的问题是,发送方发送CAN帧的Data Length不是固定为8Bytes,每次发送的字节数是不同的。对于接收方,我怎么获取每次接收到的帧的Data Length。

Green Deng:

回复 Aiden:

应该没有这样的寄存器。你可以考虑将接收到的帧读取出来,然后自己设计一个计算帧长度的程序,间接地获得接收帧的长度。

Aiden:

回复 Green Deng:

把接收到的帧读取出来,也没有方法计算帧的长度,因为帧里的数据是随机的。而且协议是标准的,不能在数据里增加特定的标识。同行业的其他芯片是可以读取到数据长度啊,我觉得TI的应该也有啊。

Green Deng:

回复 Aiden:

这样吧,我再问问其他工程师,看看有没有对应的寄存器或者其他的方法吧

Green Deng:

回复 Aiden:

你好,确实IF1MCTL寄存器中的DLC字段可以看到数据长度。
另外,初始化该字段确实没什么意义。

赞(0)
未经允许不得转载:TI中文支持网 » 280049 CAN接收帧数据长度怎么获取
分享到: 更多 (0)