你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

CAN总线:如何利用程序(STM32)判断CAN总线的波特率/通讯协议?

[复制链接]
liucw99 提问时间:2016-12-29 21:32 /
利用STM32F103的CAN控制器可以和其他的节点进行通讯了。不过我承认,我自己对于CAN协议的理解还是太肤浅了。

现在的问题是,我的节点怎么知道CAN总线的波特率?怎么知道数据帧时标准格式,还是扩展格式的?
条件:总线的波特率是固定的几种,但是在节点加入前是不知道的。

我希望可以利用STM32的程序来在初始化的时候自动判断,现在的做法如下:
1、枚举固定的几种波特率,改变STM32的CAN控制器的初始化参数。
2、发送一组数据,查询是否发送成功,如果发送成功了,判断是否有数据接收,如果数据正确,那么就可以肯定是这种波特率及数据帧格式。
3、最多重复发送6次(间隔100ms)。
4、如果不是这种波特率/数据帧格式,那么更换下一种波特率再次测试。
5、如果枚举全部波特率都没有找到合适的协议,那么程序给出提示,进入死循环。

现在的状况是:如果固定协议,我的节点跑起来没有问题,可是采用上述这种方法来测试通讯波特率并不可行,程序最后就进入了死循环。
奇怪的是,如果用Debug方式跟踪的时候,有时候可以找到当前正在通讯的波特率。

哪位高手有好的建议?好的方法?

收藏 3 评论25 发布时间:2016-12-29 21:32

举报

25个回答
andypanfan 回答时间:2016-12-30 09:20:55
CAN 的波特率   和是扩展帧   各个帧的  ID  都是在做项目之前   就已经有文给定的  ,  不然的话 ,就算你把波特率 试出来了    是不是扩展帧  ID   是多少    你也许试一辈子   都试不出来呀!!!!!!

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

jackten 回答时间:2016-12-30 09:17:28
过来看看
奏奏奏 回答时间:2016-12-30 09:52:30
我觉得CAN的波特率跟串口的波特率相似,有节点回复才能知道设置是否正确。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

liucw99 回答时间:2016-12-30 11:18:24

欢迎探讨。
liucw99 回答时间:2016-12-30 11:18:46
andypanfan 发表于 2016-12-30 09:20
CAN 的波特率   和是扩展帧   各个帧的  ID  都是在做项目之前   就已经有文给定的  ,  不然的话 ,就算你 ...

这个不能用程序来自动侦测吗?
liucw99 回答时间:2016-12-30 11:19:43
奏奏奏 发表于 2016-12-30 09:52
我觉得CAN的波特率跟串口的波特率相似,有节点回复才能知道设置是否正确。 ...

初步的想法就是这样的:发送出去信息,然后等待回复,可是很郁闷,为什么固定协议的时候都好说,可是到了自动侦测的时候就不好用了。
5265325 回答时间:2016-12-30 16:09:42
darren_liu 回答时间:2016-12-30 16:30:45
循环发送等回复?
任风吹吹 回答时间:2016-12-30 16:32:32
我想是否可以利用应答域:

大家都知道,CAN节点在发送报文时,是一边发送一边检测总线状态的,一个CAN节点在CAN网络上发送数据,如果有其他节点接收,则会在报文的应答域拉低(应答域位于仲裁域后边),以此表示“我已经接收了这报文”,发送节点在检查到发出去的报文的应答域有其他节点反应,就表示也就表示发送的信息有其他节点成功接收,也就是说,发送节点发送结果为成功,这个就是CAN与其他总线不同的地方,CAN节点发送数据后是知道是否发送成功的,不像USART,I2C,SPI,I2S那样,发出数据后发送方完全不知道对方是否成功接收,只有在对方再回复一条协议上或者应用层上的数据才知道“原来之前发送的数据有其他人接收到”,这个是CAN不一样的地方,知道这个后,我想是否可以通过尝试各种波特率发送报文,若发送成功,则表示这个波特率就是正确的。

当然这个只是我的推测,实际应用还得看楼主验证结果。。。勿喜莫喷!

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

123下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版