请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TMS320F2.8379万D 您好,
我正在尝试使用IF3寄存器检索新收到消息中的数据字节。 代码轮询CAN_IF3OBS寄存器中的IF3Upd位,查看IF3数据寄存器是否已使用新消息进行更新。 我已经为消息对象1设置了IF3更新启用寄存器,但没有在CAN_IF3OBS寄存器中设置任何观察标志,因此不需要DMA。 以下是与该问题相关的代码片段:
CanbRegs.CAN_IF3OBS.ALL = 0;
CanbRegs.CAN_IF3UPD = 1;
…
同时(!CanbRegs.CAN_IF3OBS.bit.IF3Upd){;}
tmp1 = CanbRegs.CAN_IF3DATA.ALL;
tmp2 = CanbRegs.CAN_IF3DATB.ALL;
…
通过CCS 6.2 ,我可以看到每次向邮箱1发送消息时,IF3数据寄存器确实会正确更新,但IF3Upd位从未设置(始终为0)。 因此,轮询永远不会起作用,代码就会被卡住。 这是否是使用IF3的正确方式? 除此问题外,可以正常工作。 它可以发送和接收讯息,并且可以使用IF2寄存器和轮询CAN_NDAT_21检索收到的讯息。
谢谢!
SU