TI中文支持网
TI专业的中文技术问题搜集分享网站

F28377D CAN 发送数据长度问题

使用F28377D CAN进行通信,用的是C2000ware里的driverlib库C:\ti\c2000\C2000Ware_1_00_06_00\driverlib\f2837xd\driverlib,

用CAN_setupMessageObject(CANA_BASE, 1, 0x1, CAN_MSG_FRAME_STD,
                           CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_TX_INT_ENABLE,8);这个函数配置的MessageObject,此时数据长度配置为8,

在发送数据时用CAN_sendMessage(CANA_BASE, 1,6, txMsgData); 这个函数,希望输出数据长度为6,

但发现无论这个函数怎么配置,发送的数据都是8个,好像这个函数配置的长度不管用,请问是什么原因,我希望在程序里可以发送任意长度的数据,可以发送时设置,怎么实现?

Shine:请问有没有试过设置message object为6?
CAN_setupMessageObject(CANA_BASE, 1, 0x1, CAN_MSG_FRAME_STD,CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_TX_INT_ENABLE, 6)

使用F28377D CAN进行通信,用的是C2000ware里的driverlib库C:\ti\c2000\C2000Ware_1_00_06_00\driverlib\f2837xd\driverlib,

用CAN_setupMessageObject(CANA_BASE, 1, 0x1, CAN_MSG_FRAME_STD,
                           CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_TX_INT_ENABLE,8);这个函数配置的MessageObject,此时数据长度配置为8,

在发送数据时用CAN_sendMessage(CANA_BASE, 1,6, txMsgData); 这个函数,希望输出数据长度为6,

但发现无论这个函数怎么配置,发送的数据都是8个,好像这个函数配置的长度不管用,请问是什么原因,我希望在程序里可以发送任意长度的数据,可以发送时设置,怎么实现?

Charles Ji:

回复 Shine:

您好,我试过了,CAN_setupMessageObject设置成6,就发送6个字节,初始化设置成多少,后面就只能发送多长的数据, 发送函数CAN_sendMessage(uint32_t base, uint32_t objID, uint16_t msgLen,const uint16_t *msgData) 根本改变不了发送长度

使用F28377D CAN进行通信,用的是C2000ware里的driverlib库C:\ti\c2000\C2000Ware_1_00_06_00\driverlib\f2837xd\driverlib,

用CAN_setupMessageObject(CANA_BASE, 1, 0x1, CAN_MSG_FRAME_STD,
                           CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_TX_INT_ENABLE,8);这个函数配置的MessageObject,此时数据长度配置为8,

在发送数据时用CAN_sendMessage(CANA_BASE, 1,6, txMsgData); 这个函数,希望输出数据长度为6,

但发现无论这个函数怎么配置,发送的数据都是8个,好像这个函数配置的长度不管用,请问是什么原因,我希望在程序里可以发送任意长度的数据,可以发送时设置,怎么实现?

Shine:

回复 Charles Ji:

这两个设置的长度要一样。

使用F28377D CAN进行通信,用的是C2000ware里的driverlib库C:\ti\c2000\C2000Ware_1_00_06_00\driverlib\f2837xd\driverlib,

用CAN_setupMessageObject(CANA_BASE, 1, 0x1, CAN_MSG_FRAME_STD,
                           CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_TX_INT_ENABLE,8);这个函数配置的MessageObject,此时数据长度配置为8,

在发送数据时用CAN_sendMessage(CANA_BASE, 1,6, txMsgData); 这个函数,希望输出数据长度为6,

但发现无论这个函数怎么配置,发送的数据都是8个,好像这个函数配置的长度不管用,请问是什么原因,我希望在程序里可以发送任意长度的数据,可以发送时设置,怎么实现?

Charles Ji:

回复 Shine:

您的意识是,如果我想每次都发送不同长度的can帧,就必须这两个函数同时修改,才能发送是吗,这样效率是不是很低
CAN_setupMessageObject(uint32_t base, uint32_t objID, uint32_t msgID,CAN_MsgFrameType frame, CAN_MsgObjType msgType,uint32_t msgIDMask, uint32_t flags, uint16_t msgLen)

CAN_sendMessage(uint32_t base, uint32_t objID, uint16_t msgLen,const uint16_t *msgData)

赞(0)
未经允许不得转载:TI中文支持网 » F28377D CAN 发送数据长度问题
分享到: 更多 (0)