CAN(Controller Area Network)是汽车电子中应用最广泛的一种通信总线。就目前笔者所接触到的开发模式,都是从EB或者Vector公司买来软件包进行配置,然后自动生成这部分代码,也就是说手写的不多。虽然不需要手写代码,但是基本的框架和思想还是要知道的,不然很可能出现即使有工具也配不出来的情况。
1.CAN通信协议的概念
在AUTOSAR框架下,CAN通信协议栈位于运行时环境(RTE)和微控制器抽象层(MCAL)之间,以实现应用层和底层之间的数据交互,总体框架如下图所示:
![591820dd68183c17d3467b265cacb759.png](https://img-blog.csdnimg.cn/img_convert/591820dd68183c17d3467b265cacb759.png)
(1)CAN Driver:硬件相关,CAN驱动
(2)CAN IF:CAN Interface,主要实现驱动和上层之间联系的接口
(3)CAN TP:CAN Transport Protocol,负责CAN报文的组包拆包
(4)PDUR:PDU(Protocol Data Uint),PDU路由器,起路由作用。 CAN的通信消息分为3种,App报文、NM报文和诊断报文, P