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

28377D的CAN通信查询方式接收不到数据

各位好!

目前我正在做28377D的CAN通讯,没有使用CAN中断,所有关于CAN中断的配置我都给屏蔽了,我是采用查询CANStatusGet(CANA_BASE, CAN_STS_CONTROL)函数来判断CAN处理器是否发送完一帧数据或者是接收完一帧数据。

邮箱配置如下:(按照28377D的例程来做的配置,记忆的不完整,大致明白我的配置就行)

SPDORxMsg.ID = 0x181;

SPDORxMsg.MASK = 0x00000FFF;

SPDORxMsg.Flag = MSG_OBJ_USE_ID_FITER;

SPDORxMsg.Lengh= sizeof(PDOMessage);

CANMessageSet(CANA_BASE, 8 ,&SPDORxMsg, MSG_OBJ_TYPE_RX);

在主机发送完数据后,循环执行以下程序:

PDORxStatus = CANStatusGet(CANA_BASE, CAN_STS_CONTROL);

if(PDORxStatus == CAN_STATUS_RXOK)

{

      CANMessageGet(CANA_BASE, 8 ,&SPDORxMsg, ture);

}

现在的问题是,我在进行PDO数据传输的时候,主机程序中通过查询CAN处理器的状态,可以检测到接收完一帧数据(从机发送的数据),然后我用CANMessageGet(CANA_BASE, 8 ,&SPDORxMsg, ture)函数,将接收到的数据读出,但是此时我检测不到接收的数据,我在接收寄存器CAN_IF2_DATA中没有看到数据,同时也检测过CANStatusGet(CANA_BASE,CAN_STS_NEWDAT)的状态,发现NEWDAT一直为0;

个人认为有可能是邮箱配置中的掩码设置有问题,我尝试过将掩码设置为0, 0x000007ff,都没有效果,另外一点就是可能对CANStatusGet()函数的理解有误,导致我接收不到数据。

我尝试过很多方法配置,但是总是可以检测到接收完一帧数据的信号,就是接收寄存器中没有数据,我可以确定总线上是有数据的,我用CAN分析仪观测的。

请各位帮忙解答一下,同时帮我普及一下CAN配置中ID掩码问题,以及CANStatusGet()的理解,谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » 28377D的CAN通信查询方式接收不到数据
分享到: 更多 (0)