问个STM32F103 CAN的问题

[复制链接]
6175|9
手机看帖
扫描二维码
随时随地手机跟帖
sjnh|  楼主 | 2011-9-14 10:50 | 显示全部楼层 |阅读模式
在CAN的离线错误不知怎么出现, 实验过程如下:

1、2个板子互联,发送接收都正常
2、断开CAN连接线,板子CAN输出口一直有数据输出,不断重复发送,但发送错误计数器TEC最高到0x80,不会在增长,离线错误无法出现(手册:当发送错误计数器TEC溢出,即大于255时,CAN进入离线状态。请参考22.7.6),CAN输出一直会发送
3、用手不断的接通、断开总线,发送错误计数器TEC会超过0x80,但从没有超过0x90(也许是因为接通是会恢复的原因),此时CAN输出一直会发送,断开总线TEC计数不会再增加
4、103RC、103ZE都是这种现象
5、断开板子直接的CAN连接线,偶尔会出现离线错误状态(没发现规律,3个星期实验过几十次,碰见4次,操作没发现不同)

怎么才能出现离线错误
guanggaoren| | 2011-9-14 11:25 | 显示全部楼层
等答案...帮顶

使用特权

评论回复
airwill| | 2011-9-14 12:18 | 显示全部楼层
断开 TXD 线(和 can 收发器的连线) 我想一定能离线错误

使用特权

评论回复
sjnh|  楼主 | 2011-9-14 12:30 | 显示全部楼层
断开 TXD 线(和 can 收发器的连线) 我想一定能离线错误
airwill 发表于 2011-9-14 12:18


板子在家晚上回去试验,

但可以增加到0X80,为什么不在增加

使用特权

评论回复
IJK| | 2011-9-15 09:40 | 显示全部楼层
让2个板子的CAN波特率不一样,然后2个板子的CAN都进行发送,应该就能看到 BusOff的情况

使用特权

评论回复
sjnh|  楼主 | 2011-9-15 13:13 | 显示全部楼层
让2个板子的CAN波特率不一样,然后2个板子的CAN都进行发送,应该就能看到 BusOff的情况
IJK 发表于 2011-9-15 09:40


试过了,没有出现过BusOff,错误状态寄存器最低位一直是11B,错误代码是位填充错误(01B)与 格式错误(10B) 与 ACK错误(11B)不断交替变化

我程序里读CAN错误寄存器值,通过串口发送到计算机观察的,0.5秒读一次,例如:ff/00/0013,16进制,ff是接收错误计数,00是发送错误计数,0013是低16位值,我程序设置是总线状态离线后不自动恢复

使用特权

评论回复
pkat| | 2011-9-15 14:32 | 显示全部楼层
楼主这在家也做研究:lol

使用特权

评论回复
caiwenbin| | 2011-9-15 23:36 | 显示全部楼层
楼主别太敬业啊,这样我们压力很大滴!

使用特权

评论回复
sjnh|  楼主 | 2011-9-16 10:46 | 显示全部楼层
断开 TXD 线(和 can 收发器的连线) 我想一定能离线错误
airwill 发表于 2011-9-14 12:18


的确,断开线立即离线,很奇怪,此时发送错误一直是f8(怀疑是1f8),但不在增加

恢复TXD后:我多次开关机,估计有30次左右,出现过一次离线错误
其它不在出现离线错误,并且一半以上是发送错误计数器是00(是不是0x100就无法确定了,因为高位无法读出),

还有恢复总线连接后再断开,还是不出现离线错误,计数会到0x80,不再增加

使用特权

评论回复
shuaijing| | 2011-11-24 09:39 | 显示全部楼层
查一下dxt线是否断开?

使用特权

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

本版积分规则

21

主题

1319

帖子

20

粉丝