完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
利用STM32F103的CAN控制器可以和其他的节点进行通讯了。不过我承认,我自己对于CAN协议的理解还是太肤浅了。
现在的问题是,我的节点怎么知道CAN总线的波特率?怎么知道数据帧时标准格式,还是扩展格式的? 条件:总线的波特率是固定的几种,但是在节点加入前是不知道的。 我希望可以利用STM32的程序来在初始化的时候自动判断,现在的做法如下: 1、枚举固定的几种波特率,改变STM32的CAN控制器的初始化参数。 2、发送一组数据,查询是否发送成功,如果发送成功了,判断是否有数据接收,如果数据正确,那么就可以肯定是这种波特率及数据帧格式。 3、最多重复发送6次(间隔100ms)。 4、如果不是这种波特率/数据帧格式,那么更换下一种波特率再次测试。 5、如果枚举全部波特率都没有找到合适的协议,那么程序给出提示,进入死循环。 现在的状况是:如果固定协议,我的节点跑起来没有问题,可是采用上述这种方法来测试通讯波特率并不可行,程序最后就进入了死循环。 奇怪的是,如果用Debug方式跟踪的时候,有时候可以找到当前正在通讯的波特率。 哪位高手有好的建议?好的方法? |
|
相关推荐
25个回答
|
|
CAN 的波特率 和是扩展帧 各个帧的 ID 都是在做项目之前 就已经有文给定的 , 不然的话 ,就算你把波特率 试出来了 是不是扩展帧 ID 是多少 你也许试一辈子 都试不出来呀!!!!!!
|
|
|
|
过来看看
|
|
|
|
我觉得CAN的波特率跟串口的波特率相似,有节点回复才能知道设置是否正确。
|
|
|
|
|
|
|
|
mosen137 发表于 2018-12-28 16:48 这个不能用程序来自动侦测吗? |
|
|
|
初步的想法就是这样的:发送出去信息,然后等待回复,可是很郁闷,为什么固定协议的时候都好说,可是到了自动侦测的时候就不好用了。 |
|
|
|
|
|
循环发送等回复?
|
|
|
|
我想是否可以利用应答域:
大家都知道,CAN节点在发送报文时,是一边发送一边检测总线状态的,一个CAN节点在CAN网络上发送数据,如果有其他节点接收,则会在报文的应答域拉低(应答域位于仲裁域后边),以此表示“我已经接收了这报文”,发送节点在检查到发出去的报文的应答域有其他节点反应,就表示也就表示发送的信息有其他节点成功接收,也就是说,发送节点发送结果为成功,这个就是CAN与其他总线不同的地方,CAN节点发送数据后是知道是否发送成功的,不像USART,I2C,SPI,I2S那样,发出数据后发送方完全不知道对方是否成功接收,只有在对方再回复一条协议上或者应用层上的数据才知道“原来之前发送的数据有其他人接收到”,这个是CAN不一样的地方,知道这个后,我想是否可以通过尝试各种波特率发送报文,若发送成功,则表示这个波特率就是正确的。 当然这个只是我的推测,实际应用还得看楼主验证结果。。。勿喜莫喷! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
充电搜索 发表于 2018-12-28 18:32 这个~~~~~说实在的,对于我来说,有点难度,怎么去验证呢?我想想看。 不过,多谢你的解答。 |
|
|
|
充电搜索 发表于 2018-12-28 18:32 这个思路应该可以 |
|
|
|
不错,真是太棒了!
|
|
|
|
这个问题看来有难度
|
|
|
|
应该用个电压比较器,接在差分信号上,用IO口中断来测量显性电平的脉宽,这样判断波特率比较准吧
|
|
|
|
你的这个办法是个好办法。 不过,我现在的状况是,波特率的数值是已知的几种,我只需要在这几种波特率中找到合适的一种就可以了。 现在可以肯定地是:只要发送不成功,那么就不是这个波特率。 |
|
|
|
你这种方法可能存在一定风险,尤其是汽车的CAN总线,不能随意地乱往CAN总线上发数据,可能会导致汽车的ECU报错。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1301 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
805 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1188 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1660 浏览 1 评论
544 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 17:47 , Processed in 0.914222 second(s), Total 109, Slave 93 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号