AUTOSAR图解==>AUTOSAR_SWS_PWMDriver

AUTOSAR PWM驱动详解

基于AUTOSAR标准的PWM驱动模块分析与图解

目录


1. 概述

AUTOSAR PWM驱动(Pulse Width Modulation Driver)是AUTOSAR基础软件中微控制器抽象层(MCAL)的一个重要组件。PWM驱动提供微控制器内部PWM阶段(脉冲宽度调制)的初始化和控制功能。PWM模块产生具有可变脉冲宽度的信号,允许选择占空比和信号周期时间。

PWM驱动的主要功能包括:

  • 初始化和配置PWM通道
  • 设置和调整PWM信号的周期和占空比
  • 控制PWM输出状态
  • 处理PWM边缘通知

PWM信号的描述如下图所示:

在这里插入图片描述


2. PWM驱动架构

2.1 模块层次结构

AUTOSAR软件架构采用分层设计方法,PWM驱动位于微控制器抽象层(MCAL)中。下图展示了PWM驱动在AUTOSAR架构中的位置以及与其他模块的关系:

此架构图展示了AUTOSAR PWM驱动的分层结构,包括:

  1. 应用层:包含使用PWM功能的应用软件组件
  2. 运行时环境(RTE):连接应用软件与基础软件的中间层
  3. ECU抽象层:提供标准化的PWM接口
  4. 微控制器抽象层(MCAL)
    • PWM驱动:实现PWM功能的核心模块,包含初始化、运行时控制、回调处理和通知功能
    • DET(默认错误跟踪器):用于报告和记录开发错误
    • MCU驱动:负责系统时钟和PLL设置
    • PORT驱动:负责端口引脚功能配置
  5. 微控制器硬件:包括PWM硬件、MCU硬件和端口硬件

2.2 依赖关系

PWM驱动与其他模块的依赖关系如下:

  • MCU驱动:PWM驱动依赖于MCU驱动来设置预分频器、系统时钟和PLL。PWM的时钟受系统时钟变化的影响(例如PLL开关)。
  • PORT驱动:用于设置端口引脚功能,确保PWM信号能够正确输出。
  • DET(默认错误跟踪器):在开发模式下用于错误报告和追踪。

根据源文档所述:

PWM驱动依赖于系统时钟。因此,系统时钟的变化(例如PLL开启或关闭)也会影响PWM硬件的时钟设置。


3. PWM驱动状态管理

3.1 状态转换

PWM驱动模块在其生命周期中会经历不同的状态。下图展示了PWM驱动的状态转换图:

在这里插入图片描述

3.2 状态说明

PWM驱动存在以下主要状态:

  1. 未初始化状态

    • PWM模块处于复位状态
    • 所有硬件通道未配置
    • 不能使用PWM模块的其他API
    • 通过调用Pwm_Init()函数可以转换到初始化完成状态
  2. 初始化完成状态:包含两个子状态:

    • 正常工作状态
      • PWM信号按照配置产生输出
      • 可以动态调整占空比和周期
      • 可以处理边沿通知
    • 空闲状态
      • PWM通道被设置为空闲状态
      • 输出信号为预配置的空闲电平
      • 可以通过调用Pwm_SetDutyCycle()Pwm_SetPeriodAndDuty()恢复运行

状态转换流程:

  • 从未初始化到初始化完成:通过Pwm_Init()函数实现
  • 从初始化完成回到未初始化:通过Pwm_DeInit()函数实现
  • 从正常工作到空闲状态:通过Pwm_SetOutputToIdle()函数实现
  • 从空闲回到正常工作状态:通过Pwm_SetDutyCycle()Pwm_SetPeriodAndDuty()函数实现

4. PWM驱动配置结构

4.1 数据类型定义

PWM驱动模块使用多种数据类型来定义其配置和操作参数。下图展示了PWM驱动的主要配置数据类型:

在这里插入图片描述

4.2 配置参数

PWM驱动定义了以下关键数据类型和配置参数:

  1. Pwm_ConfigType:包含PWM驱动初始化数据的结构体类型,其具体内容取决于硬件实现。

  2. 通道相关类型

    • Pwm_ChannelType:PWM通道的数值标识符(8至32位)
    • Pwm_ChannelClassType:定义PWM通道的类别
      • PWM_VARIABLE_PERIOD:可变周期通道,周期和占空比都可以变更
      • PWM_FIXED_PERIOD:固定周期通道,只有占空比可以变更
      • PWM_FIXED_PERIOD_SHIFTED:固定移相周期通道
    • Pwm_OutputStateType:PWM输出状态
      • PWM_HIGH:PWM通道处于高电平状态
      • PWM_LOW:PWM通道处于低电平状态
    • Pwm_EdgeNotificationType:PWM边沿通知类型
      • PWM_RISING_EDGE:上升沿通知
      • PWM_FALLING_EDGE:下降沿通知
      • PWM_BOTH_EDGES:上升沿和下降沿通知
    • Pwm_PeriodType:定义PWM信号的周期(8至32位)
  3. 电源状态相关类型

    • Pwm_PowerStateType:当前激活或设置为目标的电源状态
      • PWM_FULL_POWER:完全功率模式
      • 1至255:功耗递减的电源模式
    • Pwm_PowerStateRequestResultType:与电源状态转换相关的请求结果
  4. 通道配置参数

    • ChannelId:通道标识符
    • ChannelClass:通道类别(变量周期、固定周期等)
    • DefaultPeriod:默认周期值
    • DefaultDutyCycle:默认占空比值
    • Polarity:极性(高或低)
    • IdleState:空闲状态(高或低)
    • PhaseShift:通道相移

占空比缩放方案

  • 0x0000表示0%
  • 0x8000表示100%
  • 绝对占空比计算公式:AbsoluteDutyCycle = ((uint32)AbsolutePeriodTime * RelativeDutyCycle) >> 15

5. PWM驱动操作流程

5.1 初始化流程

下图展示了PWM驱动的初始化和使用流程的序列图:

在这里插入图片描述

初始化阶段的主要步骤:

  1. 应用软件通过ECU抽象层请求初始化PWM驱动
  2. 调用Pwm_Init(ConfigPtr)函数,传入配置指针
  3. 检查配置指针是否有效:
    • 若为NULL,报告错误:Det_ReportError(PWM_MODULE_ID, 0, PWM_INIT_API_ID, PWM_E_PARAM_POINTER)
    • 若有效,保存配置并继续初始化
  4. 初始化所有PWM通道并配置相应的硬件寄存器
  5. 设置初始化完成标志
  6. 返回初始化结果给应用

5.2 运行时控制

PWM驱动提供以下运行时控制API:

  1. Pwm_SetDutyCycle:设置PWM通道的占空比

    void Pwm_SetDutyCycle(Pwm_ChannelType ChannelNumber, uint16 DutyCycle)
    
  2. Pwm_SetPeriodAndDuty:设置PWM通道的周期和占空比

    void Pwm_SetPeriodAndDuty(Pwm_ChannelType ChannelNumber, Pwm_PeriodType Period, uint16 DutyCycle)
    
  3. Pwm_SetOutputToIdle:将PWM输出设置为配置的空闲状态

    void Pwm_SetOutputToIdle(Pwm_ChannelType ChannelNumber)
    
  4. Pwm_GetOutputState:读取PWM通道的内部状态

    Pwm_OutputStateType Pwm_GetOutputState(Pwm_ChannelType ChannelNumber)
    

运行时操作流程包括:

  • 检查模块是否已初始化,未初始化则报错
  • 验证通道号是否有效,无效则报错
  • 执行相应的操作(设置占空比、周期等)
  • 更新硬件寄存器以实现所需功能

5.3 通知处理

PWM驱动支持边缘通知机制,当PWM信号发生边缘变化时会触发通知回调:

  1. 上升沿通知:当PWM信号从低到高变化时触发

    void Pwm_RisingEdgeNotification(Pwm_ChannelType ChannelNumber)
    
  2. 下降沿通知:当PWM信号从高到低变化时触发

    void Pwm_FallingEdgeNotification(Pwm_ChannelType ChannelNumber)
    

通知处理流程:

  • PWM硬件触发中断
  • PWM驱动识别中断类型(上升沿或下降沿)
  • 调用相应的通知回调函数
  • 应用软件处理通知

6. 总结

AUTOSAR PWM驱动是一个位于微控制器抽象层的标准化模块,提供对微控制器内部PWM功能的访问和控制。通过遵循AUTOSAR标准,PWM驱动实现了以下目标:

  1. 标准化接口:提供统一的API接口,使上层软件可以独立于硬件实现
  2. 模块化设计:作为MCAL层的一部分,与其他模块如MCU驱动和PORT驱动协同工作
  3. 可配置性:支持多种配置选项,适应不同的应用需求
  4. 状态管理:实现完整的状态管理机制,确保模块的正确使用
  5. 错误处理:提供全面的错误检测和报告机制

PWM驱动的主要特点包括:

  • 支持多种通道类型(可变周期、固定周期、固定移相周期)
  • 提供精确的占空比控制,使用特殊的缩放方案
  • 支持边缘通知机制,便于应用软件响应PWM信号变化
  • 实现低功耗管理功能,支持多种电源状态

通过本文档的分析和图解,我们深入了解了AUTOSAR PWM驱动的架构、配置、状态管理和操作流程,为开发和使用AUTOSAR标准PWM功能提供了全面的指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KaiGer666

慧眼~施主!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值