首先非常感谢秉火团队为我们提供学习STM32的丰富资料及详细教程。本笔记仅用作个人学习记录,以此加深记忆,如感觉有帮助,可感谢支持秉火团队。
CAN 协议简介
CAN 是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品著称的德国BOSCH 公司开发的,并最终成为国际标准(ISO11519),是国际上应用
最广泛的现场总线之一。
CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN 为底层协议专为大型货车和重工机械车辆设计的J1939 协议。近年来,它具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强及振动大的工业环境。
CAN 特点

通信方式 数据通信方向 数据通信时序 通信速率 通信距离
串行通讯 半双工 异步通讯 高速1M/低速125Kbps 高速40m/低速1km

CAN 物理层
与I2C、SPI 等具有时钟信号的同步通讯方式不同,CAN 通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有CAN_High 和CAN_Low 两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。
1. 闭环总线网络
CAN 物理层的形式主要有两种,图 42-1 中的CAN 通讯网络是一种遵循ISO11898 标准的高速、短距离“闭环网络”,它的总线最大长度为40m,通信速度最高为1Mbps,总线的两端各要求有一个“120 欧”的电阻。

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

3. 通讯节点
从CAN 通讯网络图可了解到,CAN 总线上可以挂载多个通讯节点,节点之间的信号经过总线传输,实现节点间通讯。由于CAN 通讯协议不对节点进行地址编码,而是对数据内容进行编码的,所以网络中的节点个数理论上不受限制,只要总线的负载足够即可,可以通过中继器增强负载。
CAN 通讯节点由一个CAN 控制器及CAN 收发器组成,控制器与收发器之间通过CAN_Tx 及CAN_Rx 信号线相连,收发器与CAN 总线之间使用CAN_High 及CAN_Low信号线相连。其中CAN_Tx 及CAN_Rx 使用普通的类似TTL 逻辑信号,而CAN_High 及CAN_Low 是一对差分信号线,使用比较特别的差分信号。
4. 差分信号
差分信号又称差模信号,与传统使用单根信号线电压表示逻辑的方式有区别,使用差分信号传输时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差值来表示逻辑0 和逻辑1。见图 42-3,它使用了V+与V-信号的差值表达出了图下方的信号。

相对于单信号线传输的方式,使用差分信号传输具有如下优点:

  • 抗干扰能力强,当外界存在噪声干扰时,几乎会同时耦合到两条信号线上,而接
    收端只关心两个信号的差值,所以外界的共模噪声可以被完全抵消。
  • 能有效抑制它对外部的电磁干扰,同样的道理,由于两根信号的极性相反,他们
    对外辐射的电磁场可以相互抵消,耦合的越紧密,泄放到外界的电磁能量越少。
  • 时序定位精确,由于差分信号的开关变化是位于两个信号的交点,而不像普通单
    端信号依靠高低两个阈值电压判断,因而受工艺,温度的影响小,能降低时序上
    的误差,同时也更适合于低幅度信号的电路。

由于差分信号线具有这些优点,所以在USB 协议、485 协议、以太网协议及CAN 协议的物理层中,都使用了差分信号传输。
5. CAN 协议中的差分信号
CAN 协议中对它使用的CAN_High 及CAN_Low 表示的差分信号做了规定,以高速CAN 协议为例。
当CAN_High 和CAN_Low线上的电压均为2.5v,即它们的电压差VH-VL=0V时,表示逻辑1 (隐性电平);
当CAN_High 的电平为3.5V,CAN_Low 线的电平为1.5V,即它们的电压差为VH-VL=2V时,而表示逻辑0 (显性电平)。


在CAN 总线中,必须使它处于隐性电平(逻辑1)或显性电平(逻辑0)中的其中一个状态。假如有两个CAN 通讯节点,在同一时间,一个输出隐性电平,另一个输出显性电平,类似I2C 总线的“线与”特性将使它处于显性电平状态,显性电平的名字就是这样来的,即可以认为显性具有优先的意味。
由于CAN 总线协议的物理层只有1 对差分线,在一个时刻只能表示一个信号,所以对通讯节点来说,CAN 通讯是半双工的,收发数据需要分时进行。在CAN 的通讯网络中,因为共用总线,在整个网络中同一时刻只能有一个通讯节点发送信号,其余的节点在该时刻都只能接收。

CAN通讯方式--秉火STM32学习笔记相关推荐

  1. CAN通讯协议层--秉火STM32学习笔记

    首先非常感谢秉火团队为我们提供学习STM32的丰富资料及详细教程,此笔记仅用作个人学习记录,以此加深记忆,如果读者也喜欢,请一同感谢并支持秉火团队. 1. CAN 的波特率及位同步 由于CAN 属于异 ...

  2. 嵌入式设备的通讯--秉火STM32学习笔记

    首先非常感谢秉火团队为我们提供学习STM32的丰富资料及详细教程. 在计算机设备与设备之间或集成电路之间常常需要进行数据传输,数据传输的实现方式总结如下. 串行通讯与并行通讯 按数据传送的方式,通讯可 ...

  3. 《STM32学习笔记》4——核心功能电路与编程(下)

    接上文,文中的图片,大多数来自视频的截图(来自洋桃电子). 欢迎大家批评指正! STM32学习笔记-专栏 文章目录 一.蜂鸣器驱动 1.蜂鸣器介绍 2.蜂鸣器电路 3.蜂鸣器程序 二. MIDI 音乐 ...

  4. stm32学习笔记---ADC电压采集

    1.  ①电压输入范围 ADC 输入范围为:VREF- ≤ VIN ≤ VREF+.由 VREF-.VREF+ .VDDA .VSSA.这四个外部 引脚决定. 我们在设计原理图的时候一般把 VSSA ...

  5. 009 - STM32学习笔记 - 中断

    009 - STM32学习笔记 - 中断 这节的内容,野火的官方视频我反复看了好几次,但是感觉火哥在这块讲解的特别绕,理解起来很吃力,后来在看了一下其他老师的视频,结合一些书本资料和官方手册,才搞清楚 ...

  6. STM32学习笔记 | 引起电源和系统异常复位的原因

    关注+星标公众号,不错过精彩内容 每一块处理器都有复位的功能,不同处理器复位的类型可能有差异,引起复位的原因也可能有多种. STM32的复位功能非常强大,可通过软件.硬件和一些事件触发系统复位,而且通 ...

  7. 【STM32学习笔记-点亮LED灯】

    STM32学习笔记-点亮LED灯 文章目录 STM32学习笔记-点亮LED灯 一.原理图分析 二.代码分析 1.mian函数 2.led.c函数 3.led.h函数 4.函数文件整理 5.LED_In ...

  8. STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)

    本篇文章包含的内容 一.TIM 定时器 1.1 TIM 定时器简介 1.2 TIM 定时器类型及其工作原理简介 1.2.1 基本定时器工作原理及其结构 1.2.2 通用定时器工作原理及其结构 1.2. ...

  9. STM32学习笔记(15)——SPI协议

    STM32学习笔记(15)--SPI协议 一.SPI协议简介 1. 物理层 2. 协议层 (1) 通讯的开始与停止 (2)时钟极性CPOL.时钟相位CPHA 二.STM32的SPI外设 1. 通讯引脚 ...

最新文章

  1. vue解决启动报错cjs loader.js Error: Cannot find module ‘../config‘问题
  2. powershell实例第1讲:判断某个文件夹是否存在,存在则删除
  3. MATLAB 图像的傅里叶变换
  4. ibe加密原理_ibe 基于身份的IBE加密源代码,采用C++语言编写,能够运行。 Crypt_De algrithms 解密 238万源代码下载- www.pudn.com...
  5. kgtemp文件转换mp3_amr转换mp3格式文件
  6. win10必须禁用的服务_【亲测】Win10系统如何彻底禁止自动更新 亲测有效的Win10关闭自动更新方法...
  7. 重学java基础第九课:软件和软件关系
  8. 八皇后问题 递归求解法
  9. c 窗体中添加mysql控件,MYSQL 统计数据-svn服务器启动-WinFrom控件库|.net开源控件库|HZHControls官网...
  10. 【Spring 】启动报错 LoggerFactory is not a Logback LoggerContext but Logback...
  11. Python字符串常用操作方法
  12. 官网下的 demoMUI,a链接失效和点击事件失效
  13. android坐标画图软件下载,几何平板Geometry Pad(绘图,测量数字坐标轴)2.7.0
  14. 红米6pro刷Android原生,红米6 Pro 魔趣OS 安卓9 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
  15. vue 创建项目时报错yorkie: Command failed.
  16. 熊国正版游戏之TXT文字乱码【已解决】【rutracker】【byrut】【单机】【破解】【俄罗斯】
  17. MATLAB绘制图中图
  18. numpy_flatten函数
  19. 【python】自动登录51cto家园
  20. 解决T400\T500\W500等安装win10驱动后黑屏问题

热门文章

  1. 记录开始学习AS400(01)
  2. ITN网络课程笔记(十七)(完)
  3. iOS图片转成视频方法
  4. 苹果app禁止手势退出
  5. 使用 Azure Databricks 做ETL
  6. 【面试篇】牛客网面试总结
  7. 给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐。
  8. 有100块钱,每3块钱可以买一瓶汽水,每3个瓶子可以换一瓶汽水。问最后能买几瓶汽水
  9. W5500+DHCP+DNS+MQTT
  10. Top 11 Best Practices for PHP Development