STM32 CAN通信问题求助

[复制链接]
3176|6
 楼主| 飞言走笔 发表于 2013-7-2 18:40 | 显示全部楼层 |阅读模式
本帖最后由 飞言走笔 于 2013-7-2 18:46 编辑

之前已经求助一次,问题没有得到解决,自己继续摸索,现在问题依旧,这次把遇到的情况说得清楚些。

手头两块板,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分别与标准设备通信都是正常的,但相互通信就出现问题。不知道哪位前辈遇到过这样的问题,是如何解决的,望不吝赐教,谢谢!

@香水城 版主
trumpxp 发表于 2013-7-2 19:38 | 显示全部楼层
帮楼主   顶一个   看看别人的意见
trumpxp 发表于 2013-7-2 19:39 | 显示全部楼层
应该有高手能够解决这个问题    楼主
airwill 发表于 2013-7-2 20:00 | 显示全部楼层
既然是 Acknowledgement Error(0x30)错误了, 那就从这里下手咯.
另外, ABC 也可以放在一个总线里调试的.
tianyi_j 发表于 2013-7-2 20:44 | 显示全部楼层
检查一下A发送的帧类型(标准、扩展)和B接收的帧类型
 楼主| 飞言走笔 发表于 2013-7-3 20:20 | 显示全部楼层
airwill 发表于 2013-7-2 20:00
既然是 Acknowledgement Error(0x30)错误了, 那就从这里下手咯.
另外, ABC 也可以放在一个总线里调试的. ...

算是从您这里得到的思路吧,呵呵
谢谢:handshake
 楼主| 飞言走笔 发表于 2013-7-3 20:21 | 显示全部楼层
谢谢以上各位朋友的帮助
问题已经解决,真的真的很……

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                         // 复用推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
        GPIO_Init(GPIOB, &GPIO_InitStructure);


加入了上面红色的部分就好了,我寻思着,是不是没有设定IO的速度,导致两边的速率出现可能不太一致,而出现的ACK错误
但是,AC BC间的如何解释?标准的CAN设备适应能力强?

再次感谢各位朋友

您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

857

帖子

0

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