AutoSAR 与 CAN 通信:一张图帮你理解全过程
笔者最近一直在学习AUTOSAR 通信部分的相关知识,经过长时间的学习有了一个大概的了解。但一直感觉资料介绍的东西都很零散,不是很全面,这样子无法建立一个完整的知识体系。于是笔者查阅各种资料,加上自己的一点理解,制作了CAN通信部分从软件到硬件的一个流程图。
写的过程中发现这里面可以写的内容实在是太多了,所以本篇先简略介绍一下信号是如何传输的,以及主要模块的功能介绍,后续再更新每个模块信号传输的细节;
一图了解CAN通信硬件到软件
1、CAN通信概略图和基本概念介绍
应用层APPL、RTE(实时运行环境 Runtime Environment)不太熟悉,这里不多赘述;
交互层:
网络层:
接收取消
数据链路层:
物理层:
硬件部分:
传输数据类型:
是基于总线的,例如 CAN 总线的 L-PDU 就是 CAN 帧;
2、通信模块介绍
首先,从AUTOSAR架构上来说,一个完整的CAN通信的过程涉及到了包括硬件、AUTOSAR中间件和上层应用层软件;在硬件部分来说,涉及到的是CAN 总线和CAN的收发器;软件部分的话,涉及到的概念是MCAL(微控制器抽象层)、BSW(基础软件层)、RTE(实时运行环境)、APPL(应用层)等;
其中MCAL部分用到了通信驱动模块,而BSW部分使用到了通信服务模块和通信硬件抽象模块;由于笔者是做MCAL和BSW的,至于应用层部分的知识就暂且不具体介绍了;
3、CAN通信从软件到硬件过程详解
自上到下,数据的传递过程是:
应用层–>RTE–>COM–>PDUR–>CANTP–>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总线的高电平,一条低电平;
4、结尾:
通信全流程的知识点真的相当的多,查阅了包括标准文档和其他优秀博主在内的相当多的文章。笔者后面准备在学习中将一个个模块之间的联系总结一下;等着我的更新吧;