嵌入式学习小组
直播中

李义坤

7年用户 594经验值
私信 关注

CAN总线协议详解

电子通信协议之CAN总线协议篇

回帖(10)

薛丽娜

2020-12-28 15:38:13
CAN(Controller Area Network)即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。
想到CAN就要想到德国的 Bosch公司,因为CAN就是这个公司和Intel于80年代末开发的。
CAN有很多优秀的特点,使得它能够被广泛的应用。比如:传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。
近些年来,CAN控制器价格越来越低,很多MCU也集成了CAN控制器。现在每一辆汽车上都装有CAN总线。
一个典型的CAN应用场景:

图1. 一个典型的CAN应用场景
举报

张玉珍

2020-12-28 15:39:02
  CAN总线标准
  CAN总线标准只规定了物理层和数据链路层,需要用户自定义应用层。不同的CAN标准仅物理层不同。
  
  图2. CAN总线标准
  CAN收发器负责逻辑电平和物理信号之间的转换。
  
  将逻辑信号转换成物理信号(差分电平),或者将物理信号转换成逻辑电平。
  CAN标准有两个,即IOS11898和IOS11519,两者差分电平特性不同。
  
  图3-1. ISO11898高速CAN电平 图3-2. ISO11519-2低速CAN电平
  高低电平幅度低,对应的传输速度快;
  
  图4. CAN标准比对
  *双绞线共模消除干扰,是因为电平同时变化,电压差不变。
举报

刘双正

2020-12-28 15:39:30
  物理层
  CAN有三种接口器件:
  
  
  多个节点连接,只要有一个为低电平,总线就为低电平,只有所有节点输出高电平时,才为高电平。所谓”线与”。
  CAN总线有5个连续相同位后,就插入一个相反位,产生跳变沿,用于同步。从而消除累积误差。
  和485、232一样,CAN的传输速度与距离成反比。
  
  CAN总线的终端电阻的接法如下图5所示:
  
  图5. 低速/高速 CAN-bus终端电阻接法
  增加终端电阻的目的是为了增强CAN通讯的可靠性,消除CAN总线终端信号反射干扰。
  Note: 一般如果CAN总线使用的是在双绞线上运行,这时我们会增加120Ω的电阻。为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线。
举报

马超

2020-12-28 15:39:45
  数据链路层
  CAN总线传输的是CAN帧,CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧和帧间隔。
  数据帧用来节点之间收发数据,是使用最多的帧类型;远程帧用来接收节点向发送节点接收数据;错误帧是某节点发现帧错误时用来向其他节点通知的帧;过载帧是接收节点用来向发送节点告知自身接收能力的帧;用于将数据帧、远程帧与前面帧隔离的帧。
  CAN的报文格
  在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。
  在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
  控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (RO),为将来扩展使用。它的最后四个位用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。
  应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。
  报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。
  如图6所示,具体某一位或某几位下面会详细介绍。
  
  图6. CAN总线报文结构
举报

更多回帖

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