This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好:
关于我们的项目,两个问题,目前我们这个项目是从28035迁移到280049,使用obj1,通过ID filter接收两个协议号的数据,obj4和obj5发送各自的协议号。
在原来的逻辑中,通过收到数据触发第一帧恢复,剩下的存到缓存区,在主循环中通过判断ECanaRegs.CANTA.bit.TA5 = 1来判断第一帧发送完成,判断发送完成以后首先将该位清零,发送缓存中的数据,直到缓存中的数据发送完成。
在DCAN的寄存器中就找打了CAN_ES.TxOk但是感觉这个无法区分两个obj,找到CAN_TXRQ_21.TxRqst,认为这个标识的是这个obj里面内容等待发送
所以我想问ECanaRegs.CANTA.bit.TA5在DCAN中有对应的标志位吗?多谢。
关于接收,之前通过ECanaRegs.CANRMP.bit.RMP1 = 1来判断有数据接收,有数据之后首先清除该标志位,然后读取寄存器中的数据。目前计划通过(HWREG_BP(CANA_BASE + CAN_O_NDAT_21)) == 0x00000001来进行数据接收的判断,CAN_readMessageWithID来读取寄存器数据。我觉得这两个判断的意义是一样的,但是在Table4-2 eCAN-DCAN Registers and Bit Equivalence中并没有找打这两个标志是等效的,所以我想问一下这两个数据是否等效,多谢
所以我想问ECanaRegs.CANTA.bit.TA5在DCAN中有对应的标志位吗?多谢。
例程中使用的是
//
// 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)
{
}
您可以看一下是否可以使用 NewDat的值来判断?
数据接收的判断
在例程中使用的是
//
// Poll RxOk bit in CAN_ES register to check completion of Reception
//
if(((HWREGH(CANA_BASE + CAN_O_ES) & CAN_ES_RXOK)) == CAN_ES_RXOK)
下图是两者的基本区别,也请参考一下