1、CAN通信概略图和基本概念介绍
应用层APPL、RTE(实时运行环境 Runtime Environment)
交互层:
IPDU multiplexer:协议数据单元复用模块
COM:COMMUNICATION 通信模块
DCM: 诊断通信管理模块(Diagnostic Communication Manager)
PDUR:Protocol Data Unit Router 协议数据单元(PDU)路由器
网络层:
CAN TP: CAN Transport Layer CAN传输层
CAN TP提供的服务包括:传输方向的数据分割、接收方向的数据重组、 数据流控制、检测分割会话中的错误、传输取消、接收取消
J1939 TP:基于J1939协议的CAN TP,J1939Tp模块实现了SAEJ1939标准中的两种数据传输方式BAM和CMDT
数据链路层:
CAN Interface:CAN 接口层(CanIf)是访问CAN总线的标准接口
物理层:
CAN Driver: CAN 驱动,可以实现对CAN控制器的初始化、发送/接收CAN报文、对接收报文的指示与对发送报文的确认、唤醒检测、溢出和错误处理等功能。
CAN Controller: CAN控制器;
CAN Transceiver Driver: CAN收发器驱动程序抽象了CAN收发器硬件。它为较高层提供了一个独立于硬件的接口。它利用MCAL层的api从ECU布局中抽象出来,访问CAN收发硬件
硬件部分:
CANTransceiver:CAN收发器,是一种硬件设备,可将CAN总线上使用的信号电平调整为微控制器识别的逻辑(数字)信号电平。此外,收发器还能够检测电气故障,例如布线问题,接地偏移或长主导信号的传输。根据与微控制器的接口,它们会标记由单个端口引脚汇总的检测到的错误或由SPI非常详细地标记出来
CAN High: CAN总线高电平;
CAN Low: CAN总线低电平;
CAN network:AUTOSAR CAN网络管理是一个独立于硬件的协议,只能在CAN上使用。其主要目的是协调网络从正常运行到总线休眠模式的过渡。
传输数据类型:
signals:信号
PDU:Protocol Data Unit 协议数据单元,PDU 由 SDU 和 PCI 组成
信号分配装置(Signal Distribution Unit) 外部控制器接口(Peripheral Component Interconnect)
I-PDU:Interaction Layer PDU,由 data、length、I-PDU ID 组成。
N-PDU:Network Layer PDU,或 I-PDU Segment,由传输协议模块使用,对 I-PDU 进行分段
L-PDU:Data Link Layer PDU,或 Large PDU,一个或多个 I-PDU 被打包成 L-PDU,L-PDU
是基于总线的,例如 CAN 总线的 L-PDU 就是 CAN 帧;
Message:报文
2、通信模块介绍
首先,从AUTOSAR架构上来说,一个完整的CAN通信的过程涉及到了包括硬件、AUTOSAR中间件和上层应用层软件;在硬件部分来说,涉及到的是CAN 总线和CAN的收发器;软件部分的话,涉及到的概念是MCAL(微控制器抽象层)、BSW(基础软件层)、RTE(实时运行环境)、APPL(应用层)等;
其中MCAL部分用到了通信驱动模块,而BSW部分使用到了通信服务模块和通信硬件抽象模块
3、CAN通信从软件到硬件过程详解
3.1、自上到下,数据的传递过程是:
应用层–>RTE–>COM–>PDUR–>CAN TP–>CAN Interface–>CAN Driver–>CAN Controller–>CAN Transceiver–>CAN BUS Line
①Com模块获取应用层的信号(Signal),经一定处理封装为IPDU(Interaction Layer Protocol Data Unit)发送到PduR模块;
②PduR根据路由协议中所指定的I-PDU目标接收模块,将接收到的I-PDU经一定处理后发送给CanIf;PduR也可以将部分I-PDU发送给CAN TP模块,处理之后再发送给CANIf;
③CanIf将信号以L-PDU(Data Link Layer Protocol Data Unit)的形式发送给CAN驱动模块;
④CAN 驱动模块将Message 报文发送给CAN controller;
⑤CAN controller 与外部硬件的CAN transceiver(CAN收发器)进行CAN 报文的收发;
⑥外部硬件CAN收发器–CAN Transceiver Hardware主要工作内容为:接收CAN bus上的网络信息(通常叫做CAN Frame)相关的信号并将其转化为逻辑信号转发给CAN Controller,接收从CAN Controller传输过来的逻辑电平信息并将其转化为信号电平传从到CAN bus上。CAN Transceiver有两条线,一条连CAN总线的高电平,一条低电平;
解释:CAN接口模块(Can If)位于底层CAN驱动(Can Drv)、CAN收发器(Can Trcv)和上层通信服务层(CanSm、CanNm)、CAN传输协议(CanTp/Transport Layer)、PDU路由器(PduR)
CAN状态管理器(CAN State Manager,CanSM) Can网络管理(CAN Network Manager,CanNM)
3.2、一些补充
CAN transceiver部分通过拉脚,部分通过SPI来控制CAN收发器;
简单的判断方法是:脚多的使用SPI控制,传输模式命令。脚少的使用一根线来控制模式;
CAN transceiver driver 可以走SPI发送控制数据,但一般还是用CAN控制器和CAN收发器来通信的,不要搞不清主次!;如果芯片支持,SPI可以配置成DMA模式,使用DMA来搬运数据;
收发器和控制器可以一对多,具体的情况有待研究;
CAN Transceiver
Can Transceiver Hardware主要功能
CAN收发器(CAN Transceiver Hardware)是一种硬件设备,可将CAN总线上使用的信号电平调整为微控制器识别的逻辑(数字)信号电平。此外,收发器还能够检测电气故障,例如布线问题,接地偏移或长主导信号的传输。根据与微控制器的接口,它们会标记由单个端口引脚汇总的检测到的错误或由SPI非常详细地标记出来。
在汽车环境中,主要使用三种不同的CAN总线物理方法。它们是用于高速CAN(最高1Mbits / s)的ISO11898,用于低速CAN(最高125Kbits / s)的ISO11519和用于单线CAN的SAE J2411(AUTOSAR不支持此方法)。
CAN Transceiver Hardware在汽车环境中连接在控制器区域网络(Controller Area Network,简称CAN bus)上。控制器区域网络(Controller Area Network,简称CAN bus)特点是允许网络上的多个微控制器或设备直接互相通讯,网络上不需要主机(Host)控制通信,并且提供高安全等级及有效率的即时控制。更具备了侦错和优先权判别的机制,网络信息的传输变的更为可靠而有效率。
CAN Transceiver Hardware主要工作内容为,接收CAN bus上的网络信息(通常叫做CAN Frame)相关的信号电平并将其转化为逻辑信息电平转发给CAN Controller,接收从CAN Controller传输过来的逻辑电平信息并将其转化为信号电平传从到CAN bus上。
CAN 网络拓扑如图
汽车环境中连接在控制器区域网络(Controller Area Network,简称CAN bus)上的CAN Transceiver Hardware拥有以下三种Mode(模式):
NORMAL MODE:完整的CAN bus总线通信。 CAN Transceiver Hardware处于可接收,传送CAN bus上的网络信息状态。
STANDBY MODE:无法进行通讯。CAN Transceiver Hardware处于无法接收传送CAN bus上的网络信息状态。是NORMAL MODE过渡到SLEEP MODE的中间模式。可通过CAN bus总线唤醒网络信息(通常称为Wakeup Event)或本地本地唤醒事件唤醒,将模式转换到NORMAL MODE。
SLEEP MODE:无法进行通讯。CAN Transceiver Hardware处于无法接收传送CAN bus上的网络信息状态,与STANDBY MODE相比电源损耗更低。可通过CAN bus总线唤醒网络信息(通常称为Wakeup Event)或本地本地唤醒事件唤醒,将模式转换到NORMAL MODE。
CAN transceiver Hardware唤醒类型分为以下三种:
Scenario 1:
●MCU未上电。
●包括CAN收发器硬件在内的ECU部件均已通电。
●所考虑的CAN收发器处于休眠模式。
●CAN收发器硬件检测到CAN总线上的唤醒事件。
●CAN收发器硬件导致MCU上电。
Scenario2:
●MCU处于低功耗模式。
●包括CAN收发器硬件在内的ECU部件均已通电。
●所考虑的CAN收发器处于待机模式。
●CAN收发器硬件检测到CAN总线上的唤醒事件。
●CAN收发器硬件引发SW中断以进行唤醒。
Scenario3:
●MCU处于全功率模式。
●ECU的至少一部分,包括CAN收发器硬件,都已通电。
●所考虑的CAN收发器处于待机模式。
●CAN唤醒事件由CAN收发器硬件检测到。
●CAN收发器硬件会引发SW中断以进行唤醒,或者会定期轮询以了解唤醒事件。
Can Trcv主要功能
CAN Trcv属于,AUTOSAR架构图中的ECU Abstraction Layer(ECU抽象层)子模块组的Communication Hardware Abstraction(通信硬件抽象)。
ECU Abstraction Layer(ECU抽象层)所在位置如下:
CAN Trcv模块主要用于接收/传送CAN Transceiver Hardware逻辑(数字)信号电平,根据ECU以及CAN 网络信息的需要变更CAN Transceiver Hardware模式。
CAN Trcv模块必须为配置的每个收发器单独实现以下所示的相位图。
从“正常”切换到“睡眠”时,通常称为“进入睡眠”的模式是一种临时模式。 驱动程序将这种临时模式封装在CAN收发器驱动程序软件状态之一内。 此外,CAN收发器驱动程序首先从“正常”切换到“待机”,然后再从“待机”切换到“睡眠”。