打印
[STM32G4]

多路CAN共同工作异常

[复制链接]
435|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大家好,
最近使用STM32G431做了个项目,项目上需要需要使用六个控制器,主机为连接PC的CAN盒,六个控制器为从机(除了ID不一致外其他配置完全一样),反馈自己的状态和接受主机的指令
总线上配置了俩个120R电阻,分别在CAN盒上和CAN总线末端。每个控制器的CANH和CANL加了47pF的对地电阻
CAN信号的反馈周期为100ms,总线负载率在1%以下,波特率为1M

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


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

CAN配置.png (325.38 KB )

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
电源上电顺序不一致或者是不稳定?

一个电源供电的,肯定是同时上电

使用特权

评论回复
5
Hufei1994|  楼主 | 2024-9-11 16:30 | 只看该作者
补充一下,
使用示波器抓CANH和CANL信号,信号质量没问题
用示波器对信号解码,发现是控制器确实没发出来

微信图片_20240911162942.jpg (219.97 KB )

微信图片_20240911162942.jpg

微信图片_20240911162923.jpg (238.55 KB )

微信图片_20240911162923.jpg

使用特权

评论回复
6
flycamelaaa| | 2024-9-11 16:49 | 只看该作者
检查每个控制器的CAN初始化代码,确保波特率、时钟源、工作模式等设置完全一致,并且符合CAN盒的配置。

使用特权

评论回复
7
Dick Hou| | 2024-9-12 08:22 | 只看该作者
6个控制器是按什么规则发送的?互相之间有时间上的同步关系吗?

使用特权

评论回复
8
Hufei1994|  楼主 | 2024-9-12 09:07 | 只看该作者
Dick Hou 发表于 2024-9-12 08:22
6个控制器是按什么规则发送的?互相之间有时间上的同步关系吗?

一上电到了发送周期就开始往总线发消息,没有做同步什么的

使用特权

评论回复
9
Hufei1994|  楼主 | 2024-9-12 09:07 | 只看该作者
Dick Hou 发表于 2024-9-12 08:22
6个控制器是按什么规则发送的?互相之间有时间上的同步关系吗?

一上电到了发送周期就开始往总线发消息,没有做同步什么的

使用特权

评论回复
10
dukedz| | 2024-9-12 09:23 | 只看该作者
can 盒和各节点之间共地没?!

使用特权

评论回复
11
shenxiaolin| | 2024-9-12 09:25 | 只看该作者
上次遇到一个现象,有些国产晶振在PLL的时候没法锁频,导致时钟初始化的时候要等十多秒,不知道你的响应慢会不会是这个原因。

使用特权

评论回复
12
Dick Hou| | 2024-9-12 09:33 | 只看该作者
有没有开启自动重发功能?

6个控制器没有同步的话,有一定的概率起始的时候会同时发送,这个时候会按ID优先级来进行仲裁。优先级高的会发送成功,其它仲裁失败的要等到帧间隔后重发,如果没有开启自动重发,就不会发了。

使用特权

评论回复
13
czq2317| | 2024-9-12 10:27 | 只看该作者
1.要先看你的时钟源有多大误差。
2.要看你的CAN网络拓扑,看你的120欧姆用得对不对。
3.看看勘误手册CAN模块是否有注意事项。

使用特权

评论回复
14
cooldog123pp| | 2024-9-12 11:06 | 只看该作者
是6个控制器一路CAN?你说的同时收到肯定是不现实的,至少是前后,can总线也会阻塞的要看下你的重发机制,竞争机制。

使用特权

评论回复
15
LOVEEVER| | 2024-9-12 15:25 | 只看该作者
目前知道可能2个原因,一个是线缆连接节点问题,另外一个就是上电程序的问题

使用特权

评论回复
16
呐咯密密| | 2024-9-12 16:53 | 只看该作者
同时响应不会发生总线抢占吗,从机做分时呢

使用特权

评论回复
17
Hufei1994|  楼主 | 2024-9-12 21:42 | 只看该作者
cooldog123pp 发表于 2024-9-12 11:06
是6个控制器一路CAN?你说的同时收到肯定是不现实的,至少是前后,can总线也会阻塞的要看下你的重发机制, ...

对呢,6个控制器一个CAN总线。请教一下重发机制是cubemx配出来的嘛?还是要自己写出来的?怎么识别我这路要进行重发呢?

使用特权

评论回复
18
Hufei1994|  楼主 | 2024-9-12 21:44 | 只看该作者
呐咯密密 发表于 2024-9-12 16:53
同时响应不会发生总线抢占吗,从机做分时呢

我理解CAN总线会根据ID的大小自动进行仲裁呀,这个仲裁是CAN的机制吧。有了它自己的仲裁不应该是就算此刻发生抢占,会等到总线空闲在发送的吧?

使用特权

评论回复
19
Hufei1994|  楼主 | 2024-9-12 21:47 | 只看该作者
Dick Hou 发表于 2024-9-12 09:33
有没有开启自动重发功能?

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

好像没有开启,感谢提醒。我在试试看

自动重发.png (345.42 KB )

自动重发.png

使用特权

评论回复
20
Hufei1994|  楼主 | 2024-9-12 21:55 | 只看该作者
感谢各位大佬的提醒,在cubemx中开启自动重发后,问题解决。上电瞬间可以读到6个控制器的反馈报文

使用特权

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

本版积分规则

28

主题

160

帖子

0

粉丝