当前位置: 首页 > news >正文

STM32学习和实践笔记(43):CAN通信实验(1)

1.CAN总线介绍

  CAN Controller Area Network 的缩写,中文意思是控制器局域网络,是ISO国际标准化的串行通信协议。德国电气商博世公司1986年面向汽车而开发CAN 通信协议。

此后,CAN 通过ISO11898 及ISO11519 进行了标准化。CAN是国际上应用最广泛的现场总线之一,在欧洲已是汽车网络的标准协议。

CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。

CAN通信只具有两根信号线,分别是CAN_H和CAN_L,CAN 控制器根据这两根线上的电位差来判断总线电平。

总线电平分为显性电平和隐性电平,二者必居其一。

发送方通过使总线电平发生变化,将消息发送给接收方。

(什么是显性电平和隐性电平?

在CAN通信中,隐性电平和显性电平是两种不同的逻辑状态,它们通过CAN_H和CAN_L两线之间的差分电压,来表示不同的逻辑值。

隐性电平(Recessive Level) : 隐性电平代表逻辑“1”。 在总线空闲或发送隐性位时,CAN_H和CAN_L的对地电压都约等于2.5V,两条线之间的电压差为0V 。 当所有节点都输出隐性电平时,总线上即为隐性电平 。 隐性电平具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平 。很明显,只有所有节点的CAN_H和CAN_L都输出2.5V时,总线上两线之电压差才为0.

显性电平(Dominant Level) : 显性电平代表逻辑“0”。 当某个节点要发送信号时,会将CAN_H的电压拉高到约3.75V左右,将CAN_L的电压拉低到约1.25V左右,这样两条线之间的电压差为2.5V 。 在总线上执行逻辑上的“与”运算时,显性电平的逻辑值为“0”,隐性电平为“1” 。 “显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平 。

这个显与隐可以这样记忆:显是显示出来,无论有多少个1,只要他们与0相与,那么结果就将为0.所以,0是很容易在众多个1中显示出来的,所以显示电平,表示逻辑0.

总结来说,隐性电平和显性电平是CAN通信中的两种基本电平状态。隐性电平对应逻辑“1”,当所有节点都输出隐性电平时,总线才表现为隐性电平;而显性电平对应逻辑“0”,当至少有一个节点输出显性电平时,总线表现为显性电平。这种设计使得CAN总线具有很强的抗干扰能力,并能有效保证通信的可靠性)

  CAN协议特点

1多主控制

多主控制,是指多个节点都可以作为主机来使用总线。优先级是根据各节点的ID号来决定的。

(前面学的RS485,传统上一般是一主多从模式。即整个系统中只有一个主节点负责轮询各个从节点以实现通信。但是现代技术,也已经能够使用RS485,支持并实现多主多从模式。)

CAN协议的多主控制是其核心设计思想之一,它构建了一种去中心化的网络架构。为了让你快速把握其与传统主从模式的核心区别,请看下表:

对比维度

传统主从模式 (如Modbus RTU)

CAN多主控制模式

控制权

集中于主设备,存在单点故障风险

分散于所有节点,无单一控制中心

通信发起

只能由主设备发起,从设备被动响应

任何节点在总线空闲时均可主动发起通信

故障影响

主设备故障可能导致整个网络瘫痪

单个节点故障不影响其他节点通信,可靠性高

灵活性

增加或减少从设备需重新配置主设备

新增节点可直接接入,无需修改现有节点软硬件

🔌 工作原理与仲裁机制

多主控制的实现,依赖于两个关键机制:​​“载波侦听”​​ 和​“非破坏性位仲裁”​

  • 载波侦听(CSMA)​​:在发送消息前,每个节点都会持续检测总线状态。只有当总线处于空闲状态​(表现为连续的“隐性”位,即逻辑1)时,节点才会尝试开始发送消息。这就像十字路口的司机,都要先观察路面是否空旷再决定是否通过。

  • 非破坏性位仲裁(NDBA)​​:当多个节点恰好同时开始发送时,冲突如何解决?CAN协议通过仲裁机制优雅地处理了这一点。在传输消息的标识符(ID)​​ 段时,所有节点会一边发送自己的ID位,一边读取总线上的实际电平。

    • CAN总线采用“线与”逻辑:​显性位(逻辑0)会覆盖隐性位(逻辑1)​

    • 这意味着,ID值越小(其二进制表示中前导0越多),优先级越高。当某个节点发送一个隐性位(1),但检测到总线上是显性位(0)时,它立即意识到有更高优先级的消息正在发送,于是主动停止发送并转为接收模式,等待总线空闲后自动重试。(漂亮!!)

    • 关键优势​:这个仲裁过程发生在瞬间,高优先级的消息不受任何影响,仿佛没有发生冲突一样继续传输,保证了总线带宽的高效利用和关键数据的实时性。

💡 为何需要多主控制?

这种设计主要是为了满足汽车、工业控制等场景对高可靠性和强实时性的苛刻要求。

  • 提升可靠性​:没有“主节点”这个单一故障点。任何一个节点(比如车窗控制器)失效,都不会影响发动机控制、刹车系统等关键节点之间的通信,系统容错能力极强。

  • 保证实时性​:紧急消息(如碰撞检测信号)可以赋予最高优先级(最小的ID),确保其总能立即获得总线使用权,几乎无延迟地送达,这对于安全至关重要。

  • 增强灵活性​:系统扩展变得非常简单。增加新功能或新节点时,只需将其接入总线即可,无需改动网络中原有的任何其他节点。

总而言之,CAN的多主控制机制通过巧妙的仲裁规则,在实现去中心化、高可靠性的同时,也确保了高优先级数据的实时传输能力,这是它成为汽车和工业领域主流总线技术的关键原因之一。

2系统的柔软性

这是指挂接在can总线上的各节点,并没有像前面的IIC一样,每个器件有一个地址码。

CAN协议的“系统柔软性”是其核心设计优势之一,它主要描述了系统在增加或减少节点时的高度灵活性和便捷性。简单来说,这意味着当您需要扩展或调整一个基于CAN总线的网络时,​无需修改现有节点的硬件或软件,新节点可以直接接入总线并开始通信。

为了更直观地理解它与传统总线架构的区别,请看下表:

对比维度

传统总线(如主从式RS-485)

CAN总线

寻址方式

依赖唯一的硬件节点地址​(如从机地址1、2、3...)

基于消息标识符(ID)​,标识消息内容和优先级,与发送节点“地址”无关

添加新节点

必须为新增节点分配一个未被占用的唯一地址,并可能需要配置主机以识别该地址,改动较大。

新节点只需接入总线,并配置好与总线相同的通信速率即可。只要其发送的消息ID是唯一的,就能正常收发数据。

数据流动

通常为主设备轮询从设备,通信路径固定。

多主控制,任何节点可在总线空闲时主动发送数据,支持广播,使数据流动更灵活。

💡 柔软性的核心:基于消息标识符的通信

这种柔软性的根源在于CAN协议废除了传统的“站地址”概念。在大多数总线中,每个设备都有一个独一无二的地址,通信时需要指定目标地址。

而CAN协议采用了一种基于消息内容的标识符(ID)​。这个ID并不代表消息要发送到哪个节点,而是标识了消息本身的含义和优先级。例如,一个ID可能代表“发动机转速”,另一个ID代表“车门开关状态”。任何需要“发动机转速”数据的节点,都会去接收并处理这个特定ID的消息。

这种方式带来了两大关键好处:

  1. 即插即用​:新增一个传感器节点时,您只需确保它发送的消息ID在网络中是唯一的,且其通信速率与总线一致即可。其他需要该数据的节点会自动接收,完全不需要为它分配地址或修改现有节点的程序。

  2. 数据共享高效​:一条消息(如“车速”)可以被多个需要它的节点(如仪表盘、ABS系统、发动机控制器)同时接收,实现了高效的数据广播,非常适合分布式控制系统。

🛠️ 实际应用中的体现

这种柔软性在以下场景中价值巨大:

  • 系统扩容​:在工业生产线中,若要增加一个温度监测点,只需将新的温度传感器接入CAN总线,并让其报告一个唯一的温度消息ID。原有的控制器和显示单元无需任何改动就能获取这个新数据。

  • 功能升级​:在汽车电子中,为高端车型增加一个新功能(如盲区监测),只需将相应的控制单元接入现有的CAN网络。它可以通过广播消息与其他系统(如车身控制器、仪表盘)进行交互,而无需改动这些现有系统的基础配置。

💎 总结

总而言之,CAN协议的“系统柔软性”特点使其成为一种非常模块化和易于扩展的通信解决方案。它通过基于消息ID的通信模式,实现了节点的“即插即用”,极大地降低了系统集成、维护和升级的复杂性。这正是它在汽车、工业自动化等需要高度灵活性的领域备受青睐的重要原因之一。

3)通信速度较快,通信距离远

在5Kbps的速度下,距离可以达到10公里!

CAN总线的通讯速度和通讯距离之间确实存在一个非常明确的反比关系,这是其物理特性决定的。简单来说,​通讯速度越高,有效的通讯距离就越短;反之,若要传得更远,就必须降低速度

下表清晰地展示了在不同通讯速率下,CAN总线典型的最大无中继传输距离​ 。

通讯速率 (kbps)

最大通讯距离 (米)

典型应用场景

1000

约 40

汽车动力系统(发动机、ABS等),工业实时控制

500

约 130

工业自动化、车身控制

250

约 270

工业网络、车辆诊断

125

约 530

低速容错CAN,车身舒适系统(车窗、座椅)

100

约 620

50

约 1300​ (1.3公里)

20

约 3300​ (3.3公里)

10

约 6700​ (6.7公里)

5

约 10000​ (10公里)

超长距离低速监测

🔧 核心原理:为何速度与距离不可兼得?

这种反比关系主要由两个物理层面的因素决定:

  1. 信号衰减与畸变​:电信号在导线中传输时,会随着距离的增加而逐渐减弱(衰减),并且由于线路的电容和电感效应,信号的波形会变得圆钝(畸变)。速率越高,信号变化的频率就越快,波形越容易失真。当传输距离过长时,失真会变得严重,导致接收端无法正确识别“0”和“1” 。

  2. 位定时同步​:CAN总线上的所有节点需要保持同步,以便在正确的时刻采样数据位。总线长度增加意味着信号从发送端到接收端的传播延迟也会增加。在高速通信时,这个延迟可能占据一个位宽(bit time)的相当大部分,留给各个节点调整同步的余量就非常小,容易造成采样错误 。

因此,为了保证通信的可靠性,在长距离传输时,必须降低速率,给信号衰减和传播延迟留出足够的容错空间。

💡 工程实践中的要点与对策

了解这一关系后,在实际项目中需要注意以下几点:

  • 确定实际需求​:首先明确你的项目对实时性(速度)​​ 和覆盖范围(距离)​​ 哪个要求更高。例如,控制机器人关节需要高速短距离,而监控分布式农田传感器则可能需要低速长距离。

  • 遵守布线规范​:为了最大限度保证信号质量,应使用特性阻抗约为120Ω的双绞线,并在总线的最远两端各并联一个120Ω的终端电阻,以消除信号反射 。

  • 突破距离限制​:如果项目既需要高速度,又需要长距离,单段CAN总线无法满足。此时可以使用中继器(Repeater)​​ 或 ​CAN网关(Gateway)​​ 将长距离分割成几个较短的网段,或者在CAN总线和其他适合长距离的通信方式(如光纤、以太网)之间进行转换 。

💎 总结

总而言之,CAN总线的通讯速度与距离是此消彼长的关系,这是其物理特性决定的。在设计系统时,您需要根据实际应用场景在速度和距离之间做出权衡,并遵循正确的布线规范。对于极端的需求,可以通过添加网络设备来扩展能力。

4)具有错误检测、错误通知和错误恢复功能

所有节点,都有错误检测功能,一旦检测到错误,即通知所有节点。而正在发送的节点会停止当前发送而重新发送,直到重新发送成功为止。

5)故障封闭功能

是指故障是完全分类的,不存在不可识别的故障。

6)连接节点多

这与通讯速度有关。节点越多,速度越慢。

高速can协议可挂最多30个设备。

低速can协议最多可挂20个设备。

  CAN 已通过ISO11898 及ISO11519 进行了标准化,这两种标准在物理层的主要不同点如图

 开发板上使用ISO11898版本讲解。

对ISO11898,隐性时,两根线上电压都为2.5V,所以其标准电压差是0,这表示逻辑1.

显性时,CAN_High为3.5V,CAN_Low为1V,所以两线的标准电压差是2.5V,这表示逻辑0

CAN总线能够实现“显性电平覆盖隐性电平”,进而实现优雅的总线仲裁,主要依赖于其独特的硬件电路设计​(“线与”逻辑)和协议规则​(非破坏性仲裁机制)。

简单来说,您可以把它想象成一场“礼貌的抢答”:很多人可以同时举手,但一旦看到有人举得更高(显性电平),其他人就会立刻放下手,让那位举得最高的人发言,整个过程没有争吵和混乱。

下面这个表格清晰地展示了实现这一功能的关键基础:

关键要素

具体说明

物理逻辑

​“线与”逻辑​:总线上的所有CAN收发器输出端是并联的,形成类似“线与”的关系。

电平定义

显性电平 (逻辑0)​​:差分电压 > 0.9V(典型值2V),​优先级高
隐性电平 (逻辑1)​​:差分电压 < 0.5V(典型值0V),​优先级低

电路特性

显性电平(逻辑0)在电路上表现为主动驱动到低电平,如同“强力下拉”。而隐性电平(逻辑1)则表现为高阻态(释放总线)​,仅靠终端电阻拉回。

💡 工作机制详解

基于以上基础,其工作流程如下:

  1. 硬件基础:“线与”连接

    所有连接到CAN总线上的节点的CAN_H和CAN_L线分别是并联在一起的。这意味着任何一个节点都可以主动地将总线拉到一个确定的电平上

  2. ​“覆盖”的瞬间:显性电平的主导作用

    当总线处于隐性状态(所有节点都输出1)时,差分电压为0V。此时,如果有任何一个节点开始发送显性电平(0)​,它的收发器内部的晶体管会导通,将CAN_H拉向高电压(如3.5V),将CAN_L拉向低电压(如1.5V),从而产生一个约2V的差分电压。

    由于是“线与”连接,这个强制的低电平(0)会覆盖掉其他节点试图维持的高电平(1)​。从电路上看,就好像是“接地”的力量战胜了“上拉”的力量。因此,整个总线会立即呈现出显性电平状态。

  3. 协议保障:非破坏性仲裁

    这一物理特性被CAN协议巧妙地用于解决多节点同时发送的冲突,即“仲裁”。

    • 每个节点在发送每一位数据的同时,也在回读总线上的实际电平

    • 仲裁发生在数据帧的标识符(ID)段。ID值越小(其二进制表示前导0越多),优先级越高。

    • 当两个节点同时发送时,它们会从ID的最高位开始逐位比较。如果某个节点发送的是隐性位(1),但回读到的却是显性位(0),它就会立即停止发送,并转为接收模式

    • 由于这个退出操作是瞬间完成的,​获胜节点(发送显性位的一方)的发送流不会受到任何干扰,可以继续完成整个报文的传输。这就是“非破坏性”的含义——仲裁过程不会损坏高优先级的数据。

💎 总结

所以,CAN总线通过其收发器的硬件设计,使得显性电平(0)在电路层面具备强制覆盖隐性电平(1)的能力。这一特性与协议层的实时回读和仲裁规则相结合,共同实现了高效、无冲突的多主通信。这正是CAN总线高可靠性和实时性的基石之一。

CAN总线具有多节点可组网特性,其网络拓扑结构如下所示:节点2到节点N,与节点1有完全相同的结构。

(开发板上使用的CAN收发器是TJA1040)

  CAN 通信主要是通过 5 种类型的帧进行,分别是数据帧、遥控帧、错误帧、过载帧和帧间隔。各种帧的用途如图:

 以下只详细说明了5种类型中的数据帧。其余帧的构成参考其它资料。

数据帧的构成如图:

D:显性电平

R:隐性电平

①.帧起始是由 1 个位的显性电平表示,标准帧和扩展帧相同

②.仲裁段,表示数据优先级的段,标准帧和扩展帧格式在本段有所区别,如图

③.控制段由 6 个位构成,表示数据段的字节数。标准帧和扩展帧的控制段稍有不同,如图

④.数据段,该段可包含 0~8 个字节的数据。从MSB(最高位)开始输出,标准帧和扩展帧此段相同。如图

⑤.CRC 段,该段用于检查帧传输错误。由 15 个位的 CRC 顺序和 1 个位的 CRC 界定符(用于分隔的位)构成,标准帧和扩展帧此段也是相同的。如图

⑥.ACK 段,此段用来确认是否正常接收。 ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成。标准帧和扩展帧此段也是相同的。如图:

⑦.帧结束,它表示该帧的结束的段,由 7 个位的隐性位构成。标准帧和扩展帧此帧是相同的。如图

CAN 的位时序

  由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。

一个位可分为 4 段,分别是:

· 同步段( SS)

· 传播时间段( PTS)

· 相位缓冲段 1( PBS1

· 相位缓冲段 2( PBS2

  这些段又由可称为 Time Quantum(Tq)的最小时间单位构成。

所以1 位分为 4 个段,每个段又由若干个 Tq 构成,这称为位时序。

(这就与我们平时理解的位不一样了。通常我们理解的位,都是高电平表示1,低电平表示0,但这里的位,构成要复杂得多)

1 个位的构成如下图所示:

 

其中,采样点是指读取总线电平的点。读到什么值,就认为这一位(这一bit)值是高还是是低。

CAN 协议仲裁功能

  在总线空闲态,最先开始发送消息的单元获得发送权。当多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。仲裁的过程如图:

以上是关于CAN总线的通用介绍。下面讲的是STM32里的CAN总线的结构实现。

http://www.dtcms.com/a/521958.html

相关文章:

  • 企业网站模板 优帮云百度搜索排名购买
  • 编程项目实例网站61源码网
  • 做壁纸网站好百度文库账号登录入口
  • UniVLA训练思路
  • 教育培训网站案例深圳网站建设 利科技
  • 网站2级目录怎么做个人网站首页内容
  • 禁忌网站wordpress 分类 标题
  • 喀什哪有做网站的网站logo怎么改
  • dede网站模板下载哈尔滨网站建设丿薇
  • 文化传播公司网站备案网络公司的网页设计
  • 【C++闯关笔记】map与set底层:二叉搜索树
  • 电影网站 模板专业的赣州网站建设
  • 微网站制作软件企业网关
  • 社交网站制作建站网址导航hao123
  • 公司品牌网站建设福建建设人才市场网站
  • PHP网站建设视频免费加盟酒店网站制作
  • 网站开发技术要学什么ghost 博客wordpress
  • 免费网站电视剧全免费的app简述传统营销与网络营销的整合
  • 循化网站建设公司wordpress crossapple
  • 深圳做模板网站python官网
  • 滁州市建设工程管理处网站公益 建网站
  • 厦门网站建设模拟南宁营销型网站专家
  • 二级域名网站可以做关键词优化吗智慧团建登录入口官网电脑版
  • 网站排名不可有利就前网站建设维护 知乎
  • 常德人才网百度搜索引擎关键词优化
  • php网站建设的几个流程wordpress大学主题下载
  • 如何建设软件下载网站wordpress手机站点
  • 宝塔面板怎么建设网站零陵网站建设
  • 备案系统新增网站照片编辑器app
  • 企业网站建设方案书目录网站公司的利润