1 CAN通讯简介
1.1 什么是通讯
为了更好地理解CAN通讯概念,我们借助人与人之间的通讯形式来了解汽车的这种内部通讯模式。当然,首先我们得清楚什么是通讯:
“通讯是两个或两个以上参与者之间交换信息的有意识活动,目的是通过符号和语义规范的共享系统来发送或接收信息。通讯的基本步骤包括通讯意图的形成,信息的组成,信息的编码,信号的发送,信号的接收,信息的解码以及最终的信息解释,这一系列步骤也称之为协议。”
![a902a1bd993f58068741709dfe3a1ba5.png](https://i-blog.csdnimg.cn/blog_migrate/052110d8380d6da1ccb5b31d759aed65.jpeg)
1.2 CAN通讯的引入
比较人与汽车之间的交流/通讯行为后发现:两者概念基本相同。当人们想在一个小组中交流时,通常有几种交流的可能性。一种可能性是:如果一个人想与几个人共享某些信息,则他可以以特定的方式发送该信息,并向每个感兴趣的人重复相同的信息,始终遵循某种协议,即确保所发送信息的通信规则。我们可以将这个概念应用于汽车。
过去,如果控制单元,传感器或执行器要发送某些信息,则必须通过特定的通信通道(电缆)将其发送给每个相关方。例如,如果发动机控制单元要与变速箱控制单元共享信息,则它必须对要发送的每个数据使用特定的介质(电缆)。如果后者想向前者发送信息,情况也是如此,这样就导致需要很多电缆,如图2形式。
![8ab4637d307e28cff8d10c64809723b4.png](https://i-blog.csdnimg.cn/blog_migrate/cdf895fa6a8b2ec47bd75861cc323960.jpeg)
这样的通讯系统的缺点是什么?大量的接线和连接,这意味着重量,复杂性,潜在的故障和额外的成本。此外,未明确连接以接收该信息的其他单元无法知道该信息。随着控制单元数量的增加也会使其可靠性成为噩梦。所以为了克服所有的这些问题,引入了串行通信,这样电缆连接的数量远少于共享信号所需的数量,所以所需的信息会在数据包中一个接一个地发送信息。
CAN BUS发展历史可参考: https:// en.wikipedia.org/wiki/C AN_bus
![613ca9aeb4a94a44499924735420511b.png](https://i-blog.csdnimg.cn/blog_migrate/5cdad348336e398e421c07dc083ddbcd.png)
![828b42ba138710078af9d4e5d3f045b9.png](https://i-blog.csdnimg.cn/blog_migrate/386b1154c6ab4c03c68499968844a40d.jpeg)
1.3 CAN通讯的概念
如果我们将串行通信比喻为人类交流,则可以说一个人使用相同的交流通道将其信息发送给其他人,并且每个人都可以根据各自需要获取信息。例如,一个人可能会向一群人大声说“明天会下雨”。这群人都将听到并且也理解该信息,但并非所有人都对此信息感兴趣,因此他们将丢弃它并等待下一条消息。这篇文章也是如此,我通过知乎和公众号发布,您和阅读它的任何人都会收到该信息,并且每个人都决定如何处理它,无论他们是否感兴趣。
这样我们就可以定义有关CAN总线的第一个理论概念,CAN通讯的数据传输方式类似于电话会议或视频会议。一个人(控制单元)发送其数据,将其输入网络,而其他人“共同收听”该数据。其中一部分人对此数据很有趣,因此他们使用它。另一部分人可能对该特定数据不感兴趣并将其丢弃。
![c9d901fdcd4537af1045d32979bd8ace.png](https://i-blog.csdnimg.cn/blog_migrate/2eaf8d63661ee1d2ca0a3ee6e31078f9.jpeg)
1.4 CAN总线架构
在汽车的CAN总线系统中,上述概念已应用于大多数控制单元,能够在某些特定系统之间创建“本地网络”,从而建立不同级别的重要性和传输速度,如下图5。
![df525402890ac28be503c4c5a6147437.png](https://i-blog.csdnimg.cn/blog_migrate/c56237f2d9c437ebff79b6d0657bd181.jpeg)
这样有什么好处呢?它是一种可扩展的通讯方法,能够根据需要进行较大且复杂的通讯。
那么这些“本地网络”(图5中powertrain, chassis等)怎么实现?总的来说,通过ISO 的串行通讯协议 ISO-11898 和 ISO-11519所规定的CAN总线架构来实现。
ISO-11898 定义了通信速率为 125 kbps ~1Mbps 的 高速 CAN 通信标准,属于 闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米,如图6。
ISO-11519 定义了通信速率为 10~125 kbps 的 低速 CAN 通信标准,属于 开环总线,传输速率为40kbps时,总线长度可达1000米,如图6。
![adb1bf6c275f9d9eb26283ffcb5b4da4.png](https://i-blog.csdnimg.cn/blog_migrate/0c62f12b231fc7f4cee7919fecbd73de.jpeg)
这里CAN通讯速率(位速率)是指单位时间内总线上传输的信息量,即每秒能够传输的二进制位的数量,单位是bit per second,bps。比如位速率为125kbps,意思为一秒传输了125,000 bit,包含了125,000 个二进制事件的信息量。注意位速率与波特率不是同一概念。
位速率与总线长度的关系大致如下图:
![2d7e0d2e1b5e7cb8053fb6c225cfc389.png](https://i-blog.csdnimg.cn/blog_migrate/064fca29f82651abb154d8b2883206f6.png)
上述的高低速CAN总线架构广泛应用于汽车,比如动力网采用高速CAN总线架构,舒适网采用低速CAN总线架构,如下图7所示。
![4a3724605ada58420aa282ca51c17320.png](https://i-blog.csdnimg.cn/blog_migrate/618d1fd23dd7f4f08cfc676c6420c604.jpeg)
1.5 CAN总线结构
了解了高低速CAN两种总线架构的基本概念后,再了解CAN总线的具体结构。将上图6细化,我们可以看到两种CAN总线结构都有CAN_H,CAN_L两根线和多个节点。其中CAN_H和CAN_L线是以双绞形式缠绕,每个节点都有CAN收发器(transceiver)和CAN控制器(controller),CAN收发器和CAN控制器可能集成在芯片(on-chip),也可能是独立于芯片(off-chip)。(图7列举了两种CAN收发器--TJA1054和82C250)
![b8b9ec0a0fbb3df1b01dea046f405c9c.png](https://i-blog.csdnimg.cn/blog_migrate/0d225e041ba2063ad3d339106a9d221e.jpeg)
![ab86e66be7813d3bbb45561bb97662bf.png](https://i-blog.csdnimg.cn/blog_migrate/ddedda3375d5847769b265c9bd1f6a61.png)
双绞线如何抗干扰,参考: https:// zhuanlan.zhihu.com/p/26 544567
1.6 CAN总线信号
CAN总线上,信号表现为电压形式,通过CAN_H和CAN_L线上的电位差来表示CAN信号,分为显性电平(dominant)和隐性电平(recessive)两种类型。其中显性电平规定为逻辑0,隐性电平则为逻辑1。其具体定义可通过下图9来理解。
![aefa0e024136f26c65e033ed8936a2d8.png](https://i-blog.csdnimg.cn/blog_migrate/8f01e149f035918778d2150aa5b532c4.jpeg)
具体说,如上图第1幅图:当CAN_H和CAN_L的电压均为2.5v,两者电压差为0,就规定CAN信号为隐性电平;当CAN_H的电压为3.5v,CAN_L的电压为1.5v,两者电压差为2V,就规定CAN信号为显性电平。这里实际的规定是:电压差满足定义的一定范围,就可以认为是显性电平或者隐性电平,比如电压差在1.5-2.5v范围,都认为是显性电平。
为了加深理解,看了一段实际采集的电压形式的CAN信号:
![bda79d39d0269028dd5e7a3a8175a485.png](https://i-blog.csdnimg.cn/blog_migrate/a6de19d957911af70467fe70edc55410.jpeg)
1.7 CAN总线信号的传输
上述的电位差(差分电平)与逻辑电平由CAN收发器实现。在发送过程,CAN控制器将CPU传来的信号转换为逻辑电平。CAN收发器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。
![d19e3622214a9fd4de8b4b6385c959bf.png](https://i-blog.csdnimg.cn/blog_migrate/52ee4b08315ae5f651b7d8329814eb66.png)
在接收过程,CAN收发器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。
![9f02a8761f95c87af031e08ef8a524bf.png](https://i-blog.csdnimg.cn/blog_migrate/4d867225acdc173e42fca440ce4a2001.png)
通俗地讲,就是发送方通过CAN收发器使总线电平发生变化,将其信息传递到CAN总线上。接收方通过监听总线电平,将总线上的消息读入自己的CAN收发器。
到此我们就了解了CAN通讯的基本概念,CAN总线的2种架构,CAN信号的2种形式,CAN信号的收发2个过程。基于这些基础,那么CAN总线会有怎么样的特性呢?下篇文章我们将具体了解下。
Reference:
[1] Características de un sistema Can Bus
[2] WHAT IS CAN BUS? What is CAN Bus?
[3] Intrusion detection system for automotive Controller Area Network (CAN) bus system: a review
[4] Understanding and Using the Controller Area Network Communication Protocol theory and practice[M].
[5] 恒润科技-CAN教材.pdf
[6] https://blog.csdn.net/weixin_40528417/category_7489864.html