各位好!
目前我正在做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()的理解,谢谢!
TI中文支持网



