aoe123 发表于 2018-3-28 08:48:10

CAN通信100次,成功率90次左右,可能原因会是啥?

在使用飞思卡尔单片机进行CAN2.0B通信时,遇到通信成功率问题,即一块板子发送数据,另外一块收到数据后应答,大概有90%的成功率,群里做过CAN通信的朋友,说下这个情况算不算正常?谢谢

codefish 发表于 2018-3-28 08:51:33

用示波器观察can总线波形吧,
或者can总线分析仪,看发送数据有没有问题吧。

hzpyl 发表于 2018-3-28 08:51:51

肯定不正常。
实验室,短距离,几天也没有错误。

simple@ 发表于 2018-3-28 09:01:55

我用CANOE测试10000帧数据都可以做到不丢帧,你觉得能正常吗?要是正常你还敢开汽车么?这么高的错误率

LearningASM 发表于 2018-3-28 09:14:05

看看评论,对CAN总线就放心了

aoe123 发表于 2018-3-28 10:03:03

很想知道以前遇到过类似问题,然后解决的,有类似经历的,把经历可以拿出来分享下。

simplorer 发表于 2018-3-28 10:33:58

建议先上示波器,看下波形。
然后can分析仪。
这么高的丢失率太不正常。
我是做电机的,主从机之间使用CAN,现场有中频炉等大功率设备,干扰源比较多。
主从机CAN连接线3m左右,比较近。
调试的时候,我监控主从之间发包和收包,监控了36小时左右,丢了一个包,收发差一个。

lnskngdc 发表于 2018-3-28 11:15:19

应该是你的线缆阻抗较大,换个0.25方或0.5的双绞线试试

另外,1M波特率情况下,距离不要太长

可以考虑在其中一个节点的CANH和CANL之间加一个120欧姆电阻

modbus 发表于 2018-3-28 11:25:46

高波特率下一定要加终端电阻

qiqirachel 发表于 2018-3-28 18:38:40

以前拿网线做过,0丢包啊,数据就是1。2。3 然后间隔不是1就是丢包了

jnyyygch 发表于 2018-3-28 20:27:09

可能的原因:
1.中断电阻不匹配
2.线太长
3.采样点设置不合理

aoe123 发表于 2018-3-28 21:33:01

试试终端电阻,当前的终端电阻,一头是68+68的配置,另外一头也是68+68,但是电阻中间我接了地

让爱随风 发表于 2018-3-28 22:46:04

aoe123 发表于 2018-3-28 21:33
试试终端电阻,当前的终端电阻,一头是68+68的配置,另外一头也是68+68,但是电阻中间我接了地
...

建议先按照正确的解法试一下,你搞个68+68,还接地,为啥要这样搞呢

ywlzh 发表于 2018-3-29 10:58:38

不对吧 我做CAN通信实验 就数据帧 周末两天不停歇

上位机记录通信情况 返回的数据 500ms轮询通讯5块板子都没出现过错误

norman33 发表于 2018-3-30 10:59:49

不正常,正常强干扰环境误码率应该低于千分之一

zhangjinzj 发表于 2018-3-30 11:06:50

aoe123 发表于 2018-3-28 21:33
试试终端电阻,当前的终端电阻,一头是68+68的配置,另外一头也是68+68,但是电阻中间我接了地
...

但是电阻中间我接了地???中间是应该在在CAN芯片上的。不可以接地。阻抗,回路全不对了。

aoe123 发表于 2018-3-30 15:03:01

仔细看了各位的意见,我把硬件重新检查了一遍,首先,我去掉了楼上说的2个68欧姆电阻中间接地的那个接法,但是依然保留另外一端的68+68的接法,其实,那边的68+68中间是有一个10nF的电容接地的!!然后再测试,正确率下降到70%左右!!这是第一步,不仅没有解决问题,反而把通信的成功率降低了。然后,想到会不会是保护用的TVS管的问题,于是,我把那只管子焊下来,再测,测试2万次不到,只丢了1个包。至此,基本可以确定是保护用的TVS管的问题。最后,谢谢楼上各位。结贴,祝贺一下,红包就不发了{:tongue:}

not_at_all 发表于 2018-3-31 08:12:15

aoe123 发表于 2018-3-30 15:03
仔细看了各位的意见,我把硬件重新检查了一遍,首先,我去掉了楼上说的2个68欧姆电阻中间接地的那个接法, ...

CAN走的是差分信号 ,为什么要接地?   
那么应该是TVS结电容太大了

3466756555 发表于 2018-3-31 08:51:30

aoe123 发表于 2018-3-30 15:03
仔细看了各位的意见,我把硬件重新检查了一遍,首先,我去掉了楼上说的2个68欧姆电阻中间接地的那个接法, ...

TVS 具体什么原因不仿讲一下,这样大家都明白    就不用都在跳坑了

aoe123 发表于 2018-3-31 09:04:16

前面关于接地的表述,正确的应该是2只电阻中间通过一只10nF电容接地,不是直接接地;另外,没有那只电容也没事,我的理解那只电容就是去掉一点高频谐波吧。TVS去掉就好了,应该是TVS的选的不合适,离散电容太大了,不适合用在CAN通信这种场合,我的波特率不到100k.

liyfmc 发表于 2018-3-31 09:07:01

估计是终端电阻的问题,尝试加个120欧的终端电阻

modbus 发表于 2018-3-31 12:23:46

aoe123 发表于 2018-3-31 09:04
前面关于接地的表述,正确的应该是2只电阻中间通过一只10nF电容接地,不是直接接地;另外,没有那只电容也 ...

CAN输出1时是高阻输出,所以离散电容不能太大,加120欧终端电阻后能好些

sbusr 发表于 2018-3-31 13:32:37

终端电阻!终端电阻!终端电阻!是在终端,一边一个120欧,不是在线上随便找俩地方,各放一个120欧。CAN线是直线式,还是星形?有没有多个节点发出相同标识符的帧?

aoe123 发表于 2018-3-31 21:53:36

CAN BUS的拓扑结构我是知道的,问题解决了。

wangyu_2011 发表于 2018-4-2 19:46:48

98%的负载率也不丢包。

aoe123 发表于 2018-4-3 07:17:35

最新回复,问题是软件。谢谢,现在发送10000次没有错了。

linpeixing 发表于 2018-4-3 22:47:10

aoe123 发表于 2018-3-31 09:04
前面关于接地的表述,正确的应该是2只电阻中间通过一只10nF电容接地,不是直接接地;另外,没有那只电容也 ...

中间的电容有两个作用:
1、用于稳定CAN隐性时的2.5V电压
2、抗干扰,恶劣工况下能提高通信稳定性
有些CAN收发器还有个Split引脚,接在该电容上同样能起到稳定隐性电平的作用

aoe123 发表于 2018-4-4 17:27:06

赞同27楼的

fengyunyu 发表于 2018-4-5 17:04:47

aoe123 发表于 2018-4-3 07:17
最新回复,问题是软件。谢谢,现在发送10000次没有错了。

软件问题?还是TVS的问题?大神分享下
页: [1]
查看完整版本: CAN通信100次,成功率90次左右,可能原因会是啥?