原创 【博客大赛】STM32学习-CAN总线调试遇到的问题

2013-7-5 12:02 1566 17 17 分类: MCU/ 嵌入式 文集: STM32F1学习笔记
这段时间各种各样的事情
最近继续调试CAN总线,遇到了非常奇葩的事情,只好把现在描述一下,在21ic和阿莫上发帖问了,帖子内容如下:
 
之前已经求助一次,问题没有得到解决,自己继续摸索,现在问题依旧,这次把遇到的情况说得清楚些。
 
手头两块板,STM32F103V8T6+TJA1050,其中一个发送数据,我们称为 A ;另一块接收数据,称为 B 。
两板通信测试前,我先用标准CAN设备(国产的USB-CAN工具)测试,该设备我们称之为 C 。
1)A发送,C接收,正常。
2)C发送,B接收,正常。
 
其中,AB上接有120欧终端电阻,C上没有;波特率均为100K。
 
接下来 A发送,B接收,不正常!
A程序中加入读错误代码的一段程序,读回的是 Acknowledgement Error(0x30),应答错误;有仿真器跟踪B中的程序,发现A发出了数据,B却没有进入接收中断。
 
以上是对我遇到问题的描述,总体来说就是,A B分别与标准设备通信都是正常的,但相互通信就出现问题。不知道哪位前辈遇到过这样的问题,是如何解决的,望不吝赐教,谢谢!
 
没有人给出解答,最后是自己解决的。
 
111111111111111111.jpg
 
如图,就是加了这一句,之前没有加。因为一直参考野火的例程,看他的loopback例程里面也没有加,自己测试的时候也是这样(http://bbs.ednchina.com/BLOG_ARTICLE_3012191.HTM)。
 
我个人的理解,可能是GPIO的速率没有设置,使得AB之间实际的波特率可能不一致了,所以产生了ACK的错误。已经买了野火的书,看里面CAN总线那一章的代码里,这一句也加上了。
不知道哪位大侠指点指点。
 

文章评论0条评论)

登录后参与讨论
我要评论
0
17
关闭 站长推荐上一条 /2 下一条