[STM32G4] 多路CAN共同工作异常

[复制链接]
 楼主| Hufei1994 发表于 2024-9-10 18:11 | 显示全部楼层 |阅读模式
大家好,
最近使用STM32G431做了个项目,项目上需要需要使用六个控制器,主机为连接PC的CAN盒,六个控制器为从机(除了ID不一致外其他配置完全一样),反馈自己的状态和接受主机的指令
总线上配置了俩个120R电阻,分别在CAN盒上和CAN总线末端。每个控制器的CANH和CANL加了47pF的对地电阻
CAN信号的反馈周期为100ms,总线负载率在1%以下,波特率为1M

现象:
1. 当六个控制器同时上电时,CAN盒刚开始只能收到三个控制器反馈的信号,然后等约一分钟后收到第四个,在等几分钟后陆续收到第五个,第六个。
2. 只对延时较大的控制器单独测试,总线上只挂一个存在延时的控制器,上电瞬间CAN盒就能收到该控制器反馈的信号


六个控制器几乎完全一样,我的理解正常状态是上电一瞬间CAN盒应该同时收到六个控制器的反馈信号,目前的状态是延时很久才能陆续收到,并且收到后不存在某个控制器掉线
没搞明白问题出在哪里,请各位有空指点一下

CAN配置.png
probedog 发表于 2024-9-11 15:01 | 显示全部楼层
电源上电顺序不一致或者是不稳定?
laocuo1142 发表于 2024-9-11 15:02 | 显示全部楼层
电阻要正确连接,并且没有其他额外的电阻或并联电路干扰。
 楼主| Hufei1994 发表于 2024-9-11 16:27 | 显示全部楼层
probedog 发表于 2024-9-11 15:01
电源上电顺序不一致或者是不稳定?

一个电源供电的,肯定是同时上电
 楼主| Hufei1994 发表于 2024-9-11 16:30 | 显示全部楼层
补充一下,
使用示波器抓CANH和CANL信号,信号质量没问题
用示波器对信号解码,发现是控制器确实没发出来
微信图片_20240911162942.jpg
微信图片_20240911162923.jpg
flycamelaaa 发表于 2024-9-11 16:49 | 显示全部楼层
检查每个控制器的CAN初始化代码,确保波特率、时钟源、工作模式等设置完全一致,并且符合CAN盒的配置。
Dick Hou 发表于 2024-9-12 08:22 | 显示全部楼层
6个控制器是按什么规则发送的?互相之间有时间上的同步关系吗?
 楼主| Hufei1994 发表于 2024-9-12 09:07 | 显示全部楼层
Dick Hou 发表于 2024-9-12 08:22
6个控制器是按什么规则发送的?互相之间有时间上的同步关系吗?

一上电到了发送周期就开始往总线发消息,没有做同步什么的
 楼主| Hufei1994 发表于 2024-9-12 09:07 | 显示全部楼层
Dick Hou 发表于 2024-9-12 08:22
6个控制器是按什么规则发送的?互相之间有时间上的同步关系吗?

一上电到了发送周期就开始往总线发消息,没有做同步什么的
dukedz 发表于 2024-9-12 09:23 | 显示全部楼层
can 盒和各节点之间共地没?!
shenxiaolin 发表于 2024-9-12 09:25 | 显示全部楼层
上次遇到一个现象,有些国产晶振在PLL的时候没法锁频,导致时钟初始化的时候要等十多秒,不知道你的响应慢会不会是这个原因。
Dick Hou 发表于 2024-9-12 09:33 | 显示全部楼层
有没有开启自动重发功能?

6个控制器没有同步的话,有一定的概率起始的时候会同时发送,这个时候会按ID优先级来进行仲裁。优先级高的会发送成功,其它仲裁失败的要等到帧间隔后重发,如果没有开启自动重发,就不会发了。
czq2317 发表于 2024-9-12 10:27 | 显示全部楼层
1.要先看你的时钟源有多大误差。
2.要看你的CAN网络拓扑,看你的120欧姆用得对不对。
3.看看勘误手册CAN模块是否有注意事项。
cooldog123pp 发表于 2024-9-12 11:06 | 显示全部楼层
是6个控制器一路CAN?你说的同时收到肯定是不现实的,至少是前后,can总线也会阻塞的要看下你的重发机制,竞争机制。
LOVEEVER 发表于 2024-9-12 15:25 | 显示全部楼层
目前知道可能2个原因,一个是线缆连接节点问题,另外一个就是上电程序的问题
呐咯密密 发表于 2024-9-12 16:53 | 显示全部楼层
同时响应不会发生总线抢占吗,从机做分时呢
 楼主| Hufei1994 发表于 2024-9-12 21:42 | 显示全部楼层
cooldog123pp 发表于 2024-9-12 11:06
是6个控制器一路CAN?你说的同时收到肯定是不现实的,至少是前后,can总线也会阻塞的要看下你的重发机制, ...

对呢,6个控制器一个CAN总线。请教一下重发机制是cubemx配出来的嘛?还是要自己写出来的?怎么识别我这路要进行重发呢?
 楼主| Hufei1994 发表于 2024-9-12 21:44 | 显示全部楼层
呐咯密密 发表于 2024-9-12 16:53
同时响应不会发生总线抢占吗,从机做分时呢

我理解CAN总线会根据ID的大小自动进行仲裁呀,这个仲裁是CAN的机制吧。有了它自己的仲裁不应该是就算此刻发生抢占,会等到总线空闲在发送的吧?
 楼主| Hufei1994 发表于 2024-9-12 21:47 | 显示全部楼层
Dick Hou 发表于 2024-9-12 09:33
有没有开启自动重发功能?

6个控制器没有同步的话,有一定的概率起始的时候会同时发送,这个时候会按ID优 ...

好像没有开启,感谢提醒。我在试试看
自动重发.png
 楼主| Hufei1994 发表于 2024-9-12 21:55 | 显示全部楼层
感谢各位大佬的提醒,在cubemx中开启自动重发后,问题解决。上电瞬间可以读到6个控制器的反馈报文
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

160

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部