最近在使用CAN实现两块DSP之间的通讯(一个主机,一个从机。主机给从机每隔1s发送一次数据,从机收到数据后会进入CAN中断,来读取数据并返回一个数据给主机。主机受到数据后也会进入相应中断里来接受数据)
但实测发现有以下两个问题:
1.发送频率。程序里是每隔1s通过调用ti的数据发送指令,来控制主机给从机发送数据。这样发送数据的频率应该很低。但通过示波器可以看到在1s间隔期间,总线上依然能读取到高频的数据传输信号。也就是发送一个数据后,就一直在自动发送了?
2.刚开始主机发给从机的数据,从机可以在中断中正确收到。但是多测试几次就发现,从机不再进入读取数据的中断了,自然也不会给主机返回数据。然而,主机那边,还是一直在发送数据,并且一直能读取到从机发送过来的数据。示波器观测CAN的传输线信号,会同时读取到主机发给从机的MSGID以及从机回给主机的MSGID。但通过旗标可以看到从机并未进入CAN在中断,自然也不会给主机发送数据。请问这种情况可能是什么原因呢?
3.在CAN的控制寄存器中,有一个自动重发配置位Disable Automatic Retransmission默认是使能的。是否有可能是因为从机一直在尝试重新发送数据?这种情况下,虽然没有进入从机的CAN中断来发送数据,但从机却通过这个Automatic Retransmission来实现重复发送数据了?