[CAN-bus/DeviceNet] 关于CAN通信中波特率相对较高时不能通信的相关问题

[复制链接]
 楼主| yangfx 发表于 2009-2-17 11:50 | 显示全部楼层 |阅读模式
调试一块232转can的板子,板子的信息如下:at89s52(11.0592m)+sja1000(16m)+82c250.<br />现在遇到这样的情况:sja1000设置了13种波特率分别为20k<br />40k50k80k100k125k200k250k400k500k666k800k1000kbps,125kbps以下6种波特率可以实现通信,当波特率为200k及以上时,则无法通信(没有任何数据)。<br />以1000kbps为例,我设置了所有组合的btr0tr1,也无法实现通信。<br />请各位朋友,分析一下,问题应该在什么方面,请不吝赐教!谢谢
黑蘑菇 发表于 2009-2-20 09:50 | 显示全部楼层

会不会是单片机速度的问题

如果单片机速度跟不上,出现误码太多,SJA1000会把自己屏蔽起来以保证总线安全。<br />
 楼主| yangfx 发表于 2009-2-20 10:47 | 显示全部楼层

32个寄存器的内容

谢谢&nbsp;黑蘑菇&nbsp;以您的分析此时的总线应该处于关闭状态吧<br /><br />这是发送时sja1000的32个寄存器的内容:<br />08&nbsp;00&nbsp;04&nbsp;82&nbsp;83&nbsp;00&nbsp;43&nbsp;C9&nbsp;3A&nbsp;AA&nbsp;00&nbsp;02&nbsp;A2&nbsp;60&nbsp;01&nbsp;00&nbsp;<br />F4&nbsp;FA&nbsp;F7&nbsp;EF&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;02&nbsp;00&nbsp;00&nbsp;C8&nbsp;<br />有这些数据可以看出:<br />产生了发送中断和总线错误中断(82),状态寄存器显示释放了发送缓冲区但请求的发送未处理完(04),仲裁丢失寄存器(02)显示仲裁丢失在识别码的bit3,错误代码捕捉寄存器(A2)显示是在接收时发生的填充错的错误,错在ID.28-ID.21,错误数为1个。<br />请大家分析一下,这种问题产生的原因是什么?谢谢<br />
hujiahua 发表于 2009-2-21 16:50 | 显示全部楼层

总线两端有没有加电阻?

  
 楼主| yangfx 发表于 2009-2-21 20:03 | 显示全部楼层

加了 120欧姆

加了&nbsp;120欧姆<br />现在测试结果是能够通信的最高波特率为190.5kbps,<br />200kbps及高于200k的波特率均不能通信
 楼主| yangfx 发表于 2009-2-24 10:21 | 显示全部楼层

CANH、CANL线上的电容值不太匹配

问题解决了<br /><br />CANH、CANL线上加的滤波电容值不太匹配,调试结果是电容不能没有,但电容值要匹配~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

1

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