2个相同的 stm32 can通讯不成功_CAN通讯系列--CAN通讯简介1

1 CAN通讯简介

1.1 什么是通讯

为了更好地理解CAN通讯概念,我们借助人与人之间的通讯形式来了解汽车的这种内部通讯模式。当然,首先我们得清楚什么是通讯

“通讯是两个或两个以上参与者之间交换信息的有意识活动,目的是通过符号和语义规范的共享系统来发送或接收信息。通讯的基本步骤包括通讯意图的形成,信息的组成,信息的编码,信号的发送,信号的接收,信息的解码以及最终的信息解释,这一系列步骤也称之为协议。”

a902a1bd993f58068741709dfe3a1ba5.png
图1 通讯的概念,引自[1]

1.2 CAN通讯的引入

比较人与汽车之间的交流/通讯行为后发现:两者概念基本相同。当人们想在一个小组中交流时,通常有几种交流的可能性。一种可能性是:如果一个人想与几个人共享某些信息,则他可以以特定的方式发送该信息,并向每个感兴趣的人重复相同的信息,始终遵循某种协议,即确保所发送信息的通信规则。我们可以将这个概念应用于汽车。

过去,如果控制单元,传感器或执行器要发送某些信息,则必须通过特定的通信通道(电缆)将其发送给每个相关方。例如,如果发动机控制单元要与变速箱控制单元共享信息,则它必须对要发送的每个数据使用特定的介质(电缆)。如果后者想向前者发送信息,情况也是如此,这样就导致需要很多电缆,如图2形式。

8ab4637d307e28cff8d10c64809723b4.png
图2 传统的多线通讯,引自[2]

这样的通讯系统的缺点是什么?大量的接线和连接,这意味着重量,复杂性,潜在的故障和额外的成本。此外,未明确连接以接收该信息的其他单元无法知道该信息。随着控制单元数量的增加也会使其可靠性成为噩梦。所以为了克服所有的这些问题,引入了串行通信,这样电缆连接的数量远少于共享信号所需的数量,所以所需的信息会在数据包中一个接一个地发送信息。

CAN BUS发展历史可参考: https:// en.wikipedia.org/wiki/C AN_bus

613ca9aeb4a94a44499924735420511b.png
图3 CAN总线通讯,引自[2]

828b42ba138710078af9d4e5d3f045b9.png
图4 引入串行通信图1的变化,引自[1]

1.3 CAN通讯的概念

如果我们将串行通信比喻为人类交流,则可以说一个人使用相同的交流通道将其信息发送给其他人,并且每个人都可以根据各自需要获取信息。例如,一个人可能会向一群人大声说“明天会下雨”。这群人都将听到并且也理解该信息,但并非所有人都对此信息感兴趣,因此他们将丢弃它并等待下一条消息。这篇文章也是如此,我通过知乎和公众号发布,您和阅读它的任何人都会收到该信息,并且每个人都决定如何处理它,无论他们是否感兴趣。

这样我们就可以定义有关CAN总线的第一个理论概念,CAN通讯的数据传输方式类似于电话会议或视频会议。一个人(控制单元)发送其数据,将其输入网络,而其他人“共同收听”该数据。其中一部分人对此数据很有趣,因此他们使用它。另一部分人可能对该特定数据不感兴趣并将其丢弃。

c9d901fdcd4537af1045d32979bd8ace.png
图4 CAN通讯方式示意,引自[1]

1.4 CAN总线架构

在汽车的CAN总线系统中,上述概念已应用于大多数控制单元,能够在某些特定系统之间创建“本地网络”,从而建立不同级别的重要性和传输速度,如下图5。

df525402890ac28be503c4c5a6147437.png
图5 车辆CAN通信系统示意,A-CAN, B-ECU, C-gateways. 引自[3]

这样有什么好处呢?它是一种可扩展的通讯方法,能够根据需要进行较大且复杂的通讯。

那么这些“本地网络”(图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
图6 两类CAN总线,引自[4]

这里CAN通讯速率(位速率)是指单位时间内总线上传输的信息量,即每秒能够传输的二进制位的数量,单位是bit per second,bps。比如位速率为125kbps,意思为一秒传输了125,000 bit,包含了125,000 个二进制事件的信息量。注意位速率与波特率不是同一概念。

位速率与总线长度的关系大致如下图:

2d7e0d2e1b5e7cb8053fb6c225cfc389.png

上述的高低速CAN总线架构广泛应用于汽车,比如动力网采用高速CAN总线架构,舒适网采用低速CAN总线架构,如下图7所示。

4a3724605ada58420aa282ca51c17320.png
图7 总线应用,引自[5]

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
图8 两类CAN总线的具体结构,引自[6]

ab86e66be7813d3bbb45561bb97662bf.png
双绞线如何抗干扰,参考: https:// zhuanlan.zhihu.com/p/26 544567

1.6 CAN总线信号

CAN总线上,信号表现为电压形式,通过CAN_H和CAN_L线上的电位差来表示CAN信号,分为显性电平(dominant)和隐性电平(recessive)两种类型。其中显性电平规定为逻辑0,隐性电平则为逻辑1。其具体定义可通过下图9来理解。

aefa0e024136f26c65e033ed8936a2d8.png
图9 ISO-11898 (高速CAN)和ISO-11519(低速CAN)的CAN信号定义,引自[6]

具体说,如上图第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
图10 高速CAN总线实际电压状态

1.7 CAN总线信号的传输

上述的电位差(差分电平)与逻辑电平由CAN收发器实现。在发送过程,CAN控制器将CPU传来的信号转换为逻辑电平。CAN收发器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。

d19e3622214a9fd4de8b4b6385c959bf.png
图11 CAN信号发送,引自[6]

在接收过程,CAN收发器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。

9f02a8761f95c87af031e08ef8a524bf.png
图12 CAN信号接收,引自[6]

通俗地讲,就是发送方通过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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值