【AUTOSAR】【Lin通信】LinTrcv

目录

一、概述

二、功能说明

2.1 LIN收发器驱动程序操作模式

2.2 LIN收发器硬件操作模式

2.3 LIN收发器唤醒类型

2.4 LIN收发器唤醒模式

2.5 错误分类

2.5.1 开发错误

三、API接口

3.1 API定义


一、概述

        该规范规定了模块LIN收发器驱动程序的功能、API和配置。它负责处理一个ECU上的LIN收发器硬件。

        LIN总线收发器是一种硬件设备。它是LIN协议控制器和物理LIN总线之间的接口。一方面,一个LIN协议控制器的传输数据流被转换为符合LIN物理层的总线信号。另一方面,LIN总线的数据流被转换为协议控制器的输入信号。一个LIN协议控制器通常是一个微控制器的实现。

        大多数LIN收发器都支持通过总线进行电源控制和唤醒。市场上有很多不同的唤醒/睡眠和电源供应的概念。

【规范】LIN收发器驱动程序抽象了应用的LIN收发器硬件,并覆盖了到更高层的硬件独立接口。它还通过使用MCAL层的api访问LIN收发器硬件,从ECU布局进行抽象。

二、功能说明

2.1 LIN收发器驱动程序操作模式

【规范】LIN收发器驱动器的操作模式如下图所示:

2.2 LIN收发器硬件操作模式

LIN收发器硬件可能比软件支持更多的模式转换。决定哪个LIN收发器硬件状态由哪个LIN收发器驱动程序软件状态的实现。一个实现必须保证所描述的LIN收发器驱动程序的整个功能是由该实现给出。

2.3 LIN收发器唤醒类型

        方案一:单片机不供电,ECU的部分包括LIN收发器硬件供电。所考虑的LIN收发器硬件处于LINTRCV_TRCV_MODE_SLEEP模式。通过LIN收发器硬件检测到LIN上的唤醒事件。LIN收发器硬件导致单片机供电。就AUTOSAR而言,这是作为一个冷的开始,而不是作为一个唤醒。

        方案二:单片机处于低功耗模式,部分ECU包括LIN收发器硬件被供电。根据硬件实现的不同,所考虑的LIN收发器硬件要么处于LINTRCV_TRCV_MODE_STANDBY模式或LINTRCV_TRCV_MODE_SLEEP模式。通过LIN收发器硬件检测到LIN上的唤醒事件。LIN收发器硬件正在通知单片机关于唤醒。就AUTOSAR而言,这是作为LIN通道和单片机的唤醒。

        方案三:单片机处于全功率模式,至少为包括LIN收发器硬件在内的部分ECU供电。根据硬件实现的不同,所考虑的LIN收发器硬件要么处于LINTRCV_TRCV_MODE_STANDBY模式或LINTRCV_TRCV_MODE_SLEEP模式。通过LIN收发器硬件检测到LIN上的唤醒事件。LIN收发器硬件正在通知单片机唤醒或周期性地轮询唤醒事件。就自动存储器而言,这是作为一个LIN通道的唤醒。

        方案四:单片机处于全功率模式,至少为包括LIN收发器硬件在内的部分ECU供电。根据硬件实现的不同,所考虑的LIN收发器硬件要么处于LINTRCV_TRCV_MODE_STANDBY模式或LINTRCV_TRCV_MODE_SLEEP模式。单片机现在正在将LIN收发器硬件设置为LINTRCV_TRCV_MODE_NORMAL模式,并正在唤醒LIN通道。就AUTOSAR而言,这是作为一个LIN通道的内部唤醒(通过单片机)。

2.4 LIN收发器唤醒模式

【规范】唤醒通知必须由Lin收发器驱动程序支持,因此Lin收发器驱动程序覆盖2种唤醒模式,上层内部唤醒或Lin通道外部唤醒。

  • 内部唤醒:内部唤醒由上层启动,例如通过调用LinTrcv_Init()或LinTrcv_SetOpMode。
  • 外部唤醒:由LIN收发器驱动程序检测到的唤醒通过API LinTrcv_CheckWakeup被转发到上层,它必须由LinIf调用。

【规范】唤醒模式的选择应通过配置参数LinTrcv唤醒支持来完成。

【规范】应通过配置参数LinTrcv唤醒线分别开启和关闭每个LIN收发器通道的唤醒支持。

【规范】LinTrcv司机应使用ICU司机提供的以下api,以启用和禁用唤醒事件通知:

  • Icu_EnableNotification
  • Icu_DisableNotification

【规范】当收发机传输到待机模式(LINTRCV_STANDBY)时,LinTrcv驱动器应启用ICU通道。

【规范】当收发器传输到正常模式(LINTRCV_NORMAL)时,LinTrcv驱动程序应禁用ICU通道。

2.5 错误分类

2.5.1 开发错误

三、API接口

3.1 API定义

  1. LinTrcv_Init
  2. LinTrcv_SetOpMode
  3. LinTrcv_GetOpMode
  4. LinTrcv_GetBusWuReason
  5. LinTrcv_GetVersionInfo
  6. LinTrcv_CheckWakeup
  7. LinTrcv_SetWakeupMode

猜你喜欢

转载自blog.csdn.net/qq_42357877/article/details/129972205