STM32之CAN总线协议

简介

控制器局域网络(controller area network, CAN)是由德国研发和生产汽车电子产品著称的BOSCH公司开发的,并最终称为国际标准,是国际上应用最广泛的现场总线之一。

物理层

与I2C、SPI等具有时钟信号的通信方式不同,CAN通信并不是以时钟信号来进行同步的。它只具有CAN_High和CAN_Low两条信号线,共同构成一组差分信号线,所以CAN是以差分信号的形式进行通信的,如下图所示:
在这里插入图片描述
图中的CAN通信网络是遵循ISO11898标准的高速短距离闭环网络,它的总线最大长度为40m,通信速度最高为1Mbit/s。还有一种是遵循ISO11519-2标准的低速远距离开环网络,它最大传输距离为1km,最高通信速率为125kbit/s。

  • CAN的通信节点由一个CAN控制器、一个CAN收发器组成。
  • 发送数据时,CAN控制器把要发送的二进制编码通过CAN_Tx线发送到CAN收发器,然后由收发器把这个普通的逻辑电平信号转化成差分信号,通过差分线CAN_High和CAN_Low线输出到CAN总线网络。接收数据时,这个过程相反。
  • 差分信号:信号的逻辑0和逻辑1由两根差分信号线的电压差来表示。ISO11898规定处于逻辑1时(隐性电平),电压差为0,在逻辑0时,电压差为2V.
CAN的报文种类及结构

对数据或操作命令进行打包。

报文的种类

在原始数据段的前面加上传输起始标签,片选(识别)标签、控制标签,在数据的尾段加上CRC校验标签、应答标签和传输结束标签。把这些内容按规定的格式打包好,就可以用一个通道表达各种信号,起到了协同传输的作用。
为了更有效地控制通信,CAN一共规定了5种类型的帧,帧也称为报文。
分为数据帧(用于发送单元向接受单元传送数据的帧)、遥控帧(用于接收单元向具有相同ID的发送单元请求数据的帧)、错误帧(用于当检测出错误时向其他单元通知错误的帧)、过载帧(用于接受单元通知其尚未做好接收准备的帧)、帧间隔(用于将数据帧及遥控帧与前面的帧分离开来的帧)

数据帧的结构

数据帧以一个显性位(逻辑0)开始,以7个连续的隐性位(逻辑1)结束。在它们之间,分为仲裁段、控制段、数据段、CRC段和ACK段。
在这里插入图片描述

  • 仲裁段:主要为本数据帧的ID信息。数据帧分为标准格式和扩展格式两种:标准格式的ID为11位,扩展格式的ID为29位。仲裁段除了报文ID外,还有RTR,IDE,SRR位。RTR用于区分数据帧和遥控帧的,IDE位用于区分标准格式与扩展格式,SRR位只存在于扩展格式。
  • 控制段:在控制段中的r1和r0为保留位,默认设置位显性位。最主要的为DLC段,DLC段由4位组成,MSB先行,它的二进制编码用于表示本报文中的数据段含有多少个字节,DLC段表示的数字为0~8.
  • 数据段:为数据帧的核心内容,它由0~8个字节组成,MSB先行。
  • CRC段:奇偶校验位,在CRC校验码之后,有一个CRC界定符,它为隐性位,主要作用是把CRC校验码与后面的ACK段隔开。
  • ACK段:应答位,包括一个ACK槽位和ACK界定符位。在ACK槽位中,发送端发送的为隐性位,而接收端在这一位中发送显性位以示应答。在ACK槽和帧结束之间由ACK界定符隔开。
  • 帧结束段:帧结束段由发送端发送7个隐性位表示结束。
同步

由于CAN没有时钟信号线,而且它的报文中并没有包含于同步的标志,所以要使用位同步的方式来确保通信时序,以及对总线的电平进行正确采样。

  • 位时序分解:为了实现位同步,CAN协议把每一位的时序分解成下图所示的SS段(SYNC SEG)、PTS段(PROP SEG)、PBS1段(PHASE SEG1)和PBS2段(PHASE SEG2),这四段的长度加起来即为一个CAN数据位的长度。在重新同步的时候,PBS1和PBS2段的允许加长或缩短的时间长度定义为:重新同步补偿宽度(reSynchronization Jump Width, SJW)。
  • 同步过程分析:CAN的同步分为硬同步和重新同步。硬同步时只是在有帧起始信号时起作用,无法确保后续一连串的位时序都是同步的。重新同步是指在检测到总线上的时序与节点使用的时序有相位差时,通过延长PBS1段或缩短PBS2段来获得同步。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值