打印

STM32 CAN通信问题求助

[复制链接]
2674|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 也可以放在一个总线里调试的.

使用特权

评论回复
5
tianyi_j| | 2013-7-2 20:44 | 只看该作者
检查一下A发送的帧类型(标准、扩展)和B接收的帧类型

使用特权

评论回复
6
飞言走笔|  楼主 | 2013-7-3 20:20 | 只看该作者
airwill 发表于 2013-7-2 20:00
既然是 Acknowledgement Error(0x30)错误了, 那就从这里下手咯.
另外, ABC 也可以放在一个总线里调试的. ...

算是从您这里得到的思路吧,呵呵
谢谢:handshake

使用特权

评论回复
7
飞言走笔|  楼主 | 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

主题

858

帖子

0

粉丝