关注+星标公众,不错过精彩内容

视频号 | strongerHuang

微信公众号 | strongerHuang

本文说的CAN即是一种总线,也是一种协议。因此,我们常听见CAN总线,也常听见CAN协议。

CAN协议和CANOpen协议是两套不同的协议。从软硬件层次来划分,CAN协议属于硬件协议,而CANOpen属于软件协议

本文将概述CAN网络,让大家对CAN总线协议有一个全局的概念,再到底层的CAN总线协议知识。

1CAN网络

CAN网络可以理解为多台CAN设备连接在同一条CAN总线上组合成的网络,其中的CAN设备我们称之为节点。CAN网络拓扑结构如下图:

如上图,一个CAN节点主要包含三类:MCU应用程序、CAN控制器、CAN收发器

1. MCU应用程序

MCU应用程序我将其分为三块:业务逻辑代码、协议层代码、底层驱动代码

A.业务逻辑代码:是根据项目需求而定,也很好理解。比如我读取一个传感器数据,并对其做出相应逻辑处理。

B.协议层代码:比如后续要讲述的CANOpen。

C.底层驱动代码:配置CAN总线相应参数、控制收发的代码。

2.CAN控制器

CAN控制器内部结构还是挺复杂的,一般现在CAN控制器都是与处理器集成在一起

其实对于编程的人来说,无非也就是包含一些控制、状态、配置等寄存器。

比如我们看到有些STM32芯片带有CAN,也就是说CAN控制器已经集成在STM32芯片中了,我们只需要编程操作其中的寄存器即可。

3.CAN收发器

CAN收发器:将CAN收发引脚(CAN_TX和CAN_RX)的TTL信号转换成CAN总线的电平信号

PS:你可以把CAN总线通信认为是UART通过485进行通信:CAN控制器就如UART的控制器,而CAN收发器就如485转换芯片。

2ISO标准化的CAN协议

写这一章节的主要目的就是想让大家了解CAN总线位于OSI所在层次。

1.ISO/OSI基本参照模型

【注】

ISO:International Standardization Organization国际标准化组织;

OSI:Open Systems Interconnection开放式系统间互联;

2.CAN在OSI模型中的定义

【注】

LLC:Logical Link Control逻辑链路控制;

MAC:Medium Access Control媒介访问控制;

从上图可以知道CAN总线底层硬件的内容(CAN控制器、收发器)主要位于OSI的第1层和第2层。

3概述CAN总线协议

CAN总线协议:就是为了保证通信(收发)数据在CAN总线上能稳定传输而制订的一套协议。

CAN总线协议的内容很多,为方便初学者理解,本文先大概描述一下CAN总线协议,后续文章详细讲述CAN总线协议的内容。

1.总线信号

CAN总线为「两线」「差分」信号,用隐形代表逻辑1,显性代表逻辑0。如下图:

2.优先级

假如某一时刻,一个设备(节点)往总线发0,一个设备往总线发1。那么总线会呈现什么现象?

答案:最后总线呈现为显性,也就是0。

3.位时序

位时序逻辑将监视串行总线,执行采样并调整采样点,在调整采样点时,需要在起始位边沿进行同步并后续的边沿进行再同步。

简单的说就是对一个bit位分几段进行采样,目的就是提高数据传输稳定性。在STM32中底层驱动代码就需要进行位时序编程,在STM32参考手册中也会发现如下位时序图:

4.帧的种类和格式

帧的种类有多种:

数据帧:用于发送单元向接收单元传送数据的帧。

遥控帧:用于接收单元向具有相同 ID 的发送单元请求数据的帧。

错误帧:用于当检测出错误时向其它单元通知错误的帧。

过载帧:用于接收单元通知其尚未做好接收准备的帧。

帧间隔:用于将数据帧及遥控帧与前面的帧分离开来的帧。

数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符ID,扩展格式有29个位的ID。

5.位填充

位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。如下图:

6.错误的种类

CAN总线协议内容很多,初学者可以先了解这些,希望对你有所帮助。

------------ END ------------

关注公众号后台回复『通信教程』『单片机』相关文章。

回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

点击“阅读原文”查看更多分享

通信教程 | CAN总线协议基础原理相关推荐

  1. 计算机网络——IP协议基础原理

    摘要 IP协议提供的一种统一的地址格式.它为互联网上的每一个网络和主机分配一个逻辑地址所以IP地址也叫逻辑地址,用来屏蔽物理地址的差异,MAC地址每一个机器都有一个编码.IP地址是32位二进制数据分为 ...

  2. 通信教程 | SPI接口说明及原理

    视频号 | strongerHuang 微信公众号 | strongerHuang 1简介 SPI:Serial Peripheral Interface,是串行外设接口. SPI是由摩托罗拉于 19 ...

  3. 收藏:NVMe协议基础原理介绍

    概述:NVM Express(NVMe),或称非易失性内存主机控制器接口规范(英语:Non Volatile Memory Host Controller Interface Specificatio ...

  4. 细说汽车电子通信总线之CAN 2.0 总线协议详解

    引言 1. CAN总线发展历史与ISO规范 2. CAN总线主要功能特性 3. CAN 2.0总线协议的物理层电气特性 4. CAN 2.0总线协议消息报文详解 4.1 CAN2.0总线的通信报文帧格 ...

  5. can总线不加末端电阻_细说汽车电子通信总线之CAN 2.0 总线协议详解

    引言 1. CAN总线发展历史与ISO规范 2. CAN总线主要功能特性 3. CAN 2.0总线协议的物理层电气特性 4. CAN 2.0总线协议消息报文详解 4.1 CAN2.0总线的通信报文帧格 ...

  6. 计算机网络——ARP协议(地址解析)原理

    摘要 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的 ...

  7. 通信教程 | 常见串行通信基础原理

    视频号 | strongerHuang 微信公众号 | strongerHuang 为什么要讲述串行通信呢?因为现在并行通信相对很少见,基本上都是串行通信. 今天给大家概要讲述一下常见的串行通信及相关 ...

  8. 通信教程 | USB接口、标准和基础原理

    关注+星标公众号,不错过精彩内容 视频号 | strongerHuang 微信公众号 | strongerHuang 1写在前面 USB:Universal Serial Bus,通用串行总线. US ...

  9. 通信教程05_USB接口、标准和基础原理

    关注.星标公众号,不错过精彩内容 本教程由作者strongerHuang于2019年11月原创发布. 标签:串口. USB. 通信 版权所有:禁止商用 申明:该文档仅供个人学习使用,转载请公众号联系作 ...

  10. 通信教程 | I²C基础原理及通信协议

    视频号 | strongerHuang 微信公众号 | strongerHuang I²C是目前使用较多的一种总线,一般用于连接各种从设备,比如:EEPROM存储器.温湿度传感器.角速度计等. 1I2 ...

最新文章

  1. 数组中存储不定个数的元素
  2. Keyword-Driven Testing
  3. WEB OS + WEB IM(续)
  4. 项目管理学习总结(6)——产品经理常用的工具有哪些?
  5. 终于从yahoo手中把域名抢救出来了
  6. 没使用Spring Cloud的版本管理导致Eureka服务无法注册到Eureka服务注册中心
  7. 管理感悟:先做事,后做人
  8. 邮件里直接显示图片_利用邮件合并带图片功能批量制作准考证、工作证、成绩通知单等...
  9. 贝叶斯优化混合核极限学习机回归预测
  10. 430单片机实现三人投票表决器_用ATC实现三人表决器.doc
  11. misc学习笔记2-图形密码
  12. ubuntu下使用命令行查看opencv版本
  13. 百度AI 开放平台API调用
  14. 淘宝评论数据抓取简记
  15. R语言igraph软件包方法
  16. Termux搭建图形化环境及tk开发
  17. 关于python赋值语句下列选项中描述正确的是_关于 Python 语句 P = –P,以下选项中描述正确的是________...
  18. 推荐一些亲测实用的小软件
  19. Hashmap底层源码
  20. 百度地图三种定位方式测试(高精度、低功耗、仅用设备)

热门文章

  1. linux系统怎么关闭445端口,如何关闭window 系统的445端口等方法 预防勒索病毒
  2. mysql打开数据库的sql语句_数据库MySQL——SQL语句(命令)
  3. Onvif协议学习:11、图像抓拍
  4. mysql内连接和左连接的区别_MySQL连接查询 内连接和外连接的区别
  5. python 批量改文件后缀_python如何批量修改文件后缀名?批量修改文件后缀名的方法...
  6. c语言随机抽取函数,Excel随机取值,给你三种解决方案
  7. 【DM7】JAVA操作达梦数据库7.0
  8. numpy 全部笔记的思维导图精简记忆版
  9. JS导出Excel文件的方式
  10. jeesit1.27使用(1)-字典使用