菜鸟之-Autosar COM模块以及通讯解析-学习笔记

本文深入探讨了CAN总线通信机制,包括PDURouter、IPDUMux、CANTp等核心组件的工作原理。阐述了CAN发送和接收流程,以及CANFD与经典CAN的区别。详细解析了CANFrame的格式,如CANID的长度差异及单帧、多帧传输模式。同时介绍了CANFD的数据长度定义和传输策略,为理解CAN总线通信提供了全面的指导。
摘要由CSDN通过智能技术生成

一、架构与术语解释
在这里插入图片描述
• PDU Router: PDU——Protocol Data Unit,协议数据单元。这个模块的功能就是将COM下发的信号数据分配到相应的协议总线上去;或者将不同的协议变成同一信号上传给COM。
• IPDU Mux: 用于解析一些特殊的协议,比如CAN FD或者用户自定义的一些协议。就是起了一个统一CAN ID,不同信号Layout的作用
• CAN Tp: 分包数据传输与错误检测,一般来说只有在诊断的时候才会使用
CAN Interface: 与硬件已经无关了,与硬件相关的是下面两个Driver做的工作,这个Interface主要可以配置收发队列;组帧(FlexRay);管理时间触发总线的调度表(LIN, FlexRay)
CAN Driver: 就是MCAL中对主芯片上CAN模块的驱动封装
Trcv Driver: Trcv——Transceiver的缩写,就是收发器驱动的意思。如果是外置CAN收发器,这里就要用到Trcv Driver这个驱动,而非CAN Driver。
感觉这么简单的罗列一下上面的术语,可能大家还是看不懂,下面就简单的发送和接收流程做一个解释(CAN这东西太庞大,这里一时也讲不完,就拿最简单的方式来说明一下)
二、发送流程
在这里插入图片描述

  1. 应用层Send一个数据进COM
  2. COM写信号进PDU Buffer中
  3. PDU被PDU Router立刻发送或按周期发送(每个PDU都有一个独立的ID),之后PDU Router辨认总线种类,并把PDU发向不同的下级模块
  4. Interface根据不同的通道,把报文写入不同的队列
  5. Driver根据报文的优先级立刻发送报文
    三、接收流程
    在这里插入图片描述
    中断或者循环接收(这里假设为中断):
  6. 硬件接收报文
  7. 由Driver发出Rx中断(函数),之后通过RxIndication,数据被传递到Interface
  8. 传递到PDU Router
  9. 传递到COM(如果SWCs使用Data ReceptionTrigger,就通知RTE;否则暂存到Buffer中)
  10. 信号被RTE读取,然后应用层读取
    四、CANTP通信数据解析
    **3.1 CANTP传输方式有两种CAN/CANFD **
    CANFD:可以理解成CAN协议的升级版,只升级了协议,物理层未改变。
    Can与CanFD主要区别:传输速率不同、数据长度不同(CAN-8byte/CANFD-64byte)、帧格式不同、ID长度不同。
    3.2 CAN Frame的格式
    在这里插入图片描述
    CAN ID:标识这具体ECU的识别号,长度有11位和29位之分,标准帧是使用11bit位作为ID识别,扩展帧使用29bit位作为ID识别。
    扩展帧的仲裁域有29位,可以出现2^29中报文,且在数据链路上是有间隙的(对操作者透明)。
    标准帧的仲裁域是连续的11位,可以出现2^11种报文;
    其实CAN标准帧和扩展帧只是在ID的长度上不一样,以能扩展更多的CAN节点,更好地支持上层协议而已

数据库携带数据长度看是Classical CAN还是CAN FD。前者数据域长度是8 bytes。CAN FD数据域长度看OEM需求,范围在8 bytes—64 bytes,当然长度也不是任意选取,可参看如下表格:
在这里插入图片描述
超过8 bytes后,长度可按照表格中长度定义。
**

Classical CAN

首先分享下经典CAN单帧和多帧传输数据。
在这里插入图片描述

当数据长度小于等于8 bytes(因为有PCI存在,实际有用的数据长度是7 bytes),使用单帧(Single Frame);
当数据长度大于8 Bytes时,使用到TP中的多帧传输。相当于在数据传输过程中先对大于8 Bytes的数据进行解包—发送—组包,其中用到首帧(First Frame)、流控帧(Flow Control)、连续帧(Consecutive Frame)。
在这里插入图片描述

在ISO 15765-2中对上述帧格式定义如下:
在这里插入图片描述
在这里插入图片描述
对数据帧中第一个Byte位不同数值定义不同帧类型:
在这里插入图片描述

1、 高4 bits为0标志是单帧,低4 bits值定义帧长度;
2、 对于单帧当数据长度大于8 bytes(适用于CAN FD),第一个byte数值为0,第二个byte数值标志着此单帧的数据长度;
3、 高4 bits为1标志是首帧,低4 bits位与第二个byte标志数据长度(FFF最大长度为4095 bytes),适用于多帧数据长度小于等于4095;
4、 当多帧数据长度大于4095 bytes时,高4 bits为1标志是首帧,低4 bits位与第二个byte数值设为0,Byte 3—byte 6标志此帧长度;
5、 高4 bits为2标志是连续帧,低4 bits标志连续帧的序列号;
6、 高4 bits为3标志是流控帧,低4 bits标识流控帧的状态(Flow State)。Byte 2为BS(Block Size),Byte 3为STmin 。其中FS、BS、STmin 具体含义如下:
· FS(FlowStatus)表示发送网络实体是否可以继续进行消息传输。具体含义在ISO 15765中有详细说明:
在这里插入图片描述
· BS(BlockSize)表示到下一个流控帧(FC)前发送连续帧的个数。在分段数据传输中,仅ConsecutiveFrames的最后一块可能小于BS帧数。
在这里插入图片描述
BS数值为0时,对于发送者(Sender)意味着接收者(Receiver)接下来不会发送流控帧,发送者将所有连续帧全部发送至接收者。

· STmin 为Separation Time minimum (STmin) parameter definition,这个参数由接收者定义,意思是两个连续帧之间的最小间隔时间。

**

CAN FD

CAN FD传输数据帧数据长度如下定义
1)、单帧传输的数据长度如协议中定义:
在这里插入图片描述
根据数据长度所在的范围,选择适用的长度。

(2)、对于多帧传输,定义好数据长度后,首帧以及紧接着的连续帧按照定义的数据长度传输,最后一帧连续帧按着上述Table 13传输。具体举例如下:

若定义数据场长度是 12 bytes,自己要传输的数据长度是 23 bytes,首帧和第一个后续帧,数据场长度是 12 bytes,最后一帧还是看剩余数据长度,按照Table 13 发送。
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值