找回密码
 立即注册
查看: 306|回复: 1

请教大家关于STC32G12K128的CAN总线故障检测

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-01 00:57:45

35

主题

189

回帖

829

积分

高级会员

积分
829
发表于 2024-5-25 08:47:52 | 显示全部楼层 |阅读模式
本帖最后由 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口是否有故障直接读这个寄存器就可以,谢谢。







回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-01 00:57:45

35

主题

189

回帖

829

积分

高级会员

积分
829
发表于 2024-5-25 14:35:56 | 显示全部楼层
刚才测试了几个寄存器,在1mS中断中,发现在ISR/IACK中,当CAN总线故障时,BEI会每隔70几mS出现一个1mS的高电平,EWI、EPI两位一直是低电平,CAN总线恢复正常后,BEI这个高电平就消失了,准备按照这个标志做故障检测。按照我的理解总线故障时,BEI应该一直为高,好像哪里把它清零了,再计数多少次后又出现一个高电平。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 23:27 , Processed in 0.115552 second(s), 51 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表