CAN学习笔记---协议

CAN学习笔记

CAN简介

CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO *1 国际标准化的串行通信协议。广泛地应用于工业自动化、汽车、船舶、医疗设备、工业设备等方面。

优势:

  1. 数据传输速度高(最高1Mbit/s)
  2. 抗干扰能力强(差分数据线)
  3. 有自我诊断能力(错误侦测)

CAN协议

物理层

CAN通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有 CAN_HighCAN_Low两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。

ISO11898 标准的高速、短距离“闭环网络”,它的总线最大长度为 40m,通信速度最高为 1Mbps,总线的两端各要求有一个“120 欧”的电阻。

闭环总线网络

ISO11898

ISO11519-2 标准的低速、远距离“开环网络”,它的最大传输距离为 1km,最高通讯速率为 125kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联有一个“2.2 千欧”的电阻。

开环环总线网络

ISO11519-2

协议层

CAN使用的是两条差分信号线,只能表达一个信号,简洁的物理层决定了 CAN 必
然要配上一套更复杂的协议,如何用一个信号通道实现同样、甚至更强大的功能呢?CAN
协议给出的解决方案是对数据、操作命令(如读/写)以及同步信号进行打包,打包后的这些
内容称为报文,这些报文再被封装成帧进行传输。

通信是通过以下 5 种类型的帧进行的。

用途
数据帧用于发送单元向接收单元传送数据的帧。
遥控帧用于接收单元向具有相同 ID 的发送单元请求数据的帧,又称为远程帧。
错误帧用于当检测出错误时向其它单元通知错误的帧。
过载帧用于接收单元通知其尚未做好接收准备的帧。
帧间隔用于将数据帧及遥控帧与前面的帧分离开来的帧。

数据帧

数据帧由 7 个段构成。

数据帧

用途
帧起始表示数据帧开始的段。
仲裁段表示该帧优先级的段。
控制段表示数据的字节数及保留位的段。
数据段数据的内容,可发送 0~8 个字节的数据。
CRC 段检查帧的传输错误的段。
ACK 段表示确认正常接收的段。
帧结束表示数据帧结束的段
  1. 帧起始

表示数据帧开始的段,标准、扩展格式相同,1 个位的显性位。

帧起始

  1. 仲裁段

表示该帧优先级的段。标准帧和扩展帧格式在本段有所区别。

仲裁段
3. 控制段

表示数据的字节数及保留位的段,标准帧和扩展帧的控制段稍有不同。

控制段

  1. 数据段

数据的内容,可发送 0~8个字节的数据。从最高位(MSB)开始输出,标准帧和扩展帧在这个段的定义都是一样的。

数据段

  1. CRC 段

检查帧的传输错误的段。由 15 个位的 CRC 顺序和 1 个位的 CRC 界定符(用
于分隔的位)组成,标准帧和扩展帧在这个段的格式也是相同的。

CRC 段

此段 CRC 的值计算范围包括:帧起始、仲裁段、控制段、数据段。接收方以同样的算法计
算 CRC 值并进行比较,不一致时会通报错误。
6. ACK 段

表示确认正常接收的段。由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位组成。标准帧和扩展帧在这个段的格式也是相同的。

ACK 段

发送单元的 ACK,发送 2 个位的隐性位,而接收到正确消息的单元在 ACK 槽(ACK Slot)
发送显性位,通知发送单元正常接收结束,这个过程叫发送 ACK/返回 ACK。发送 ACK 的是
在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元(发送单元不发送 ACK)。所谓正常消息是指不含填充错误、格式错误、CRC 错误的消息。

  1. 帧结束

表示数据帧结束的段。这个段也比较简单,标准帧和扩展帧在这个段格式一样,由 7 个位的隐性位组成。
帧结束

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值