CAN总线之一篇文章讲清楚Motorala和inter格式

前言:

之前的工作中,其实对Motorala和inter格式并不是了解的十分透彻。最近由于工作需要,研究了一下这两种格式,发现里面的门道其实挺复杂的。

特此作了一些总结:和大家一起分享。

我查了不少文档,描述其实条理并不是特别清晰。容易让人产生一种混乱的感觉,本质上是没有抓住很多初学者的痛点。本文第一第二节先不讲两种格式,而是先理清最基本的问题。

1:了解CAN发送的bit时序和Byte时序

1.1 Byte发送时序

目前所有的CAN协议,所有的CAN收发器,都是按一个顺序发送:即先发送低字节Byte0-》Byte2->Byte3.....Byte7(CANFD,还能拓展到Byte64)。记住所有的都这样。

1.2 bit发送时序

一个Byte包含7个bit,那么先发送bit7,还是先发送bit0?,目前两种方法均可以(不过需要注意的是,无论是先发送bit7还是bit0,仲裁段都是先发送bit高位)。

66cf55394ffd4d7aa59c32f42486482d.png

从图中可以看出:

第一种情况,先发bit7-》bit0-》bit15-》bit8.。。。

第二种情况,先发bit0-》bit7—》bit8——》bit15

切记这两种,对后续理解6种起始位的计算非常重要

 

结合CANdb++或CANdb—admin工具,默认是采用先发送bit7。如果需要先发送bit0。则需要如下设置。如图51fb134cfeda41d295ba722e422bf039.png

或者在seting界面勾选

f642cd82c4284b4ca188a24596ee0bd6.png

则就能匹配bit0先发的机制。

2:了解signal中的MSB和LSB

需要注意的是,我们通常的思维是,将signal带入到Message中,暂时不要这么干,容易引起思维上的混乱。先只看signal。

e4fbf27aa0f845a7b21bc6761f287c6a.png

MSB就代表信号的高bit位,LSB表示低bit

3:Motorala和inter格式对跨字节信号的处理

我们知道上面提到的Vehicle_Speed信号一个Byte肯定放不下,需要跨字节存放。

很多资料都用一句话总结:"Inter低放低,高放高,Motorola是高放低,低放高"。红色的字表示Signal中的MSB和LSB。黄色字表示的是Message(即帧)中的Byte

如下图,

ff10ffdcd0ea493a9910b5b353ebc037.png

Inter格式

 

90aa8544023543978dde83ac68fe3f16.png

Motorola格式

这个好理解,不会的多查点资料!!不再赘述。。。。

 

接下来就是重点

4:6种方法对Startbit的判定

4.1 motorala的四种格式

151d62c661484728becebd84b617f3a7.png

812b8e97d4764ba580a53f3204d6d66e.png

起始位9bit

412425da21d046d9b233b7eab6c659f8.png

721a23ab5cdc4f1392ed9c412d1110f5.png

这个非常特殊,需要吧信号按照镜像折叠,即像下图

80e2206471894252bfa35741e78c5ec9.png

把LSB向上移动,msb向下移动,然后按移动后的LSB算起始位

上面的Vehicle_Speed所处Message是8个Byte,就按图示方法变换位置,最后按变换后的LSB位置计算Startbit。

701100b59eda4e44a726e9d3b55ff8ef.png

 查看结果:

977f48a00806488781cb96a6c9fdd334.png

这表示,猜想正确。

e847151c82bd4ca69115d52b69fa8a71.png 

4.2 Inter的两种格式

da5d08726e9b4cb49589a5928902f387.png

8da6aaa827d34bcc93f3bf526c55a5ed.png

起始位12bit

 

4d7e9ceddbdd48d3a72cca250fa94e82.png

起始位11bit

 

4:6种起始位的计算方式和bit发送顺序的关系

sequence,一定要匹配bit0先发

其他4中都是bit7位先发

 

 

  • 22
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值