SWS_CANDriver 规范理解

这里先对CAN通讯相关的AUTOSAR规范,具体指AUTOSAR_SWS_CANXXX.pdf的这类文档的结构做个说明,一般分为10个部分:

1.引言与功能概览,introduction and functional overview
2.
省略与简写,acronyms and abbreviations
3.
参考文档, related documentation
4.
限制和假设,constraints and assumptions
5.
与其他模块的关联性, dependencies to other modules
6.
需求追溯, requirement traceability
7.
功能规范, functional specification
8.
接口规范, API specification
9.
时序图, sequence diagrams
10.
配置规范, configuration specification

CAN驱动(driver)来说,这样一篇文档先介绍下CAN驱动是什么?与其他哪些模块有关联性?CAN驱动模块要满足哪些需求?有哪些功能,接口和配置规范,执行时序是怎样的?

CAN Driver 属于硬件抽象层,一共包含着5个功能,由底向上分别为: CAN L-PDU; HTH/HRH; Hardware Object; CAN Controller A,B,C...和CAN Hardware Unit。

CAN Hardware Unit:CAN Hardware可以由一个或多个相同类型的CAN Controller和一个或多个CAN RAM区域组成。

CAN Controller:一个CAN Controller只能去服务于一个物理通道。

Hardware Object:可以想成CAN Hardware Unit 在 CAN RAM区域内的一个PDU缓冲区。

HTH/HRH:全部由CAN driver提供;HRH,通常只表示一个硬件对象(用于软件过滤);HTH,通常表示一个或多个硬件对象。 

CAN L-PDU:CAN协议数据单元。 由ID、DLC、Data(SDU)组成。

结合以上理解,对规范中的下图就有有一个比较直观的理解了

--refer sws content: 7.2 Driver State Machine

CAN Driver状态机比较简单,只有两种状态: CAN_UNINIT、CAN_READY

--refer: Document ID 011: AUTOSAR_SWS_CANDriver -7.3 Driver State Machine

有四种状态(UNINIT;STOPPED;SLEEP;STARTED)。

UNINIT :CAN控制器未初始化。 所有属于CAN Module的寄存器处于Reset状态。 禁用Can Interrupt。 不加入Can总线。 

STOPPED:CAN控制器被初始化但没有加入总线。 

SLEEP:CAN BUS直接支持CAN Hardware,而SLEEP不同于STOPPED。

STARTED:也就是说它加入网络时,控制器处于正常模式,功能完整。

3.1.1 CAN Controller State Transitions

        CAN Controller 的状态转换 是由Can_SetControllerMode函数触发的, 并以所需求的转换模式为参数。 转换成功与否可由回调函数CanIf_ControllerModeIndication通知。CAN Controller 的状态转换是否到达所需求位置是由上层模块 CANIf 监控的,并不是由CAN Driver模块监控。

某些状态的转换是由BUS(hardware) 触发的,这些通知是由上层的 CAN If模块的函数触发(CanIf_ControllerBusOff, EcuM_CheckWakeup)

下图为CAN controller有效的状态转换图

State transition caused by function Can_Init

  • UNINIT à STOPPED (for all controllers in HW unit)
  • software triggered by the function call Can_Init
  • does configuration for all CAN controllers inside HW Unit

State transition caused by function Can_SetBaudrate

  • STOPPED -> STOPPED; SLEEP -> SLEEP; STARTED -> STARTED
  • software triggered by the function call Can_SetBaudrate
  • changes the CAN controller configuration

State transition caused by function Can_SetControllerMode

State transition caused by function Can_SetControllerMode (CAN_CS_STARTED)

  • STOPPED à STARTED
  • software triggered

State transition caused by function Can_SetControllerMode (CAN_CS_STOPPED)

  • STARTED à STOPPED
  •  SLEEP à STOPPED
  •  software triggered

State transition caused by function Can_SetControllerMode(CAN_CS_SLEEP)

  • STOPPED à SLEEP
  •  software triggered

State transition caused by Hardware Events

  •  SLEEP à STOPPED
  • triggered by incoming L-PDUs
  •  The ECU Statemanager module is notified with the function EcuM_CheckWakeup

State transition caused by function Can_DeInit

  • STOPPED -> UNINIT; SLEEP -> UNINIT (for all controllers in HW unit)
  • software triggered by the function call Can_DeInit
  • prepares all CAN controllers inside HW Unit to be re-configured

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值