STM32/STM8技术william hill官网
直播中

张辉

7年用户 1319经验值
私信 关注
[问答]

如何判断CAN总线的波特率与通信协议?

STM32f103开发板通过OBD2与汽车诊断系统通信,采用的协议是ISO15765-4,然后分为4种情况,波特率250K(数据帧为标准或者扩展帧)、500K(数据帧为标准或者扩展帧).

初步做法:当波特率为250K,数据帧为扩展帧时,发送数据,等待回复,如果有回复说明是这个协议,以此类推。找到对应的协议。

哪位大神有好的建议或者好的方法?

回帖(7)

张伟

2018-12-13 15:57:19
以往有些串口通讯的自动波特率识别是这样做的:主端首先发送一串固定的 pattern,从端以一个固定的波特率下接收。然后,从端将收到的内容与不同约定波特率下发送时所接收到的模板比较,从而判断出主端的波特率。从端设置成主端现有波特率,然后应答。

当然,所发送的内容是经过精心设计的,同时要事先预先测试在不同波特率下发送时,以一固定波特率下接收时收到的样本。
举报

王飞云

2018-12-13 15:57:42
汽车通信协议都是定好的啊,只有双方规定好波特率和通信协议,才能交互信息。
举报

马占云

2018-12-13 15:57:49
四种情况,试呗
举报

李敏

2018-12-13 15:58:03
首先需要明确的是,标准CAN通信中,波特率是一开始就应该确定的,总线上所有节点的波特率都必须设置为一致的。
如果你不知道总线波特率,可以在初始化的时候依次轮序各个波特率,看回复内容,能接收到就好。但同样会带来一个问题,你需要知道对端PID是多少,否则是有可能被过滤掉的。

其次具体是标准帧还是扩展帧,读包头即可。只要节点本身支持的是CAN2.0协议,两种格式都应该同时支持。
举报

h1654155275.5916

2018-12-13 15:59:45
去找该系统的说明
举报

阿信509

2018-12-13 17:16:07
好像有分析仪,你去查查看
举报

lee_st

2018-12-13 22:05:30
进来看看了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分