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.

TMS320F280049: CAN通讯的问题。

Part Number: TMS320F280049

 你好:

关于我们的项目,两个问题,目前我们这个项目是从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)

    下图是两者的基本区别,也请参考一下

  • 如果有和ECAN意义相同的标志位,我们就计划仍然使用原来的逻辑,如果没有,就可能需要调整软件逻辑,多谢

  • 目前使用的CAN_ES_TXOK和CAN_ES_RXOK,若是不能满足您的需求,就只能自己再修改代码了

x 出现错误。请重试或与管理员联系。