CAN通讯学习笔记

1.总体概述

1.1 CAN功能实现

可将车辆划分为车身部、安全部、ITS(智能交通系统)部、信息部、底盘部和发动机等部分。每个部分中的器件通过一条CAN总线串起来(一个CAN总线上的所有器件通讯速率必须相同),实现部分内的通讯。各个部分的CAN再汇集到网关(网关?后边学一学),由网关分配实现各个不同速率部分的CAN之间的通讯。如此这般便实现了对汽车整体电控部分的检测与控制。

1.2 CAN组成

两种组成方式:

1:CPU与CAN控制器集成到一起,再外接CAN收发器。

2:CPU与CAN控制器分开,使用的时候需要配置CAN接口电路,比较麻烦。

2. CAN的通讯过程

2.1 数据传输的实现原理

CAN通讯由两根线完成,一条CAN_HIGHT、一条CAN_LOW。

当CANH-CANL<0.5V的时候为隐性的,逻辑信号表现为“逻辑1”,即高电平。

当CANH-CANL>0.9V的时候为显性的,逻辑型号表现为“逻辑0”,即低电平。

无数据发送or发送数据0→CANH=CANL=2.5V→CANH-CANL=0<0.5V→认为数据为逻辑1;

发送数据1→CANH升高,CANL降低→CANH-CANL>0.9V→认为数据为逻辑0;

显性(逻辑0)的优先级比隐性(逻辑1)的高。

CAN收发器:左侧引脚RXD、TXD连接CAN控制器,右侧CANH、CANL:

MCU发送逻辑1:CANTX置1→收发器→CANH=CANL=2.5→逻辑1·

MCU发送逻辑0:CANRX置0→收发器→CANH=3.5V,CANL=1.5V→逻辑0

MCU接收逻辑1和接收逻辑0时即将上述过程放过来即可。·

数据的传递过程个人理解:

数据发送端和CAN控制器相连接,告诉控制器需要发送的数据,CAN控制器通过CANTX(逻辑1)与CANRX(逻辑0)与CAN收发器相连接,并告诉收发器需要发送的数据,然后来改变CANH和CANL的电压值,CANH和CANL上的电压值分别在各自的线上传输,通过ID和数据接收端匹配,匹配之后CANH和CANL经过收发器的转换传递给CAN控制器和接收端,完成信号的传输。中间需要进行位同步。

2.2 CAN通讯的整个过程

2.2.1 空闲状态

空闲状态是指没有节点正在传输数据的时候,当总线上出现连续11位隐性电平的时候,表示总线就处于空闲状态。

2.2.2 开始数据传输

当节点监听(如何监听?)到总线上处于空闲状态时,就会立即向总线发送自己的数据包(数据包=数据帧=报文)。

CAN数据帧标准格式

域段位宽:bit描述
帧起始(SOF)1数据帧起始的标志,固定位1bit,显性。
仲裁段   (ID)11本数据帧的ID信息,ID信息的作用:1、如果同时有多个节点发送数据时,作为优先级依据(仲裁机制)。2、目标节点通过ID信息来接受数据(验收滤波技术)。
RTR10-数据帧 1-远程帧    显性
IDE1用于区分标准格式与扩展格式,显性--标准格式  隐性--扩展格式
R0 11bit保留位,显性
DLC4二进制编码用于表示本报文中的数据段有多少个字节
数据段0-64数据帧的核心内容,它由0-8个字节组成
CRC段15用于检查帧传输的错误,发送方以一定的方法计算帧起始、仲裁段、控制段、数据段的长度;接收方以同样的算法计算CRC值并进行比较,如果不同则会向发送端反馈出错误信息,重新发送;计算和出错处理一般都由CAN控制器硬件完成或由软件控制最大重发数。
CRC界定符1用于分隔的位,位隐性
ACK槽1在ACK槽位中,发送端发送的为隐性位,而接收端则在这一位中发送显性位以示应答;
ACK界定符1在ACK槽和帧结束之间由ACK界定符间隔开,为隐性位
帧结束(EOF)7由发送端发送7个隐性位表示结束

2.2.3 仲裁机制

由于显性的优先级高于隐性,所以仲裁比较的就是那个ID中的0多。

2.2.4 位时序

位时序是为了实现位同步而发明出来的东西。

一位(bit)分为4段:同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)、相位缓冲段2(PBS2)。段的单位是Tq,一个完整的位由8-25个Tq组成。

SS段同步段,比如当总线上出现帧起始信号(SOF)时,其它节点上的控制器根据总线上的这个下降沿,对自己的位时序进行调整,把该下降沿包含到 SS 段内,这样根据起始帧来进行同步的方式称为硬同步。其中 SS 段的大小为 1Tq。总线上信号的跳变沿被包含在节点的 SS 段的范围之内,则表示节点与总线的时序是同步的,采样点采集到的总线电平即可被确定为该位的电平。
PTS段传播时间段,这个时间段是用于补偿网络的物理延时时间,包括发送单元的输出延迟、总线上信号的传播延迟、接收单元的输入延迟,这个段的时间为以上各延迟时间的和的两倍。大小可以为 1~8Tq。
PTS1段位缓冲段,主要用来补偿边沿阶段的误差,它的时间长度在重新同步的时候可以加长。 PBS1 段的初始大小可以为 1~8Tq。
PTS2段另一个相位缓冲段,也是用来补偿边沿阶段误差的,它的时间长度在重新同步时可以缩短。 PBS2 段的初始大小可以为 2~8Tq。
SJW重新同步补偿宽度,即在重新同步的时候,PBS1 和 PBS2 段的允许加长或缩短的时间长度,SJW 加大后允许误差加大,但通信速度下降。SJW 为补偿此误差的最大值(即每一次误差补偿都不能超过这个值,1~4Tq)。

CAN的同步分为硬同步和重新同步:

硬同步:在帧起始信号时同步总线上所有器件的位时序,无法确保后续一连串的位时序都是同步的。

重新同步:在检测到总线上的时序与节点使用的时序有相位差时,通过延长PBS1段或缩短PBS2段,来获得同步。

采样点:读取总线电平的时刻,并将读到的电平作为位值的点。位置在PBS1结束处。

延长/缩短PBS段来达到同步:PTS+PBS1小而PBS2加大时采样点前移,PTS+PBS1大而PBS2小时采样点后移。

参考:CAN总线协议_can协议_mustfeng的博客-CSDN博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值