CanTrcv_Tja1043_Driver

3 功能描述

3.1功能

在3.1节中提到的功能涵盖了[1]中指定的全部功能。支持和不支持的功能分别在以下两个表格中展示。

支持的功能

CAN收发器初始化。

通过DIO控制CAN收发器。

检测唤醒(wakeup)。

获取和设置CAN收发器的操作模式。

表3-1 支持的SWS功能

额外支持的MICROSAR功能

使用构建后可选的MICROSAR身份管理器。

表3-2 额外支持的MICROSAR功能

不支持的功能

通过SPI控制CAN收发器。

CAN收发器自诊断。

表3-3 不支持的SWS功能

CAN收发器驱动提供了用于初始化、操作模式变更和操作模式检测的服务函数,这些服务函数适用于使用的CAN收发器硬件。提供了可选的服务函数和回调函数,用于检测总线事件引发的唤醒,并将其报告给上层组件。

3.2 初始化

CAN收发器硬件在上电后需要进行初始化。因此,CAN收发器驱动提供了两个服务函数。

函数 CanTrcv_30_Tja1043_InitMemory 用于初始化收发器驱动所需的所有值。在上电或复位后,必须首先调用此函数。

函数 CanTrcv_30_Tja1043_Init 用于初始化由生成工具选择的所有CAN收发器通道。每个CAN收发器通道都被切换到操作模式:NORMAL。请注意,在调用 CanTrcv_30_Tja1043_Init 函数之前,必须先调用 CanTrcv_30_Tja1043_InitMemory 函数。

如果在初始化之前有唤醒事件待处理,CAN收发器驱动会存储此事件,并通过调用 EcuM_SetWakeupEvent 函数来通知它。

3.3 设置操作模式

CAN收发器硬件的操作模式可以通过服务函数 CanTrcv_30_Tja1043_SetOpMode 来改变。它能够从正常模式切换到待机模式,从待机模式切换到睡眠模式,以及从待机或睡眠模式切换回正常模式。根据规范,此函数不支持从正常模式直接切换到睡眠模式,或者从睡眠模式直接切换到待机模式。

如果使用与当前已设置的相同操作模式调用该函数,则不会发生模式变化,并且会返回 E_OK(表示操作成功)。

3.4 获取操作模式

要检索指定CAN收发器硬件的当前操作模式,必须调用服务函数 CanTrcv_30_Tja1043_GetOpMode。这个函数将返回当前CAN收发器的工作状态,例如正常模式、待机模式或睡眠模式。

3.5 获取版本信息

可以通过调用服务函数 CanTrcv_30_Tja1043_GetVersionInfo 来获取软件模块的版本信息。此功能必须在配置工具中启用,方法是勾选“版本信息API”复选框。

CAN收发器驱动模块的版本可以通过两种不同的方式获取:

  • 调用函数 CanTrcv_30_Tja1043_GetVersionInfo 将返回模块的版本信息,该信息包含在 Std_VersionInfoType 结构体中,此外还包括 VendorIDModuleID

  • 通过访问在头文件 CanTrcv_30_Tja1043.h 中指定的版本定义:

    • AUTOSAR修订版本:

      • CANTRCV_30_TJA1043_AR_RELEASE_MAJOR_VERSION - AUTOSAR主版本号

      • CANTRCV_30_TJA1043_AR_RELEASE_MINOR_VERSION - AUTOSAR次版本号

      • CANTRCV_30_TJA1043_AR_RELEASE_PATCH_VERSION - AUTOSAR补丁版本号

    • 模块版本:

      • CANTRCV_30_TJA1043_SW_MAJOR_VERSION - 软件主版本号

      • CANTRCV_30_TJA1043_SW_MINOR_VERSION - 软件次版本号

      • CANTRCV_30_TJA1043_SW_PATCH_VERSION - 软件补丁版本号

3.6 通过总线事件检测唤醒

如果配置工具中启用了通过总线检测唤醒的功能,那么在检测到唤醒时,下层必须调用回调函数 CanTrcv_30_Tja1043_CheckWakeup。这个函数会检查指定的CAN收发器通道。如果收发器硬件处于睡眠或待机模式,并且检测到通过总线的唤醒事件,函数将返回 E_OK;否则返回 E_NOT_OK

注意

  • 为了确定是否发生了唤醒事件,会评估收发器的“Wake”标志。如果“Wake”标志被设置,唤醒事件的原因可能是以下之一:

    • 通过WAKE引脚的本地唤醒,

    • 通过总线的远程唤醒,

    • 上电。

  • CAN收发器驱动无法区分它们。因此,API CanTrcv_30_Tja1043_GetBusWakeupReason 在唤醒事件发生时仅返回 CANTRCV_30_TJA1043_WU_BY_BUS

  • 这种行为适用于以下硬件:

    • NXP Tja1043/T/TK(见[4]第7.2.4节唤醒标志)

    • TI TCAN1043x-Q1(见[5]第9.3.3节唤醒请求标志)

    • NXP Tja1902A(见[6]第7.2.2.4节唤醒标志)

  • Infineon Tle9252VSK/VLC通过RxD和NERR引脚的行为来信号唤醒事件(见[7]第5.9节唤醒:RxD和NERR的行为)。对于这种硬件,CAN收发器驱动也无法区分唤醒事件。上述描述的相同特性适用。

这段文本说明了在配置工具中启用了通过总线事件检测唤醒功能后,如何通过回调函数来检查唤醒事件,并指出了不同硬件的唤醒事件检测机制和文档参考。同时,它也强调了驱动程序在处理唤醒事件时的限制,即无法区分不同类型的唤醒原因。

3.6.1 获取总线唤醒原因

服务函数 CanTrcv_30_Tja1043_GetBusWakeupReason 返回导致唤醒的原因。请注意,在3.6节 "通过总线事件检测唤醒" 中提到的注意事项。

3.6.2 设置唤醒模式

服务函数 CanTrcv_30_Tja1043_SetWakeupMode 设置CAN接口所需的唤醒模式。

这两个函数是CAN收发器驱动程序中用于管理唤醒功能的接口。第一个函数允许用户查询导致CAN收发器从低功耗状态唤醒的原因。第二个函数则允许用户设置CAN接口的唤醒模式,这通常与硬件的配置和系统的要求有关。具体的唤醒模式可能包括但不限于通过总线事件唤醒、通过物理引脚唤醒等。

在实际应用中,这些函数的使用需要根据具体的硬件和系统设计来决定,以确保CAN收发器能够在需要时正确地唤醒,同时在不需要时保持低功耗状态

3.6.3 开发错误报告

如果预编译参数 CANTRCV_30_TJA1043_DEV_ERROR_DETECT 设置为 STD_ON,则开发错误会使用服务 Det_ReportError 报告给DET(诊断事件触发器)。需要在配置工具中指定报告的 CANTRCV 实例ID。有关详细信息,请参见第7.1节 "使用DaVinci Configurator 5进行配置"。

报告的服务ID识别了在6.1节中描述的服务。下表展示了服务ID及其相关服务:

服务ID 服务
0x00 CanTrcv_30_Tja1043_Init
0x01 CanTrcv_30_Tja1043_SetOpMode
0x02 CanTrcv_30_Tja1043_GetOpMode
0x03 CanTrcv_30_Tja1043_GetBusWuReason
0x05 CanTrcv_30_Tja1043_SetWakeupMode
0x07 CanTrcv_30_Tja1043_CheckWakeup
0x04 CanTrcv_30_Tja1043_GetVersionInfo
0x06 CanTrcv_30_Tja1043_MainFunction

表3-4 服务ID到服务的映射

报告给DET的错误在下表中描述:

错误代码 描述
0x01 CANTRCV_30_TJA1043_E_INVALID_TRANSCEIVER 无效的通道索引用于函数参数列表。
0x02 CANTRCV_30_TJA1043_E_PARAM_POINTER 无效的指针NULL_PTR用于函数参数列表。
0x11 CANTRCV_30_TJA1043_E_UNINIT CAN收发器硬件未初始化。
0x21 CANTRCV_30_TJA1043_E_TRCV_NOT_STANDBY CAN收发器硬件不在待机模式。
0x22 CANTRCV_30_TJA1043_E_TRCV_NOT_NORMAL CAN收发器硬件不在正常操作模式。
0x23 CANTRCV_30_TJA1043_E_PARAM_TRCV_WAKEUP_MODE 请求的唤醒模式无效。
0x24 CANTRCV_30_TJA1043_E_PARAM_TRCV_OPMODE 请求的操作模式不受底层收发器硬件支持。
0x40 CANTRCV_30_TJA1043_E_NO_TRCV_CONTROL 如果CAN收发器不受控制,即收发器保持在无效状态,则会触发此生产错误。

表3-5 报告给DET的错误

这段文本描述了在AUTOSAR环境中,如何通过特定的服务ID和错误代码将CAN收发器开发过程中的错误报告给诊断系统。这些错误代码提供了一种标准化的方式来识别和响应CAN收发器操作中可能遇到的问题。

4 集成

本章提供了将MICROSAR CANTRCV集成到ECU(电子控制单元)应用环境中所需的必要信息。此组件仅适用于NXP Tja1043 CAN收发器硬件。

4.1 交付范围

CANTRCV的交付包

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值