打印
[技术讨论]

关于CAN总线有个问题想请教下大家

[复制链接]
1580|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
就是我现在用的是一个主机来控制3个从机。程序流程是主机发送一个广播消息,3个从机接收到消息后执行相关功能,执行完后 3个从机分别给主机发送一个消息证明已经执行完了,然后主机接收完这3个消息后再发一个广播消息,让3个从机继续执行,就这样一直循环。现在的问题是 我把接收消息的程序放到了定时器中断里,10ms读取一次,发现有时候从机就停止执行功能了,我用串口打印的方式查找错误发现是主机这边有时候会接收不到个别从机的数据,但是从机是发送正常的。所以应该是3个从机发送的数据冲突了,导致主机漏掉了数据。我目前的解决办法是让主机接收到哪个从机的数据后就给那个从机发送消息说不用发送了。现实情况是之前的从机偶尔停止情况改善很多,但是还是有,我实在没有办法了,想来求助下大家

1.jpg (196.05 KB )

这是主机

这是主机

2.jpg (157.28 KB )

这是主机

这是主机

3.jpg (236.59 KB )

这是主机

这是主机

使用特权

评论回复

相关帖子

沙发
白纸扇00|  楼主 | 2022-9-15 16:07 | 只看该作者
这是从机

5.jpg (228.98 KB )

5.jpg

使用特权

评论回复
板凳
gx_huang| | 2022-9-15 20:29 | 只看该作者
CAN是硬件仲裁的,不会一直冲突的,如果确认从机发送了,应该是主机软件接收到了没处理好

使用特权

评论回复
地板
坑中坑| | 2022-9-16 09:25 | 只看该作者
写个单纯的只读取的程序,去读取总线的信息。(或者买个can——uart总线的发送接收器)。这种要配置自动重发模式才行,而且时间要预留足够

使用特权

评论回复
5
full_stack| | 2022-9-16 09:43 | 只看该作者
有滤波吗?这个芯片CAN的邮箱数量是多少?10ms内如果收到超过的数量不就丢失了吗?

使用特权

评论回复
6
白纸扇00|  楼主 | 2022-9-16 09:58 | 只看该作者
gx_huang 发表于 2022-9-15 20:29
CAN是硬件仲裁的,不会一直冲突的,如果确认从机发送了,应该是主机软件接收到了没处理好 ...

老哥,主机处理能给个大概思路吗?

使用特权

评论回复
7
白纸扇00|  楼主 | 2022-9-16 09:59 | 只看该作者
坑中坑 发表于 2022-9-16 09:25
写个单纯的只读取的程序,去读取总线的信息。(或者买个can——uart总线的发送接收器)。这种要配置自动重 ...

已经配置了自动重发,时间也绝对是够得

使用特权

评论回复
8
白纸扇00|  楼主 | 2022-9-16 10:02 | 只看该作者
full_stack 发表于 2022-9-16 09:43
有滤波吗?这个芯片CAN的邮箱数量是多少?10ms内如果收到超过的数量不就丢失了吗? ...

你说的滤波是硬件的还是软件设置的?软件设置的CAN有滤波吗?是不是过滤器?邮箱只关联了FIFO0

使用特权

评论回复
9
cainiao518| | 2022-9-16 11:10 | 只看该作者
白纸扇00 发表于 2022-9-16 10:02
你说的滤波是硬件的还是软件设置的?软件设置的CAN有滤波吗?是不是过滤器?邮箱只关联了FIFO0 ...

打开CAN接收中断,不需用定时器中断接收,CAN总线控制好时序不会发送数据冲突

使用特权

评论回复
评论
liaojihua2010 2022-9-17 15:51 回复TA
明白人 
白纸扇00 2022-9-17 10:43 回复TA
好的,我先用中断试试,感谢老哥的指点了! 
10
jjcs| | 2022-9-16 13:02 | 只看该作者

使用特权

评论回复
11
dalarang| | 2022-9-16 15:28 | 只看该作者
估计是仲裁域没应用好吧,或是地址过滤没用对,从机发数据后主机若是收到,硬件会自动ACK的,不需要特别去干预重传。

使用特权

评论回复
评论
白纸扇00 2022-9-17 10:44 回复TA
感谢老哥的指点,我再检查下程序 
12
ltbytyn| | 2022-9-16 18:44 | 只看该作者
用定时器去接收,那要CAN接收中断干啥?

使用特权

评论回复
评论
白纸扇00 2022-9-17 10:45 回复TA
主要是程序比较简单,就没有用中断 
13
地瓜patch| | 2022-9-16 21:18 | 只看该作者
我也正在搞can总线,好多好多问题,过滤器就弄了好长时间,原理都明白,一到操作就困难重重

使用特权

评论回复
评论
白纸扇00 2022-9-17 10:50 回复TA
握个手 
14
full_stack| | 2022-9-17 00:57 | 只看该作者
白纸扇00 发表于 2022-9-16 10:02
你说的滤波是硬件的还是软件设置的?软件设置的CAN有滤波吗?是不是过滤器?邮箱只关联了FIFO0 ...

FIFO0只能接收存储三帧数据,如果多了就会丢失

使用特权

评论回复
15
两只袜子| | 2022-10-25 14:30 | 只看该作者
中断接收处理。

使用特权

评论回复
16
jcky001| | 2022-10-25 14:30 | 只看该作者
确认以下几个方面:
1、CAN时序配置是否合理。(包括单片机时钟是否稳定,不要用内部时钟源,尽量使用有源晶振)
2、硬件是否存在严重干扰(PCB布局布线、外部接线等)
3、中断处理是否耗费较多时间
4、是否存在同时接收很多消息情况(如有,还需要创建一个队列接收缓冲)

使用特权

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

本版积分规则

9

主题

65

帖子

1

粉丝