MCU通过SPI与TCAN4550交互,配置好后,定时发送CAN包。
但发现,在CAN链路上没有任何其他CAN设备时,即无CAN接收设备的情况下,MCU启动后发送第一个CAN包,TCAN4550的中断状态位一直显示没有TX EVENT。
MCU的逻辑是需要在发送CAN包后,收到TX EVENT才认为发送结束,才会发送下一个CAN包,所以这导致定时的发送不再继续进行。
另外,我们也尝试了取消收到TX EVENT才继续发送的逻辑,直接定时发送CAN包,发现所有CAN包都没有TX EVENT。
如果没有TX EVENT,我们将不知道是否可以进行下个包的发送。另外,在这种场景下,TCAN4550会频繁发生MCAN中断,MCU需要频繁地处理中断,操作SPI,占用MCU的CPU时间,这影响了我们MCU上其他业务的运行。我们进一步查看,频繁来的中断指示有PEA。即使我们只在开机后发1个CAN包,后续不再发,PEA中断也会频繁的发生,这需要处理的频繁中断消耗了不小的CPU时间,影响到了MCU上其他业务的运行。
因此想请教3个问题:
- 为何在发送CAN包后无TX EVENT?我们曾同样在链路上无CAN接收设备的情况下发送CAN包,用同样的固件,曾经是有过TX EVENT的。
- 如果没有TX EVENT,我们如何能知道CAN包已发送结束?
- 如果在运行过程中发生了上述无TX EVENT的情况,MCU如何去辨别它,如何避免需要频繁处理中断而导致影响其他业务的问题?