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

F29379D的CAN通讯问题

1、如何实现CAN通讯发送32位float型数据?库函数定义的是16位无符号整数

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

2、程序用can传递某个变量的值,该变量是总中断更新一次,如何实现数据段的更新?

把一下程序放在中断里,可以实现吗?

// Initialize the transmit message object data buffer to be sent
//
txMsgData=pi_pos.Fbk;

//
// Start CAN module A operations
//
CAN_startModule(CANA_BASE);

//
// Transmit messages from CAN-A
//

CAN_sendMessage(CANA_BASE, TX_MSG_OBJ_ID, MSG_DATA_LENGTH, txMsgData);

3、需要用到多个邮箱,是否重复一下程序即可?

CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID, 0x95555555,
CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_TX, 0,
CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);

// Initialize the transmit message object data buffer to be sent
//
txMsgData=pi_pos.Fbk;
//pi_id.fbk;

//
// Start CAN module A operations
//
CAN_startModule(CANA_BASE);

//
// Transmit messages from CAN-A
//
//while(1)
//
// Comment for infinite transmissions
//
//for(i = 0; i < TXCOUNT; i++)
//
//{
CAN_sendMessage(CANA_BASE, TX_MSG_OBJ_ID, MSG_DATA_LENGTH, txMsgData);

//

user6510059:

打错了,是F28379d的can通讯。

,

Susan Yang:

user6510059 说:1、如何实现CAN通讯发送32位float型数据?库函数定义的是16位无符号整数

您可以尝试将float转化为unsigned char类型的数据打包发送

user6510059 说:2、程序用can传递某个变量的值,该变量是总中断更新一次,如何实现数据段的更新?

没有太理解您的意思,能否详细说明一下?

user6510059 说:把一下程序放在中断里,可以实现吗?

可以的

user6510059 说:3、需要用到多个邮箱,是否重复一下程序即可?

是的,您的理解是正确的

,

user6510059:

谢谢,我去试试

,

Susan Yang:

期待您的反馈

,

user6510059:

已解决float型数据转换。程序如下:
//用union 类型,共用数据空间;
union change{float32_t a;uint16_t dat[2];}r1;
r1.a= svgen1.Ta;
//txMsgData只能保存1个字节的内容,是8位数据,因此用2个txMsgData分别保存r1.dat[0]的低8位和高8位txMsgData1[0]=r1.dat[0]&0xff;//low 8 bitstxMsgData1[1]=r1.dat[0]>>8;//high 8 bitstxMsgData1[2]=r1.dat[1]&0xff;//txMsgData1[3]=r1.dat[1]>>8;//

赞(0)
未经允许不得转载:TI中文支持网 » F29379D的CAN通讯问题
分享到: 更多 (0)