【CAN】CAN通信协议栈


前言

CAN(Controller Area Network)是汽车电子中应用最广泛的一种通信总线。就目前笔者所接触到的开发模式,都是从EB或者Vector公司买来软件包进行配置,然后自动生成这部分代码,也就是说手写的不多。虽然不需要手写代码,但是基本的框架和思想还是要知道的,不然很可能出现即使有工具也配不出来的情况。


一、框架

1.CAN通信协议的概念

在AUTOSAR框架下,CAN通信协议栈位于运行时环境(RTE)和微控制器抽象层(MCAL)之间,以实现应用层和底层之间的数据交互,总体框架如下图所示:
 CAN通信协议栈架构

(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报文和诊断报文, PDUR将接收到的App报文和诊断报文区分开来,分别发给COM模块和DCM模块
(5)COM:服务层通信,COM层就是负责App报文通信的
(6)DCM:诊断通信模块

2.通信过程

数据发送:
CAN总线数据发送示意(图源:Vector)

(1)COM层收到应用层信号(Signal),写入PDU Buffer
(2)PDUR将PDU发送至Interface相应通道
(3)Interface再把数据发送到CAN驱动,最终实现数据发送

数据接收:
CAN总线数据接收示意(图源:Vector)
(1)CAN Driver发出Rx中断,数据被传输到Interface
(2)Interface传给PDUR
(3)PDUR把数据传给COM层,最终通过RTE层传给应用层

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值