CAN总线基础(二)——CAN总线物理层介绍(总线电压详解)

2019-04-13 15:56发布

        CAN总线的物理层定义了连接车内各控制器的相关介质以及接口。由于CAN总线的数据传输实质是通过总线上的电压变化传输的,所以CAN的总线电压是CAN总线技术的核心所在,总线电压在物理层中定义。为了深刻理解CAN总线,下面我们详细介绍总线电压:           CAN总线的拓扑结构如下:
        通过CAN的总线拓扑结构可以看出,CAN总线采用双绞线进行数据传输。两根导线中,一根称为CAN-High,另一根称为CAN-Low。这两根导线在静止状态下对地电压均为2.5V,此时两根导线的电压差值为0V,该状态称为隐性状态,其数字信号用1来表示;当CAN-High的对地电压为3.5V,CAN-Low的对地电压为1.5V时,此时CAN-High和CAN-Low两根导线的电压差为2V,该状态称为显性状态,其数字信号用0来表示。为了方便,不会出现混淆记忆,我们将CAN总线的这一特性记忆为“显零隐一”。

        CAN总线是多主节点(多主机)的局域网,各个主节点可以同时向总线上发送数据,此时总线上就会有电压变化。之前介绍过,如果总线的CAN-High和CAN-Low产生电压差,称为显性用0表示,如果总线上没有电压差,称为隐性用1表示。那么大家需要思考一个问题,假如节点A发送数据0101,节点B发送数据1111,节点A和节点B同时向总线发送数据,那么总线上的电压会如何变化呢?很明显,CAN总线上的电压变化是:2V-0V-2V-0V,用来表示数字信号0101。因为两个主节点共用一路CAN总线,而表示显性的2V电压差会覆盖表示隐性的0V电压差,即总线上某一时刻的电压只会有一种状态,无变化的电压自然会被有变化的电压覆盖,从显性和隐性的命名上可以看出这一深意(这很好理解,如同两个人A和B(即两个主节点)同时潜在水中游泳,并且他们游的一样快,如果露头表示显性0,不露头表示隐性1,A和B分别向外界传递某种信息0101和1111,那么我们通过观察水面的露头变化只会得到0101的信息),CAN总线的这一特性我们称为“显性可以覆盖隐性”,这一特性对于后面学习数据帧的仲裁、应答等机制都至关重要,因此需要深刻理解。         学习CAN总线物理层除了总线电压这一部分需要深刻理解之外,剩下的无非都是一些物理介质以及接口的规定。之后一章节将对物理介质及接口做详细的说明原创内容转载请注说明)。