打印
[技术问答]

HC32F4A0 CANFD BUSOFF 问题

[复制链接]
1143|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jsyanzi|  楼主 | 2023-6-26 15:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


今天调试HC32F4A0 CANFD通信是遇到问题,CANFD正常情况下能通信,然后测试异常BUSOFF功能发现:拔掉一根CAN线模拟发送错误,发现芯片会一直不断发送,不会进入BUSOFF状态。即使断点停止,也在不停往外发数据。

查看寄存器发现发送错误计数器计到0x80后就不再增加

查看芯片编程手册也发现一个不理解的地方:当发送错误大于255时,节点进入关闭状态,但发送错误寄存最大值是255。这就矛盾了,不知道我是什么地方没弄明白,才导CANFD致进入不了BUSOFF呢。



4244364993cd5e87a1.png (50.32 KB )

4244364993cd5e87a1.png

使用特权

评论回复
沙发
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上验证过。

使用特权

评论回复
5
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,核心板,国产,研发调试」
点击链接直接打开 或者 淘宝搜索直接打开

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝