DEENESPTFRRUARHIKOZHNL

PWM Driver (Pwm)

ModulPwm (PWM Driver)
BSW-Modul-ID121
Standard-Header#include "Pwm.h"
SWS-SpezifikationAUTOSAR_SWS_PWMDriver.pdf
ClusterMicrocontroller Abstraction (MCAL)

模块指南人工智能生成

按通道通过周期和占空比控制微控制器硬件的脉宽调制输出。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: 346ede702b24 来源 未决问题(1)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

按通道通过周期和占空比控制微控制器硬件的脉宽调制输出。

PWM 驱动程序作为 MCAL 模块按通道控制微控制器的脉宽调制输出,并为此直接访问其寄存器。根据 Pwm_Init,Pwm User 设置占空比,并在具有可变周期的通道上设置周期。它们可以将输出切换到空闲状态(Idle-Zustand),并开启或关闭边沿通知 [SWS_Pwm_91000]。驱动程序可选择性地通过准备和设置来管理两阶段的功率状态切换。在错误检测激活时,它会报告未初始化或无效通道等错误,随后不执行任何操作 [SWS_Pwm_00201]。

PWM 驱动程序是一个 MCAL 模块,通过微控制器的寄存器控制其脉宽调制输出。因此它不需要更底层模块的接口(SWS PWM Driver 第44页)。它通过 Pwm_Init 以及指向配置集 [SWS_Pwm_00095] 的指针进行同步初始化,ECU State Manager 将其作为可选的初始化接口调用(SWS EcuM 第152页)。它通常被 IoHwAb 使用,例如通过功率级驱动程序(Power-Stage-Treiber)(SWS IoHwAb 第37页)。

kontext EcuM EcuM (Startup) Pwm Pwm (MCAL-Treiber) EcuM->Pwm Pwm_Init User Pwm User (z. B. IoHwAb / Power-Stage-Treiber) User->Pwm Pwm_SetDutyCycle, Pwm_SetPeriodAndDuty, Pwm_SetOutputToIdle, Pwm_GetOutputState, Pwm_EnableNotification / Pwm_DisableNotification, Power-State-APIs SchM SchM (BSW-Scheduler) SchM->Pwm Pwm_Main_PowerTransitionManager (zyklisch) Pwm->User Pwm_Notification_<#Channel> IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> Det Det Pwm->Det Det_ReportError (optional) HW PWM-Einheit (Mikrocontroller) Pwm->HW direkter Registerzugriff Port Port-Logik / PWM-Pin HW->Port PWM 信号 (Pwm_GetOutputState 的读取点, 位于端口逻辑之前)

上下文图:EcuM 初始化驱动程序,Pwm User 操作它,且驱动程序返回通知和错误。来源:[SWS_Pwm_00105]、[SWS_Pwm_00198]、[SWS_Pwm_00104]

控制通过 16 位占空比进行,其中 0x8000 代表 100%(SWS PWM Driver 第18页)。最重要的服务:

  • Pwm_SetDutyCycle 更改占空比 [SWS_Pwm_91000]。在 0% 和 100% 时,它根据极性设置静态电平。
  • Pwm_SetPeriodAndDuty 额外更改周期,但仅适用于 PWM_VARIABLE_PERIOD 类的通道 [SWS_Pwm_00110]。
  • Pwm_SetOutputToIdle 立即切换至空闲电平 [SWS_Pwm_91002]。
  • Pwm_GetOutputState 读取内部电平 [SWS_Pwm_00100]。
kanal init 在 Pwm_Init 之后 (配置的初始状态) mod Modulation (0 % < Tastgrad < 100 %) init->mod Konfiguration: Modulation stat 静态电平 (0 %:与极性相反, 100 %:与极性相同) init->stat 配置:Low 或 High mod->mod Pwm_SetPeriodAndDuty (仅限 PWM_VARIABLE_PERIOD) mod->stat Pwm_SetDutyCycle(0x0000 | 0x8000) idle Idle-Zustand (konfigurierter Idle-Pegel) mod->idle Pwm_SetOutputToIdle / Pwm_DeInit stat->mod Pwm_SetDutyCycle(> 0 %, < 100 %) stat->idle Pwm_SetOutputToIdle / Pwm_DeInit idle->mod Pwm_SetPeriodAndDuty (可变周期下的重新激活)

状态图:通道通过 API 在调制、静态电平和空闲状态之间切换。来源:[SWS_Pwm_91000]、[SWS_Pwm_91001]、SWS PWM Driver 第31页

边沿通知通过 Pwm_EnableNotification 按通道开启 [SWS_Pwm_91004],并作为 Pwm_Notification_<#Channel> 送达 Pwm User [SWS_Pwm_00105]。可选地,驱动程序还以两个阶段管理功率状态。Pwm_PreparePowerState 启动准备过程 [SWS_Pwm_00183],周期性的 Pwm_Main_PowerTransitionManager 将其完成 [SWS_Pwm_00189]。随后 Pwm_SetPowerState 设置状态 [SWS_Pwm_00166]。

在错误检测处于激活状态时,函数会报告诸如 PWM_E_UNINIT、PWM_E_PARAM_CHANNEL 或 PWM_E_PERIOD_UNCHANGEABLE 之类的错误 [SWS_Pwm_00201] 并直接返回而不产生任何效果(SWS PWM Driver 第44页)。在这些情况下,Pwm_GetOutputState 返回 PWM_LOW [SWS_Pwm_30051]。如果在驱动程序仍在使用中时调用 Pwm_SetPowerState,将产生运行时错误 PWM_E_NOT_DISENGAGED [SWS_Pwm_00202]。

在 MCAL 中的角色:位于 PWM 单元与 Pwm User 之间的驱动程序

PWM 驱动程序封装了微控制器的脉冲宽度调制输出。作为 MCAL 层的模块,它直接访问微控制器的寄存器,因此不需要较低层模块的接口(SWS PWM Driver 第44页)。出于同样的原因,它不为下层提供回调(SWS PWM Driver 第40页),也不提供服务接口(SWS PWM Driver 第44页)。其服务可通过 Pwm.h 获取,例如 Pwm_Init [SWS_Pwm_00095]、Pwm_SetDutyCycle [SWS_Pwm_91000] 和 Pwm_GetOutputState [SWS_Pwm_00100]。它从 Std_Types.h [SWS_Pwm_00094] 导入标准类型 Std_ReturnType 和 Std_VersionInfoType。

ECU State Manager 将 Pwm_Init 列在其可选初始化接口中(SWS EcuM 第152页)。在功率输出级的用例中,IoHwAb 的功率级驱动程序调用 PWM、DIO 和 SPI 的服务,以此设置电压和频率等(SWS IoHwAb 第37页)。在相反方向上,该驱动程序调用两类函数:通道特定的通知 Pwm_Notification_<#Channel> [SWS_Pwm_00105] 以及电源管理中的 IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> [SWS_Pwm_00198]。它可选地通过 Det_ReportError [SWS_Pwm_00104] 报告开发错误。如果硬件为不同通道提供不同机制,则不通过厂商特定的 API 中缀进行抽象,而是通过通道号进行抽象(TPS BSWMDT 第122页)。

kontext EcuM EcuM (Startup) Pwm Pwm (MCAL-Treiber) EcuM->Pwm Pwm_Init User Pwm User (z. B. IoHwAb / Power-Stage-Treiber) User->Pwm Pwm_SetDutyCycle, Pwm_SetPeriodAndDuty, Pwm_SetOutputToIdle, Pwm_GetOutputState, Pwm_EnableNotification / Pwm_DisableNotification, Power-State-APIs SchM SchM (BSW-Scheduler) SchM->Pwm Pwm_Main_PowerTransitionManager (zyklisch) Pwm->User Pwm_Notification_<#Channel> IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> Det Det Pwm->Det Det_ReportError (optional) HW PWM-Einheit (Mikrocontroller) Pwm->HW direkter Registerzugriff Port Port-Logik / PWM-Pin HW->Port PWM 信号 (Pwm_GetOutputState 的读取点, 位于端口逻辑之前)

上下文图:Pwm 驱动程序由 EcuM 初始化并由 Pwm User 操作。它由调度程序周期性调用,向 Pwm User 报告通知并向 DET 报告错误,并通过寄存器控制 PWM 单元。来源:[SWS_Pwm_00104]、[SWS_Pwm_00105]、[SWS_Pwm_00189]、[SWS_Pwm_00198]、SWS EcuM 第152页、SWS IoHwAb 第37页、RS PWM Driver 第14页

信号模型:周期、占空比、极性和通道类别

通道通过数字标识符 Pwm_ChannelType 寻址 [SWS_Pwm_00106]。周期属于类型 Pwm_PeriodType,这是一种具有 8 至 32 位的具体实现特定类型 [SWS_Pwm_00107]。三个概念决定了信号(SWS PWM Driver 第9页):

  • 极性定义每个周期的起始电平。
  • 占空比指定该起始电平在周期中所占的比例。
  • 空闲状态是 Pwm_SetOutputToIdle 或 Pwm_DeInit 之后的初始状态。

信号描述示意图对比了两种极性 PWM_HIGH 和 PWM_LOW(SWS PWM Driver 第7页)。

占空比是一个 16 位值。0x0000 代表 0%,0x8000 代表 100%。作为实现参考,规范给出了 AbsoluteDutyCycle = ((uint32)AbsolutePeriodTime * RelativeDutyCycle) >> 15;(SWS PWM Driver 第18页)。相应地,Pwm_SetDutyCycle 和 Pwm_SetPeriodAndDuty 将参数 DutyCycle 限制为 Min=0x0000 和 Max=0x8000 [SWS_Pwm_91000] [SWS_Pwm_91001]。

通道类别 Pwm_ChannelClassType 规定了通道在运行时允许更改的内容 [SWS_Pwm_00110]:

  • PWM_VARIABLE_PERIOD:周期和占空比均可更改。
  • PWM_FIXED_PERIOD:仅占空比可更改。
  • PWM_FIXED_PERIOD_SHIFTED:固定的偏移周期,不可更改;仅在硬件支持时可用。

偏移周期示意图显示了具有相同周期且周期起始点分别偏移固定时间的通道(SWS PWM Driver 第23页)。

生命周期与信号控制:从 Pwm_Init 到空闲状态

Pwm_Init 是同步且不可重入的。该函数通过 ConfigPtr 接收指向配置集的指针 [SWS_Pwm_00095]。其类型 Pwm_ConfigType 包含特定于硬件的内容 [SWS_Pwm_00111]。根据初始化示意图,输出在此之后根据配置处于低电平、高电平或调制状态。通知仅在首次调用 Pwm_EnableNotification 之后出现(SWS PWM Driver 第46页)。如果在已初始化的驱动程序上再次调用 Pwm_Init,则必须报告开发错误 PWM_E_ALREADY_INITIALIZED [SWS_Pwm_50002]。

Pwm_DeInit 同样是同步且不可重入的 [SWS_Pwm_00096]。该函数对模块进行去初始化,将输出置于空闲状态,并关闭 PWM 中断以及边沿通知。它可以通过 PwmDeInitApi 启用和禁用(SWS PWM Driver 第27页)。解释:在此之后,模块应再次被视作未初始化,从而允许再次调用 Pwm_Init。 问题 Q-a892974ddbe644e0 (未决)

lebenszyklus start 开始 uninit 未初始化 start->uninit uninit->uninit 其他 API → PWM_E_UNINIT (Pwm_GetOutputState 返回 PWM_LOW) init 已初始化 (通道根据配置: Low、High 或调制) uninit->init Pwm_Init(ConfigPtr) init->uninit Pwm_DeInit (输出 Idle,中断和 通知关闭) Interpretation: 后续状态 init->init Pwm_Init → PWM_E_ALREADY_INITIALIZED

状态图:包含初始化、去初始化以及调用顺序错误时的错误的模块生命周期。在 Pwm_DeInit 之后返回“未初始化”状态属于一种解释。来源:[SWS_Pwm_00095]、[SWS_Pwm_00096]、[SWS_Pwm_50002]、[SWS_Pwm_20002]、[SWS_Pwm_30051]、SWS PWM Driver 第27页

在运行期间,Pwm_SetDutyCycle 设置通道的占空比 [SWS_Pwm_91000]。在 0% 和 100% 时,输出被静态设置(SWS PWM Driver 第28页):

  • 在 0% 时,电平与配置的极性相反。
  • 在 100% 时,电平与极性一致。
  • 在介于两者之间的值时,根据周期、占空比和极性进行调制。

根据示意图,驱动程序在当前周期结束时采用新的占空比(如果具体实现支持),否则立即采用(SWS PWM Driver 第37页)。

Pwm_SetPeriodAndDuty 同时设置周期和占空比 [SWS_Pwm_91001]。此时适用三条规则(SWS PWM Driver 第30页):

  • 如果具体实现支持并通过 PwmPeriodUpdatedEndperiod 进行了配置,则在周期结束时更新周期。
  • 必须抑制输出端的毛刺脉冲。
  • 同时传入占空比,以使频率和占空比相互匹配。
tastgrad a 调用 Pwm_SetDutyCycle 或 Pwm_SetPeriodAndDuty (通用检查通过) k Pwm_SetPeriodAndDuty? a->k c Kanalklasse = PWM_VARIABLE_PERIOD? k->c 是 d angeforderter Tastgrad? k->d nein (Pwm_SetDutyCycle) e 报告 PWM_E_PERIOD_UNCHANGEABLE, 退出函数且无动作 c->e 否(在错误检测 激活时) p 设置周期和占空比 (在周期结束时设置周期,若启用了 PwmPeriodUpdatedEndperiod; 抑制毛刺) c->p 是 z 输出静态: 与极性相反 d->z 0x0000 (0 %) h 输出静态: 与极性相同 d->h 0x8000 (100 %) m 根据周期、 占空比和极性进行调制 d->m dazwischen

活动图:Pwm_SetDutyCycle 和 Pwm_SetPeriodAndDuty 的处理,包含通道类别的检查以及 0% 和 100% 的特殊处理。来源:[SWS_Pwm_40002]、SWS PWM Driver 第28页、SWS PWM Driver 第30页、SWS PWM Driver 第44页

Pwm_SetOutputToIdle 立即将输出设置为配置的空闲状态 [SWS_Pwm_91002]。具有可变周期的通道随后通过 Pwm_SetPeriodAndDuty 重新激活(SWS PWM Driver 第31页)。“Setting Pwm output to idle”示意图准确展示了该序列(SWS PWM Driver 第50页)。Pwm_GetOutputState 同步读取内部输出状态,结果为 PWM_HIGH 或 PWM_LOW [SWS_Pwm_00100] [SWS_Pwm_00108]。需求规范中的示意图将读取的值定位在 PWM 单元的输出端,即在端口逻辑之前,而非物理引脚处(RS PWM Driver 第14页)。

kanal init 在 Pwm_Init 之后 (配置的初始状态) mod Modulation (0 % < Tastgrad < 100 %) init->mod Konfiguration: Modulation stat 静态电平 (0 %:与极性相反, 100 %:与极性相同) init->stat 配置:Low 或 High mod->mod Pwm_SetPeriodAndDuty (仅限 PWM_VARIABLE_PERIOD) mod->stat Pwm_SetDutyCycle(0x0000 | 0x8000) idle Idle-Zustand (konfigurierter Idle-Pegel) mod->idle Pwm_SetOutputToIdle / Pwm_DeInit stat->mod Pwm_SetDutyCycle(> 0 %, < 100 %) stat->idle Pwm_SetOutputToIdle / Pwm_DeInit idle->mod Pwm_SetPeriodAndDuty (可变周期下的重新激活)

状态图:通道的输出状态(调制、静态电平、空闲)以及在它们之间切换的 API。来源:[SWS_Pwm_91000]、[SWS_Pwm_91001]、[SWS_Pwm_91002]、SWS PWM Driver 第28页、SWS PWM Driver 第31页、SWS PWM Driver 第46页

各通道的边沿通知

Pwm User 使用 Pwm_EnableNotification 启用通道的通知。类型为 Pwm_EdgeNotificationType 的参数选择 PWM_RISING_EDGE、PWM_FALLING_EDGE 或 PWM_BOTH_EDGES [SWS_Pwm_91004] [SWS_Pwm_00109]。该函数丢弃挂起的中断(SWS PWM Driver 第35页)。与 Pwm_DisableNotification [SWS_Pwm_91003] 一样,它仅在启用 PwmNotificationSupported 时存在(SWS PWM Driver 第34页)。

驱动程序根据对 Pwm_EnableNotification 或 Pwm_DisableNotification 的最后一次调用来调用配置的函数 Pwm_Notification_<#Channel>。在此过程中,它会复位相关的中断标志(SWS PWM Driver 第42页)。回调没有参数,并通过 Pwm_Externals.h 声明。它是否可重入取决于 Pwm User 的具体实现 [SWS_Pwm_00105]。

PWM 通道的边沿通知Pwm UserPwmPwm_Init(const Pwm_ConfigType*)Pwm_Init()在此之前不进行通知:ersten Pwm_EnableNotificationPwm_EnableNotification(ChannelNumber,PWM_RISING_EDGE | PWM_FALLING_EDGE | PWM_BOTH_EDGES)anstehende Interrupts verwerfenPwm_EnableNotification()loop在每个选定的边沿复位中断标志Pwm_Notification_<#Channel>()Pwm_DisableNotification(ChannelNumber)Pwm_DisableNotification()无进一步通知

时序图:从初始化到启用和禁用边沿通知,直至不再出现进一步回调的过程。来源:[SWS_Pwm_91004]、[SWS_Pwm_91003]、[SWS_Pwm_00105]、SWS PWM Driver 第52页、SWS PWM Driver 第42页

PWM 外设的电源状态

电源状态控制是一项可选功能。它仅限于 PWM 外设,并要求应用程序、模式管理和 IoHwAb 已经满足上层边界条件(SWS PWM Driver 第17页)。如果 PwmLowPowerStatesSupport 处于活动状态,则生成四个电源状态 API(SWS PWM Driver 第16页)。Pwm_PowerStateType 包含 PWM_FULL_POWER (0x00) 以及代表功耗递减状态的范围 1..255。在 R20-11 中,该类型被定义为枚举 [SWS_Pwm_00197]。而较新版本则将其列为派生自 uint8 的类型(SWS PWM Driver 第25页)。

电源状态的切换分两个阶段进行:

  1. Pwm_PreparePowerState 启动准备工作,并在结果参数中返回 PWM_SERVICE_ACCEPTED 或拒绝原因 [SWS_Pwm_00183] [SWS_Pwm_00165]。无法立即完成的操作由周期性调用的 Pwm_Main_PowerTransitionManager [SWS_Pwm_00189] [SWS_Pwm_00190] 处理。其调用速率是可变的,并且仅在异步模式下发送回调(SWS PWM Driver 第41页)。驱动程序使用 IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> [SWS_Pwm_00198] 报告准备工作已完成。
  2. Pwm_SetPowerState 将硬件置于已准备好的状态 [SWS_Pwm_00166]。负责的 SWC(例如 IoHwAb)必须已经完成了前置工作,例如将所有通道置为 IDLE 并注销所有通知。该函数不执行隐式中间状态(SWS PWM Driver 第36页)。
powerzustand uninit 未初始化 (结果为 PWM_NOT_INIT) stabil stabil (aktueller = Zielzustand) uninit->stabil Pwm_Init stabil->stabil Pwm_SetPowerState 未经准备 或以当前状态进行 Prepare → PWM_SEQUENCE_ERROR stabil->stabil 不支持 / 无法直接到达 → PWM_POWER_STATE_NOT_SUPP / PWM_TRANS_NOT_POSSIBLE vorb 准备工作中 (目标 ≠ 当前状态) stabil->vorb Pwm_PreparePowerState(PowerState) E_OK / PWM_SERVICE_ACCEPTED (asynchroner Modus) bereit Vorbereitung abgeschlossen stabil->bereit Pwm_PreparePowerState (synchroner Modus) vorb->bereit Pwm_Main_PowerTransitionManager → IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> bereit->stabil Pwm_SetPowerState E_OK (neuer Zustand aktiv)

状态图:包含准备、完成和设置以及时序错误的电源状态两阶段切换。来源:[SWS_Pwm_00183]、[SWS_Pwm_00166]、[SWS_Pwm_00165]、[SWS_Pwm_00190]、SWS PWM Driver 第39页、SWS IoHwAb 第61页

Pwm_GetCurrentPowerState [SWS_Pwm_00177] 返回当前状态,Pwm_GetTargetPowerState [SWS_Pwm_00180] 返回请求的状态。只要没有转换在进行,两者就保持一致(SWS PWM Driver 第38页)。IoHwAb 规范展示了异步情况下 BswM、RTE/SchM、IoHwAb、ADC 和 PWM 的相互协作(SWS IoHwAb 第60页)。在同步情况下,当准备 API 返回时,准备工作就已经完成(SWS IoHwAb 第61页)。

Asynchroner Wechsel in einen Niedrigenergiezustand (vereinfacht)BswMRte / SchMIoHwAbPwmUse Case: Phase 1: VorbereitungRTE/SchMSwitch(...)OnEntryRunnable_LowPowerModeA()IoHwAb_PreparePowerState_LowPowerModeA()Pwm_PreparePowerState(PwrSts_3)E_OK / PWM_SERVICE_ACCEPTED准备工作在后台继续运行Use Case: Phase 2: Hintergrundverarbeitungloopbis Vorbereitung abgeschlossenPwm_Main_PowerTransitionManager()IoHwAb_Pwm_NotifyReadyForPowerStateLowPowerModeA()IoHwAb_PollForResults()UpdateModePorts()Use Case: Phase 3: Zustand setzenRTE/SchMSwitch(LowPowerModeA_Transition_End)IoHwAb_EnterPowerStateLP1()前提条件:所有通道处于 IDLE,Benachrichtigungen abgemeldetPwm_SetPowerState(&Result)E_OK / PWM_SERVICE_ACCEPTEDPwm_GetCurrentPowerState(...)E_OK, CurrentPowerState

时序图:由 IoHwAb 控制的向低功耗状态的异步切换。该流程已简化,并省略了 ADC。来源:[SWS_Pwm_00183]、[SWS_Pwm_00189]、[SWS_Pwm_00198]、[SWS_Pwm_00166]、SWS IoHwAb 第57页、SWS IoHwAb 第60页

配置、通道容器与并发性

通道的必选参数包括分配的硬件通道、周期和占空比的默认值、极性、空闲电平和通道类别。相位偏移、参考通道和微控制器特定属性是可选的,只要硬件提供即可(SWS PWM Driver 第25页)。在配置模型中,PwmChannelConfigSet 包含至少一个 PwmChannel,并且 PwmDutycycleDefault 限制为 0 至 0x8000(ECUC-Parameter 第545页)。PwmChannelClass 被映射到 Pwm_ChannelClassType。PwmChannelId 被分配给通道容器的符号名称(SWS PWM Driver 第57页)。

可选服务通过配置启用和禁用:PwmSetOutputToIdle(SWS PWM Driver 第31页)、PwmGetOutputState(SWS PWM Driver 第33页)以及上述的 PwmDeInitApi 和 PwmNotificationSupported。

关于并发性:

  • 诸如 Pwm_SetDutyCycle 等通道服务针对不同通道号是可重入的 [SWS_Pwm_91000]。
  • 电源状态 API 是不可重入的 [SWS_Pwm_00183]。
  • 模块必须拒绝包含具体实现不支持的分区分配的配置 [SWS_Pwm_00203]。

BSW 分发指南阐述了直至“多核可重入”的重入级别(BSW Distribution Guide 第18页)。

发生错误时的行为

如果开发错误检测处于激活状态,这些函数会将检测到的错误报告给 Default Error Tracer。随后它们跳过所请求的函数,以避免数据或硬件寄存器被破坏(SWS PWM Driver 第44页)。错误代码为 [SWS_Pwm_00201]:

  • PWM_E_INIT_FAILED (0x10)
  • PWM_E_UNINIT (0x11),用于初始化前的调用 [SWS_Pwm_20002]
  • PWM_E_PARAM_CHANNEL (0x12),用于无效通道 [SWS_Pwm_30002]
  • PWM_E_PERIOD_UNCHANGEABLE (0x13),用于在固定周期通道上更改周期 [SWS_Pwm_40002]
  • PWM_E_ALREADY_INITIALIZED (0x14)
  • PWM_E_PARAM_POINTER (0x15),用于传给 Pwm_GetVersionInfo 的 NULL 参数

Pwm_GetOutputState 必须始终返回一个值。在初始化之前或通道无效时,该值为 PWM_LOW [SWS_Pwm_30051]。

pruefung a 调用通道 API det Entwicklungsfehlererkennung aktiv? a->det ini Modul initialisiert? det->ini 是 ok 执行服务 det->ok 不 ch ChannelNumber 是否有效? ini->ch 是 u PWM_E_UNINIT an Det melden ini->u 不 pc PWM_E_PARAM_CHANNEL an Det melden ch->pc 不 ch->ok 是 skip 退出函数且无动作 (Pwm_GetOutputState 返回 PWM_LOW) u->skip pc->skip

活动图:开发错误检测激活时通道 API 的常规检查,包含无效果的中止。来源:[SWS_Pwm_20002]、[SWS_Pwm_30002]、[SWS_Pwm_30051]、SWS PWM Driver 第44页

电源状态 API 还通过 Std_ReturnType 和结果类型 Pwm_PowerStateRequestResultType 报告错误。可能的值包括 PWM_NOT_INIT、PWM_SEQUENCE_ERROR、PWM_HW_FAILURE、PWM_POWER_STATE_NOT_SUPP 和 PWM_TRANS_NOT_POSSIBLE [SWS_Pwm_00165]。此外,对于不受支持的状态规定了 PWM_E_POWER_STATE_NOT_SUPPORTED [SWS_Pwm_00174],对于无法直接达到的状态规定了 PWM_E_TRANSITION_NOT_POSSIBLE [SWS_Pwm_00175]。

如果在仍有通道未处于 IDLE 状态或已注册通知的情况下调用 Pwm_SetPowerState,则会产生运行时错误 PWM_E_NOT_DISENGAGED (0x16) [SWS_Pwm_00202](SWS PWM Driver 第20页)。Pwm_Main_PowerTransitionManager 直接返回而不进行初始化,并且特意不报告开发错误。原因在于:周期性任务可能在初始化结束之前就已经运行(SWS PWM Driver 第41页)。

进一步详细证据

基于有效载荷中为 AUTOSAR Classic R20-11 提供的需求和文档出处由 AI 生成的指南。仅规范具有约束力。

PWM Driver (Pwm)

Generates pulse-width-modulated signals with configurable duty cycle and period.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 Pwm_Init [SWS_Pwm_00095] 📄 PDF

void Pwm_Init (const Pwm_ConfigType* ConfigPtr);

Service for PWM initialization.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 0770524664d2 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 Pwm_Init 用作初始化整个 PWM 驱动的核心服务([SWS_Pwm_00095])。它通过头文件 Pwm.h 提供,并具有十六进制服务 ID 0x00([SWS_Pwm_00095])。作为唯一的输入参数传递 ConfigPtr,它用作指向类型为 Pwm_ConfigType 的驱动专用配置集的指针([SWS_Pwm_00095])。该接口没有返回值,既不使用输出参数,也不使用输入/输出参数([SWS_Pwm_00095])。

关于运行时行为,Pwm_Init 为同步且被指定为不可重入(Non Reentrant)([SWS_Pwm_00095])。因此,严格禁止从多个线程、任务或中断例程中对该函数进行并发或打断调用。在进一步使用 PWM 通道之前,通常推测在系统启动期间 ECU 初始化阶段执行一次。 问题 Q-ff3f1cf769dfed70 (未决)

为了确保允许的调用顺序,该模块会监视自身状态:如果在 PWM 驱动已初始化的情况下调用服务 Pwm_Init,模块将报告具有标识符 0x14 的开发错误 PWM_E_ALREADY_INITIALIZED([SWS_Pwm_50002])。因此,重复初始化被视为错误。

此文本由 AI 创建。AUTOSAR 规范具有权威性。

实现者指南即将推出(复杂度 I1)

函数 Pwm_DeInit [SWS_Pwm_00096] 📄 PDF

void Pwm_DeInit (void);

Service for PWM De - Initialization.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: e8e4048754f1 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用与签名

函数 Pwm_DeInit 用作去初始化 PWM 驱动程序的服务([SWS_Pwm_00096])。它通过头文件 Pwm.h 提供,并带有服务 ID 0x01([SWS_Pwm_00096])。该接口具有签名 void Pwm_DeInit(void),既不接收输入参数也不接收输出参数,且不向调用方提供返回值([SWS_Pwm_00096])。

Pwm_DeInit 的调用同步执行([SWS_Pwm_00096])。因此,调用控制流会停留在该函数中,直到 PWM 模块的去初始化步骤完成。

并发性与限制

关于并发性,执行时适用以下约束条件:

  • 不可重入:该服务被指定为不可重入([SWS_Pwm_00096])。严禁从多个线程、Task 或 ISR 同时或中断调用。
  • 调用上下文:由于同步语义以及不可重入特性,该调用通常应在 Task 级别的受控关闭阶段执行。 问题 Q-f1afc58637cba5cf (未决)

错误处理

在 Pwm_DeInit 的规范中,既未定义返回值也未定义特定错误码([SWS_Pwm_00096])。由于未提供通过函数接口直接反馈错误的方式,任何运行时或状态错误大概率会通过模块内部监控机制(例如开发错误跟踪器 DET)进行记录或拦截。 问题 (未决)

本文本根据 AUTOSAR Classic R20-11 规范自动生成。

函数 Pwm_DisableNotification [SWS_Pwm_91003] 📄 PDF

void Pwm_DisableNotification (Pwm_ChannelType ChannelNumber);

Service to disable the PWM signal edge notification.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 2d97fc6435bd 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 Pwm_DisableNotification 用于禁用特定 PWM 通道的边沿通知(Signal Edge Notification)[SWS_Pwm_91003]。函数声明和关联的类型定义通过头文件 Pwm.h 提供 [SWS_Pwm_91003]。

参数与返回值

该接口具有服务 ID 0x06,并具有以下签名特征 [SWS_Pwm_91003]:

  • ChannelNumber(in):要配置的 PWM 通道的数值标识符,类型为 Pwm_ChannelType [SWS_Pwm_91003]。

既不存在输入/输出参数(inout),也不存在纯输出参数(out)[SWS_Pwm_91003]。该函数不向调用者返回任何返回值(void)[SWS_Pwm_91003]。

同步行为与并发性

Pwm_DisableNotification 的调用采用异步方式工作 [SWS_Pwm_91003]。关于多线程行为,只要访问不同的通道号,该服务就是可重入的 [SWS_Pwm_91003]。

Interpretation: 由于重入性显式限制在不同通道,因此该函数对于同一 PWM 通道大概率是不可重入的 [SWS_Pwm_91003]。 问题 Q-005e97fd25679da7 (未决)因此,针对相同通道的并发调用可能必须在调用方相互同步。

基于 AUTOSAR Classic R20-11 规范精选的使用说明。

函数 Pwm_EnableNotification [SWS_Pwm_91004] 📄 PDF

void Pwm_EnableNotification (Pwm_ChannelType ChannelNumber, Pwm_EdgeNotificationType Notification);

Service to enable the PWM signal edge notification according to notification pa rameter.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 0c9ffc1eca13 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

函数 Pwm_EnableNotification 用于根据传入的通知参数 [SWS_Pwm_91004] 为特定 PWM 通道启用信号沿通知。该服务通过头文件 Pwm.h 提供,服务 ID 为 0x07,并且不向调用者返回任何返回值(void)[SWS_Pwm_91004]。

调用该接口时,必须传递两个必选输入参数 [SWS_Pwm_91004]:

  • ChannelNumber(类型为 Pwm_ChannelType):要访问的 PWM 通道的数字标识符 [SWS_Pwm_91004]。
  • Notification(类型为 Pwm_EdgeNotificationType):定义沿通知的类型,允许的值为 PWM_RISING_EDGE、PWM_FALLING_EDGE 或 PWM_BOTH_EDGES [SWS_Pwm_91004]。

语义与并发性

该服务的执行被指定为异步 [SWS_Pwm_91004]。关于并发性,Pwm_EnableNotification 设计为针对不同通道号可重入 [SWS_Pwm_91004]。在对同一 PWM 通道进行并发或中断访问时,该服务大概率不可重入;因此必须在调用方对此类调用进行保护。 问题 Q-73309ed8589161a3 (未决)

错误处理与边界条件

规范摘录既未针对该函数定义特定的返回值,也未针对开发错误跟踪器(DET)或 Diagnostic Event Manager(DEM)定义错误消息 [SWS_Pwm_91004]。同样缺乏关于允许的调用上下文或与 Task 相关的顺序的规定。由于未提及前提条件,因此该函数调用可能只有在 PWM 驱动程序成功初始化之后才被允许。 问题 Q-7f428f59a20175c2 (未决)

本使用说明基于 AUTOSAR Classic R20-11 的规范摘录自动生成。

函数 Pwm_SetPowerState [SWS_Pwm_00166] 📄 PDF

Std_ReturnType Pwm_SetPowerState (Pwm_PowerStateRequestResultType* Result);

This API configures the Pwm module so that it enters the already prepared power st ate, chosen between a predefined set of configured ones.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: b7532b0354d7 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 Pwm_SetPowerState 将 PWM 模块置于来自预配置 Power-State 选项中先前准备好的状态 [SWS_Pwm_00166]。声明可通过头文件 Pwm.h 获取 [SWS_Pwm_00166]。

使用方法与返回值

该函数不接受任何输入参数,并通过类型为 Pwm_PowerStateRequestResultType* 的指针参数 Result 传递详细结果 [SWS_Pwm_00166]:

  • 如果能够成功切换模式,该函数将返回 E_OK 并将 Result 设置为 PWM_SERVICE_ACCEPTED [SWS_Pwm_00166]。
  • 如果请求被拒绝,调用将返回 E_NOT_OK [SWS_Pwm_00166]。

错误处理

发生错误时(返回值 E_NOT_OK),Result 指定失败原因 [SWS_Pwm_00166]:

  • PWM_NOT_INIT:PWM 模块未初始化 [SWS_Pwm_00166]。
  • PWM_SEQUENCE_ERROR:存在不允许的 API 调用时序 [SWS_Pwm_00166]。
  • PWM_HW_FAILURE:硬件模块中的错误阻止进入所请求的 Power-State [SWS_Pwm_00166]。

并发性与边界条件

Pwm_SetPowerState 不可重入(Non Reentrant),并且为了避免时序错误,要求在调用之前已准备好目标状态 [SWS_Pwm_00166]。

本文件由人工智能根据 AUTOSAR 规范生成。

实现者指南即将推出(复杂度 I1)

函数 Pwm_GetCurrentPowerState [SWS_Pwm_00177] 📄 PDF

Std_ReturnType Pwm_GetCurrentPowerState (Pwm_PowerStateType* CurrentPowerState, Pwm_PowerStateRequestResultType* Result);

This API returns the current power state of the PWM HW unit. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

函数 Pwm_PreparePowerState [SWS_Pwm_00183] 📄 PDF

Std_ReturnType Pwm_PreparePowerState (Pwm_PowerStateType PowerState, Pwm_PowerStateRequestResultType* Result);

This API starts the needed process to allow the PWM HW module to enter the requested power state. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 50b7f8a853d8 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步函数 Pwm_PreparePowerState 启动所需的准备流程,以便 PWM 硬件模块能够切换到所请求的电源状态 [SWS_Pwm_00183]。期望的目标状态通过参数 PowerState 传递,而详细结果则通过输出指针 Result 提供 [SWS_Pwm_00183]。如果已成功触发准备工作,该函数将返回 E_OK 并将 Result 设置为 PWM_SERVICE_ACCEPTED [SWS_Pwm_00183]。

错误处理

如果服务被拒绝,该函数将返回 E_NOT_OK 并通过 Result 报告具体原因 [SWS_Pwm_00183]:

  • PWM_NOT_INIT:PWM 模块未初始化 [SWS_Pwm_00183]。
  • PWM_SEQUENCE_ERROR:不允许的调用时序,因为当前电源状态已与目标状态相符 [SWS_Pwm_00183]。
  • PWM_POWER_STATE_NOT_SUPP:模块不支持所请求的电源状态 [SWS_Pwm_00183]。
  • PWM_TRANS_NOT_POSSIBLE:无法直接转换,或者硬件外设仍处于忙碌状态 [SWS_Pwm_00183]。

并发性与交互

该函数不可重入(Non Reentrant),因此不得针对同一模块进行并发调用 [SWS_Pwm_00183]。在通过 Pwm_PreparePowerState 成功准备后,必须执行后续的、非立即生效的操作,以最终完成电源状态转换 [SWS_Pwm_00190]。

本使用说明根据 R20-11 规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 Pwm_Main_PowerTransitionManager [SWS_Pwm_00189] 📄 PDF

void Pwm_Main_PowerTransitionManager (void);

This API is cyclically called and supervises the power state transitions, checking for the readiness of the module and issuing the callbacks Io Hw Ab_ Pwm_ Notify Ready For Power State (see Pwm Power State Ready Cb k Ref configuration parameter). AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 879296577e8e 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

根据 [SWS_Pwm_00189],接口 Pwm_Main_PowerTransitionManager 用于周期性监控 PWM 驱动程序的电源状态转换(Power State Transitions)。其服务 ID 为 0x0d,不接收任何传入参数且不提供返回值(签名 void Pwm_Main_PowerTransitionManager(void))。

作为其周期性执行的一部分,该函数检查模块针对相应电源状态的就绪情况。一旦就绪,它就会触发通过配置参数 PwmPowerStateReadyCbkRef 引用的通知回调 IoHwAb_Pwm_NotifyReadyForPowerState<Mode> [SWS_Pwm_00189]。

该函数专用于周期性调用上下文,并通过头文件 SchM_Pwm.h 提供。因此,周期性调用通常应在 BSW 调度器(Schedule Manager)的上下文中执行 [SWS_Pwm_00189]。 问题 Q-b9b0431e7ccbca88 (未决)在模块规范中,未针对该服务定义特定的错误码、通过 DET 或 DEM 进行错误处理的机制以及特殊的可重入性条件。

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

函数 Pwm_ [SWS_Pwm_00105] 📄 PDF

void Pwm_Notification_<#Channel> (void);

The Pwm module shall call the function Pwm_ Notification_<#Channel> accordingly to the last call of Pwm_ Enable Notification for channel <#Channel>.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 6eff8686a5f4 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

一旦发生为相应通道配置的沿事件,PWM 模块便会同步调用通道相关的通知函数 Pwm_Notification_<#Channel> [SWS_Pwm_00105]。该函数具有签名 void Pwm_Notification_<#Channel>(void),不接收任何传入参数且不提供返回值 [SWS_Pwm_00105]。它在文件 Pwm_Externals.h 中声明,且必须由用户提供 [SWS_Pwm_00105]。

调用的发生取决于针对相关通道最后一次调用 Pwm_EnableNotification 的情况 [SWS_Pwm_00105]。触发事件基于 Pwm_EdgeNotificationType 的值,该值区分上升沿(PWM_RISING_EDGE)、下降沿(PWM_FALLING_EDGE)或双信号沿(PWM_BOTH_EDGES)[SWS_Pwm_00109]。在信号生成和事件通知之前,PWM 模块必须已通过 Pwm_Init 使用硬件相关的 Pwm_ConfigType 结构完成初始化 [SWS_Pwm_00095], [SWS_Pwm_00111]。

关于并发性,回调函数的可重入性被显式定义为取决于用户(PWM user implementation dependant)[SWS_Pwm_00105]。确切的执行上下文(例如调用是直接在中断服务例程中发生还是在 Task 上下文中发生)可能取决于底层驱动程序的实现(Interpretation)。 问题 Q-327872e0e8fecb37 (未决)该通知接口不存在特定的错误码、返回值或标准化的 DET 或 DEM 消息 [SWS_Pwm_00105]。

本文本由 AI 创建,基于 AUTOSAR Classic Release R20-11 规范。

函数 IoHwAb_Pwm_NotifyReadyForPower [SWS_Pwm_00198] 📄 PDF

void IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> (void);

The API shall be invoked by the PWM Driver when the requested power state preparation for mode <#Mode> is completed.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 23b0f44b508d 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 IoHwAb_Pwm_NotifyReadyForPower(在语法中声明为 IoHwAb_Pwm_NotifyReadyForPowerState<#Mode>)通过头文件 IoHwAb_Pwm.h 提供,并在 AUTOSAR 电源管理中用作回调接口 [SWS_Pwm_00198]。

关于使用、接口特性和系统协同交互,适用以下具有约束力的规范:

  • 使用与调用上下文:该接口具有服务 ID 0x60 并且同步执行 [SWS_Pwm_00198]。一旦某个模式的请求功率状态(Power State)的设备端准备工作成功完成,PWM 驱动程序必须调用该接口 [SWS_Pwm_00198]。
  • 参数与返回值:函数签名既未定义输入参数、输入/输出参数,也未定义输出参数,并且没有返回值(void)[SWS_Pwm_00198]。Interpretation: 与相应功率模式的对应关系应直接从源代码中特定于模式的函数名称中推导得出。 问题 Q-ab761160ed91de78 (未决)
  • 并发性与限制:该函数被指定为不可重入(Non Reentrant)[SWS_Pwm_00198]。因此,在同一驱动程序上下文中不得并行或嵌套调用。
  • 协同交互:在跨模块流程中,该调用向上一级 I/O 硬件抽象发出信号,表明驱动级已准备好切换到所需的工作状态 [SWS_Pwm_00198]。

在规范源中,未为此函数规定特定的错误代码,也未规定向 DET 或 DEM 发送的消息 [SWS_Pwm_00198]。

该文本由 AI 创建;所有陈述均仅基于 AUTOSAR 规范。

实现者指南即将推出(复杂度 I1)

类型 Pwm_OutputStateType [SWS_Pwm_00108] 📄 PDF

Output state of a PWM channel.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 4d670762d069 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

枚举类型 Pwm_OutputStateType 定义了 Classic AUTOSAR 驱动程序内部 PWM 通道的输出状态 Pwm [SWS_Pwm_00108]。该类型定义通过头文件 Pwm.h 提供给调用软件单元和驱动程序应用 [SWS_Pwm_00108]。

该枚举的值域区分通道的两个明确规定的状态 [SWS_Pwm_00108]:

  • PWM_HIGH(数值 0x00):表示相关 PWM 通道处于高电平状态 [SWS_Pwm_00108]。
  • PWM_LOW(数值 0x01):表示相关 PWM 通道处于低电平状态 [SWS_Pwm_00108]。

关于调用上下文和使用目的,该元素本身作为类型未定义任何接口函数 [SWS_Pwm_00108]。Interpretation:这些值通常应作为模块 API 函数的参数或返回值,用以指示通道的当前或期望逻辑电平状态。 问题 Q-9c142d658ab7fcfd (未决)

由于它是一个基本类型定义,因此在规范范围内不存在关于 DET 或 DEM 的特定错误处理,也不存在对可重入性或同步执行的要求 [SWS_Pwm_00108]。

本说明由 AI 基于 AUTOSAR Classic R20-11 规范生成。

实现者指南即将推出(复杂度 I1)

类型 Pwm_EdgeNotificationType [SWS_Pwm_00109] 📄 PDF

Definition of the type of edge notification of a PWM channel.

类型 Pwm_ConfigType [SWS_Pwm_00111] 📄 PDF

This is the type of data structure containing the initialization data for the PWM driver.

类型 Pwm_PowerStateRequestResultType [SWS_Pwm_00165] 📄 PDF

Result of the requests related to power state transitions.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 615a415d7a52 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

根据 [SWS_Pwm_00165],枚举类型 Pwm_PowerStateRequestResultType 提供 PWM 驱动程序中电源管理模式状态更改(Power State Transitions)请求的结果。该类型定义可通过头文件 Pwm.h 获取 [SWS_Pwm_00165]。

该类型既映射成功转换,也映射特定错误条件 [SWS_Pwm_00165]:

  • PWM_SERVICE_ACCEPTED (0x00):请求的 Power-State 切换已成功执行 [SWS_Pwm_00165]。
  • PWM_NOT_INIT (0x01):PWM 模块尚未初始化 [SWS_Pwm_00165]。
  • PWM_SEQUENCE_ERROR (0x02):API 的调用时序不允许 [SWS_Pwm_00165]。
  • PWM_HW_FAILURE (0x03):硬件错误阻止进入所请求的电源状态 [SWS_Pwm_00165]。
  • PWM_POWER_STATE_NOT_SUPP (0x04):模块不支持所请求的状态 [SWS_Pwm_00165]。
  • PWM_TRANS_NOT_POSSIBLE (0x05):无法直接进行状态转换,或者硬件外设仍处于忙状态 [SWS_Pwm_00165]。

调用者必须评估该结果,以确定状态更改是否立即生效。Interpretation:该类型通常应作为相应电源管理函数的返回值或输出参数,以通知上层模块转换冲突或硬件阻塞情况。 问题 Q-fd06829e5c030906 (未决)

本文本由 AI 生成,仅供参考。一切以 AUTOSAR 规范为准。

实现者指南即将推出(复杂度 I1)

类型 Pwm_PowerStateType [SWS_Pwm_00197] 📄 PDF

Power state currently active or set as target power state.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: b1411c45ba56 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

枚举类型 Pwm_PowerStateType 在 PWM 模块中用于描述电源状态 [SWS_Pwm_00197]。它既表示当前活动的工作状态,也表示驱动程序新指定为目标的功率状态 [SWS_Pwm_00197]。该数据类型通过头文件 Pwm.h 提供 [SWS_Pwm_00197]。

规范为该枚举定义了以下值和值域 [SWS_Pwm_00197]:

  • PWM_FULL_POWER(值 0x00):表示全功率状态(“Full Power”)[SWS_Pwm_00197]。
  • 值域 1..255:定义功耗逐步降低的分级功率模式(“power modes with decreasing power consumptions”)[SWS_Pwm_00197]。

关于使用上下文,由于该类型既映射活动状态也映射目标状态,因此它可能在请求节能模式时用作传入参数,并在状态查询时用作返回值 [SWS_Pwm_00197]。 问题 Q-f0423f8b958d7e91 (未决)在本规范摘录中,未包含针对该数据类型的具体 API 函数、错误处理(DET/DEM)以及并发性限制,因此予以省略 [SWS_Pwm_00197]。

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_Pwm
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Pwm@rel:R20-11#7a8ba67b
Content hash
7a8ba67b
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_PWMDriver.pdf#nameddest=SWS_Pwm_00095

初始化与状态

Pwm_DeInit 函数

Service for PWM De - Initialization.

void Pwm_DeInit (void);

Service returns the version information of this module.

void Pwm_GetVersionInfo (Std_VersionInfoType* versioninfo);
Pwm_Init 函数

Service for PWM initialization.

void Pwm_Init (const Pwm_ConfigType* ConfigPtr);

服务 · Set…

Service sets the duty cycle of the PWM channel.

void Pwm_SetDutyCycle (Pwm_ChannelType ChannelNumber, uint16 DutyCycle);

Service sets the PWM output to the configured Idle state.

void Pwm_SetOutputToIdle (Pwm_ChannelType ChannelNumber);

Service sets the period and the duty cycle of a PWM channel

void Pwm_SetPeriodAndDuty (Pwm_ChannelType ChannelNumber, Pwm_PeriodType Period, uint16 DutyCycle);

This API configures the Pwm module so that it enters the already prepared power st ate, chosen between a predefined set of configured ones.

Std_ReturnType Pwm_SetPowerState (Pwm_PowerStateRequestResultType* Result);

服务 · Get…

This API returns the current power state of the PWM HW unit. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

Std_ReturnType Pwm_GetCurrentPowerState (Pwm_PowerStateType* CurrentPowerState, Pwm_PowerStateRequestResultType* Result);

Service to read the internal state of the PWM out put signal.

Pwm_OutputStateType Pwm_GetOutputState (Pwm_ChannelType ChannelNumber);

This API returns the Target power state of the PWM HW unit.

Std_ReturnType Pwm_GetTargetPowerState (Pwm_PowerStateType* TargetPowerState, Pwm_PowerStateRequestResultType* Result);

服务 · 其他

The API shall be invoked by the PWM Driver when the requested power state preparation for mode <#Mode> is completed.

void IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> (void);

Service to disable the PWM signal edge notification.

void Pwm_DisableNotification (Pwm_ChannelType ChannelNumber);

Service to enable the PWM signal edge notification according to notification pa rameter.

void Pwm_EnableNotification (Pwm_ChannelType ChannelNumber, Pwm_EdgeNotificationType Notification);

This API is cyclically called and supervises the power state transitions, checking for the readiness of the module and issuing the callbacks Io Hw Ab_ Pwm_ Notify Ready For Power State (see Pwm Power State Ready Cb k Ref configuration parameter). AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

void Pwm_Main_PowerTransitionManager (void);

The Pwm module shall call the function Pwm_ Notification_<#Channel> accordingly to the last call of Pwm_ Enable Notification for channel <#Channel>.

void Pwm_Notification_<#Channel> (void);

This API starts the needed process to allow the PWM HW module to enter the requested power state. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

Std_ReturnType Pwm_PreparePowerState (Pwm_PowerStateType PowerState, Pwm_PowerStateRequestResultType* Result);

类型

Defines the class of a PWM channel

Nume ric identifier of a PWM channel.

This is the type of data structure containing the initialization data for the PWM driver.

Definition of the type of edge notification of a PWM channel.

Output state of a PWM channel.

Definition of the period of a PWM channel.

Result of the requests related to power state transitions.

Power state currently active or set as target power state.