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

F280049 CAN如何查询方式发送

F280049CAN通信用中断方式接收,很稳定。想用查询方式发送减少中断次数。

配置了四个MSG_OBJ为发送,发送前先查询哪个MSG_OBJ空闲,哪个空闲就用哪个发送。

现在的问题是,怎么查询哪个MSG_OBJ是空闲的。

查询状态的drivlib函数只有CAN_getStatus(CANA_BASE),但是这个好像不行。

谢谢!!

Susan Yang:

您可以查询CANES寄存器中的TXOK位。

有关示例,请参见应用程序报告中的CAN_EX4_SIMPLE_TRANSMIT项目。下面的代码段:

 //// Comment for infinite transmissions////for(i = 0; i < TXCOUNT; i++)//{CAN_sendMessage(CANA_BASE, TX_MSG_OBJ_ID, MSG_DATA_LENGTH, txMsgData);//// Poll TxOk bit in CAN_ES register to check completion of transmission//while(((HWREGH(CANA_BASE + CAN_O_ES) & CAN_ES_TXOK)) !=CAN_ES_TXOK){}}//

例程是2837XD的,路径为 C2000Ware_3_03_00_00\driverlib\f2837xd\examples\cpu1\can

user4675816:

回复 Susan Yang:

TXOK只是指示Cana有一个帧发出去了吧。同时往多个TX_MSG_OBJ里面放了数据。TXOK并不能指示哪个TX_MSG_OBJ的数据已经发出去了。

比如规划了0,1,2,3四个MSG_OBJ为发送邮箱。某一时刻同时有多个发送需要,往0,1,2,3里面分别放了电压、电流、温度,工作状态等

把四个发邮箱都用到了,这种情况任意一个邮箱发送成功TX_OK就已经置位了。此时又来了个发送需求,这时候就要查询0,1,2,3哪个是空闲的,哪个正忙。

查询TX_OK是不够的。

赞(0)
未经允许不得转载:TI中文支持网 » F280049 CAN如何查询方式发送
分享到: 更多 (0)