使用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)