请教大家关于STC32G12K128的CAN总线故障检测
本帖最后由 newlined 于 2024-5-25 10:13 编辑最近在用STC32G12K128做一个项目,用到了这个芯片的两个CAN口,CAN部分的程序基本是参照STC提供的例程做的,其中一个CAN口工作状态是每1毫秒接收一次数据,不定时发送一次数据,这个CAN口需要做故障检测,即这个CAN口有了故障,比如说这个CAN口对应的CAN收发器的电源正负短路了,两条CAN传输线短路了,CAN线的高与电源短路(我们发现CAN线的低与电源的地短路并不影响CAN的传输,我们现在想这样用,即CAN线的低与电源地用一条线,这样可以省出一条电缆)后需要产生故障告警,我原本想用1毫秒接收一次数据来做,接收不到数据就报错,或者需要检测故障时,发送一组特定数据,对方收到这个数据时,要回送一组特定数据,发送方收到后就会认为没有故障,收不到就产生故障告警,但这样有些麻烦,我看到手册,CAN有许多错误寄存器,能否通过读这些寄存器判断CAN口的故障?例程中没有找到这部分的应用,哪个寄存器最方便?就是发生上述故障时(不含CAN线的低与电源地短路)寄存器发生变化,故障消失后自动恢复,CAN口是否有故障直接读这个寄存器就可以,谢谢。
刚才测试了几个寄存器,在1mS中断中,发现在ISR/IACK中,当CAN总线故障时,BEI会每隔70几mS出现一个1mS的高电平,EWI、EPI两位一直是低电平,CAN总线恢复正常后,BEI这个高电平就消失了,准备按照这个标志做故障检测。按照我的理解总线故障时,BEI应该一直为高,好像哪里把它清零了,再计数多少次后又出现一个高电平。
页:
[1]