jsyanzi 发表于 2023-6-26 15:26

HC32F4A0 CANFD BUSOFF 问题



今天调试HC32F4A0 CANFD通信是遇到问题,CANFD正常情况下能通信,然后测试异常BUSOFF功能发现:拔掉一根CAN线模拟发送错误,发现芯片会一直不断发送,不会进入BUSOFF状态。即使断点停止,也在不停往外发数据。查看寄存器发现发送错误计数器计到0x80后就不再增加查看芯片编程手册也发现一个不理解的地方:当发送错误大于255时,节点进入关闭状态,但发送错误寄存最大值是255。这就矛盾了,不知道我是什么地方没弄明白,才导CANFD致进入不了BUSOFF呢。

kensilong 发表于 2023-6-26 16:50

本帖最后由 kensilong 于 2023-6-26 16:52 编辑

当节点发生主动错误,同时没有收到ACK时,不会再增加TECNT。TECNT到了0x80的时候已经触发了错误被动ERRINT bit6置1了,这个在ISO11898 12.1.4.2章节有描述,协议规定的。

jsyanzi 发表于 2023-6-28 11:05

本帖最后由 jsyanzi 于 2023-6-28 11:10 编辑

kensilong 发表于 2023-6-26 16:50
当节点发生主动错误,同时没有收到ACK时,不会再增加TECNT。TECNT到了0x80的时候已经触发了错误被动ERRINT...
我把节点的CANL接地,测量节点的CANH会一直不停有信号发出,BusOff位没有置位。这种情况下节点都不会自己关闭?那不就会影响总线通信了。之前用其它的单片机CANL接地这类的情况,是会BusOff关闭CAN的。

Dick Hou 发表于 2023-6-28 15:41

本帖最后由 Dick Hou 于 2023-6-28 16:48 编辑

jsyanzi 发表于 2023-6-28 11:05
我把节点的CANL接地,测量节点的CANH会一直不停有信号发出,BusOff位没有置位。这种情况下节点都不会自己关 ...
如果是把MCU的tx或rx引脚拔掉,这种情况是会进busoff的。
如果把PHY的CANH或L断开,如二楼所说,不会进入busoff,会进入被动错误,数据仍然可以发,但不会有显式的错误帧。(如果PHY的终端电阻不接,则和第一种情况一样)

在ST上验证过。

MCU@Baize 发表于 2023-6-29 18:02

CAN是差分信号,CANL接地,如果CANH和CANL之间的压差仍然足以让PHY把信号返回到RX上,那么控制器是无法察觉CANL短接的。因此控制器不认为自己的包没发出去。如果CANH和CANL压差不足以让PHY把数据传回RX,TX和RX的信号对不上,控制器就会报错了哦。

淘宝店铺:白泽开发板
各类国产品牌MCU评估板(小华、GD、极海,持续更新中。。。。。。)
【淘宝】https://m.tb.cn/h.5aGeMF8?tk=Okj0ds6cghX CZ0001 「华大开发板,HC32F4A0SITB,核心板,国产,研发调试」
点击链接直接打开 或者 淘宝搜索直接打开

页: [1]
查看完整版本: HC32F4A0 CANFD BUSOFF 问题