南飓风 发表于 4 天前

AUTOSAR CP架构通信篇——Can通信概念明白

从传统的软件方向换到车企底软每个东西都是自己不懂的,所以最近也挺充实的。拿最底子的Can通信来说,耳熟能详的东西,让我来讲透彻却是个问题,所以尽量记载一些东西。
ps: Can本身是什么,帧结构等,自有大佬们写的够多了,我作为嵌软的小白主要记载记载,也不想写一些大而空的东西。
前言感想可以跳过

    最近刚结束一个Can通信方面的小功能,使用的DaVinci的工具链,靠着大佬同事勉为其难完成。
    其实单纯功能很简单,只是感觉自己对Can这方面的内容模棱两可,对工具链的使用也含糊不清,因此做的磕磕绊绊。
    只能说希望这篇文章能够帮助同学们少走弯路,尽快成长,诸君共勉。
Can通信团体结构

在搜索Can通信模块的时间,网上资料五花八门,有讲应用报文的,有讲诊断报文的,有讲网络管理报文。其中涉及Can、CanIf、CanTp、PduR、CanNm等等模块,让我们这些小白选手头晕脑胀的,实在Can通信涉及的模块不止如此就实现Can信号的收发就还必要CanSM、ComM、EcuC模块。很难建立一个团体概念,所以这里我主要展示一些团体概念性的东西。
信号流转路径取决于报文类型

https://i-blog.csdnimg.cn/direct/f3f55744eb10463da4b77f6934a3f5bd.png#pic_center
下面的差别报文可以在此图上找到相应路径(主要多看看图)。
应用层报文

应用层TX报文:Hardware→Can→CanIf→PduR→Com→RTE→ASW。
应用层RX报文: 取相反。
诊断报文

诊断TX报文:
Hardware→Can→CanIf→CanTP→PduR→DCM
网络管理报文

网络TX报文:
Hardware→Can→CanIf→CanNM
XCP报文

XCP TX报文:
Hardware→Can→CanIf→XCP-PL
Can底层内容

主要对CanIf下的Can网络结构有简单的概念,在CanIf下主要流畅是CanIf→Can Driver→Can Controller→Can Transceiver→Can Bus line。
https://i-blog.csdnimg.cn/direct/f5c4a5372e5d4c66b3822f12d79aba21.png#pic_center
Can Driver

插一张从Austosar规范中整下来的图,发起去直接看看规范,毕竟网上每个人对规范的明白都差别。
https://i-blog.csdnimg.cn/direct/21f4e808ab4f4988bf35add8bb165d3b.png
CAN Driver主要是举行CAN报文级别的收发信。唯一上层为CanIf。Can Driver独立于硬件提供用于启动传输的服务,并调用CanIf模块的回调函数来通知事件。多个CAN Controller可以由一个CAN Driver控制,只要它们属于同一个CAN硬件单元。
Can Driver 状态机

Can驱动模块有个非常简单的状态机,只有两种状态CAN_UNINIT和CAN_READY。
https://i-blog.csdnimg.cn/direct/8951c1d6151a4b7e94a204a67787f578.png
在上电或者重置的时间,状态为CAN_UNINIT,初始化硬件单元内的全部控制器后,通过Can_Init函数应将模块状态更改为CAN_READY。Can_DeInit函数在取消初始化硬件单元内的全部控制器之前将模块状态更改为CAN_UNINIT。
(内容可真多啊,我想回头单独写一个分析分析CAN Driver的功能和主要API另有接口依靠。这边不太想写了,
页: [1]
查看完整版本: AUTOSAR CP架构通信篇——Can通信概念明白