Epwm模块用户手册
大约 9 分钟约 2698 字2025/12/26
Epwm模块用户手册
目录
1. 简介
本EPWM驱动模块提供了对增强型脉宽调制(EPWM)外设的抽象接口,旨在简化PWM信号的生成和控制。主要功能包括:
- 初始化与反初始化: 通过
HLI_Epwm_Init和HLI_Epwm_DeInit对一个或多个EPWM模块进行配置和资源释放。 - 输出模式: 支持独立输出和互补输出模式,以及边沿对齐和中心对齐方式。
- 周期与占空比控制: 允许在运行时通过
HLI_Epwm_SetPeriodAndDutyCycle和HLI_Epwm_SetDutyCycle等函数动态调整PWM的周期和占空比。 - 输出控制: 提供
HLI_Epwm_SetOutputEnabled和HLI_Epwm_ForceOutput函数,用于使能/禁止PWM输出,或将输出强制为高/低电平。 - 死区控制: 在互补模式下,可配置死区时间以防止桥臂直通。
- 故障保护: 支持通过外部触发(TZ1-TZ4)自动关断PWM输出,并可配置关断后的默认电平。
1.1 支持的设备
当前软件适用于以下芯片:
- KF32A158xxxSF
1.2 名词及缩写
| 缩写 | 解释 |
|---|---|
| EPWM | 增强型脉冲宽度调制 |
2. 文件结构
| 文件名称 | 描述 |
|---|---|
| kf32axxx_hli_epwm.c | 此文件包含Epwm驱动程序的通用功能 |
| kf32axxx_hli_epwm.h | 此头文件输出Epwm驱动程序的宏、类型定义和函数原型 |
| kf32axxx_hli_epwm_Lcfg.c | 此文件包含Epwm初始化配置信息 |
| kf32axxx_hli_epwm_Lcfg.h | 此文件包含Epwm声明初始化配置信息 |
| kf32axxx_hli_epwm_cfg.h | 此文件包含Epwm模块、通道定义 |
3. 数据结构
3.1 数据类型
3.1.1 宏定义
无。
3.1.2 枚举
EPWM模块编号 (HLI_Epwm_ModuleType)
枚举值 解释 HLI_EPWM_MODULE_11/12/13/16/31/32/33/36 EPWM编号对应EPWM11/12/13/16/31/32/33/36 EPWM波形生成模式 (HLI_Epwm_WaveGenModeType)
枚举值 解释 HLI_EPWM_CENTER_ALIGNED_INDEPENDENT_PWM 中心对齐独立PWM HLI_EPWM_EDGE_ALIGNED_INDEPENDENT_PWM 边沿对齐独立PWM HLI_EPWM_CENTER_ALIGNED_COMPLEMENTARY_EPWM 中心对齐互补EPWM HLI_EPWM_EDGE_ALIGNED_COMPLEMENTARY_EPWM 边沿对齐互补EPWM EPWM输出极性 (HLI_Epwm_PolarityType)
枚举值 解释 HLI_EPWM_ACTIVE_HIGH 正极性 HLI_EPWM_ACTIVE_LOW 负极性 EPWM强制输出类型 (HLI_Epwm_ForceOutputType)
枚举值 解释 HLI_EPWM_FORCE_LOW 强制输出低 HLI_EPWM_FORCE_HIGH 强制输出高 HLI_EPWM_FORCE_DISABLE 取消强制输出 EPWM自动关断源 (HLI_Epwm_ShutdownSourceType)
枚举值 解释 HLI_EPWM_SHUTDOWN_FORBIDDEN 不自动关断 HLI_EPWM_SHUTDOWN_SOURCE_TZ1 选择TZ1触发自动关断 HLI_EPWM_SHUTDOWN_SOURCE_TZ2 选择TZ2触发自动关断 HLI_EPWM_SHUTDOWN_SOURCE_TZ3 选择TZ3触发自动关断 HLI_EPWM_SHUTDOWN_SOURCE_TZ4 选择TZ4触发自动关断 EPWM自动关断电平 (HLI_Epwm_ShutdownLevelType)
枚举值 解释 HLI_EPWM_SHUTDOWN_LEVEL_LOW 输出低 HLI_EPWM_SHUTDOWN_LEVEL_HIGH 输出高 EPWM函数返回值 (HLI_Epwm_StatusType)
枚举值 解释 HLI_EPWM_OK 执行成功 HLI_EPWM_ERROR 执行失败 HLI_EPWM_DUTY_SETTING_FAILED 占空比设置失败 HLI_EPWM_DUTY_PERIOD_SETTING_FAILED 占空比和周期设置失败
3.1.3 类型定义
死区时间配置 (HLI_Epwm_DeadBandTimeType)
成员 解释 RiseDeadBand 上升沿死区时间,其占周期的百分比为 RiseDeadBand / DefaultPeriod * 100%。fallDeadBand 下降沿死区时间,其占周期的百分比为 fallDeadBand / DefaultPeriod * 100%。通道输出配置 (HLI_Epwm_OutputConfigType)
成员 解释 Enable 初始开关状态 DefaultDutyCycle 初始占空比 Polarity EPWM通道输出极性 EPWM关断设置 (HLI_Epwm_ShutDownType)
成员 解释 ShutDownSource 自动关断源选择。 RestartEnable 是否在关断后自动重启。在互补模式下,仅通道A的此参数有效。 ShutDownLevelA 软件禁止或硬件关断后,EPWM通道A的默认输出电平。 ShutDownLevelB 软件禁止或硬件关断后,EPWM通道B的默认输出电平。
3.2 配置项说明
EPWM模块与通道配置 (HLI_Epwm_ChannelConfigType)
成员 解释 取值范围 HwModule 硬件模块编号。 可选范围参考 HLI_Epwm_ModuleTypeWaveGenMode 波形生成模式。 可选范围参考 HLI_Epwm_WaveGenModeTypePrescaler 预分频值,写入寄存器的值为 Prescaler - 1。/ DefaultPeriod 默认周期。中心对齐模式下,周期寄存器值为 DefaultPeriod / 2;边沿对齐模式下为DefaultPeriod - 1。/ EpwmAConfig 通道A的输出配置。 HLI_Epwm_OutputConfigType类型的结构体EpwmBConfig 通道B的输出配置。 HLI_Epwm_OutputConfigType类型的结构体,互补模式下该配置无效DeadBand 死区时间配置。 HLI_Epwm_DeadBandTimeType类型的结构体,独立模式下该配置无效ShutDownConfig 关断功能配置,无论是否使能自动关断源,都必须设置关断电平。 HLI_Epwm_ShutDownType类型的结构体EPWM顶层配置 (HLI_Epwm_ConfigType)
成员 解释 取值范围 ChannelConfigPtr 指向通道配置数组的指针。 指向EPWM模块与通道配置的指针 ChannelNum 配置的通道数量。 配置数量,需要与传入的配置数量保持一致
4. 驱动函数
4.1 函数接口
4.1.1 HLI_Epwm_Init
| Name | Description |
|---|---|
| 函数名称 | HLI_Epwm_Init |
| 语法: | void HLI_Epwm_Init(const HLI_Epwm_ConfigType *ConfigPtr) |
| 同步/异步: | 同步 |
| 重入性 : | 不可重入 |
| 形参(输入): | ConfigPtr : EPWM多模块配置结构体指针。 |
| 返回值: | 无 |
| 描述: | 配置多个EPWM模块,每一路EPWM通道索引编号由HLI_Epwm_ChannelConfigType结构体类型自动编号。 |
| 注意事项: | 1. 该函数入参必须包含所有需要使用的模块和通道。 2. 建议先初始化,使用时再使能输出,不使用时关闭输出。 |
4.1.2 HLI_Epwm_DeInit
| Name | Description |
|---|---|
| 函数名称 | HLI_Epwm_DeInit |
| 语法: | void HLI_Epwm_DeInit() |
| 同步/异步: | 同步 |
| 重入性 : | 不可重入 |
| 返回值: | HLI_EPWM_OK执行成功 |
| 返回值: | HLI_EPWM_ERROR执行失败 |
| 描述: | 去初始化所有使用到的EPWM模块。 |
| 注意事项: | 无 |
4.1.3 HLI_Epwm_SetOutputEnabled
| Name | Description |
|---|---|
| 函数名称 | HLI_Epwm_SetOutputEnabled |
| 语法: | HLI_Epwm_StatusType HLI_Epwm_SetOutputEnabled(uint32_t ChannelIndex, bool StateA, bool StateB) |
| 同步/异步: | 同步 |
| 重入性 : | 通道索引编号不同时可重入 |
| 形参(输入): | ChannelIndex : 通道索引编号 |
| 形参(输入): | StateA: A通道使能状态 (true: 使能, false: 关闭) |
| 形参(输入): | StateB: B通道使能状态 (true: 使能, false: 关闭) |
| 返回值: | HLI_EPWM_OK执行成功 |
| 返回值: | HLI_EPWM_ERROR执行失败 |
| 描述: | 使能/禁止EPWMA/EPWMB输出。 |
| 注意事项: | 1. 通道索引编号根据HLI_Epwm_ChannelConfigType结构体类型自动编号。2. 互补模式下对通道B的设置无效。 |
4.1.4 HLI_Epwm_ForceOutput
| Name | Description |
|---|---|
| 函数名称 | HLI_Epwm_ForceOutput |
| 语法: | HLI_Epwm_StatusType HLI_Epwm_ForceOutput(uint32_t ChannelIndex, HLI_Epwm_ForceOutputType StateA, HLI_Epwm_ForceOutputType StateB) |
| 同步/异步: | 同步 |
| 重入性 : | 通道索引编号不同时可重入 |
| 形参(输入): | ChannelIndex : 通道索引编号 |
| 形参(输入): | StateA : A通道强制输出状态 |
| 形参(输入): | StateB : B通道强制输出状态 |
| 返回值: | HLI_EPWM_OK执行成功 |
| 返回值: | HLI_EPWM_ERROR执行失败 |
| 描述: | 设置EPWM的强制输出状态。 |
| 注意事项: | 1. 通道索引编号根据HLI_Epwm_ChannelConfigType结构体类型自动编号。2. 互补模式下对通道B的设置无效。 3. 运行过程中可调用函数改变PWM输出, 将PWM输出设置为高电平或低电平。 |
4.1.5 HLI_Epwm_SetPeriodAndDutyCycle
| Name | Description |
|---|---|
| 函数名称 | HLI_Epwm_SetPeriodAndDutyCycle |
| 语法: | HLI_Epwm_StatusType HLI_Epwm_SetPeriodAndDutyCycle(uint32_t ChannelIndex, uint32_t Period, uint32_t DutyCycleA, uint32_t DutyCycleB) |
| 同步/异步: | 同步 |
| 重入性 : | 通道索引编号不同时可重入 |
| 形参(输入): | ChannelIndex : 通道索引编号 |
| 形参(输入): | Period : 周期 |
| 形参(输入): | DutyCycleA : A通道占空比 |
| 形参(输入): | DutyCycleB : B通道占空比 |
| 返回值: | HLI_EPWM_OK执行成功 |
| 返回值: | HLI_EPWM_ERROR执行失败 |
| 返回值: | HLI_EPWM_DUTY_PERIOD_SETTING_FAILED周期和占空比设置失败 |
| 描述: | 设置EPWM的周期和占空比。 |
| 注意事项: | 1. 通道索引编号根据HLI_Epwm_ChannelConfigType结构体类型自动编号。2. 互补模式下对通道B的设置无效。 3. 用于配置A通道和B通道的占空比。 |
4.1.6 HLI_Epwm_SetDutyCycle
| Name | Description |
|---|---|
| 函数名称 | HLI_Epwm_SetDutyCycle |
| 语法: | HLI_Epwm_StatusType HLI_Epwm_SetDutyCycle(uint32_t ChannelIndex, uint32_t DutyCycleA, uint32_t DutyCycleB) |
| 同步/异步: | 同步 |
| 重入性 : | 通道索引编号不同时可重入 |
| 形参(输入): | ChannelIndex : 通道索引编号 |
| 形参(输入): | DutyCycleA : A通道占空比 |
| 形参(输入): | DutyCycleB : B通道占空比 |
| 返回值: | HLI_EPWM_OK执行成功 |
| 返回值: | HLI_EPWM_ERROR执行失败 |
| 返回值: | HLI_EPWM_DUTY_SETTING_FAILED占空比设置失败 |
| 描述: | 设置一路EPWM通道的占空比。 |
| 注意事项: | 1. 通道索引编号由HLI_Epwm_ChannelConfigType结构体类型自动编号。2. 互补模式下对通道B的设置无效。 |
4.1.7 HLI_Epwm_GetPeriod
| Name | Description |
|---|---|
| 函数名称 | HLI_Epwm_GetPeriod |
| 语法: | HLI_Epwm_StatusType HLI_Epwm_GetPeriod(uint32_t ChannelIndex, uint32_t *Period) |
| 同步/异步: | 同步 |
| 重入性 : | 可重入 |
| 形参(输入): | ChannelIndex : 通道索引编号 |
| 形参(输出): | Period : 周期寄存器值 |
| 返回值: | HLI_EPWM_OK执行成功 |
| 返回值: | HLI_EPWM_ERROR执行失败 |
| 描述: | 获取一路EPWM通道的周期。 |
| 注意事项: | 通道索引编号由HLI_Epwm_ChannelConfigType结构体类型自动编号。 |
4.1.8 HLI_Epwm_GetDutyCycle
| Name | Description |
|---|---|
| 函数名称 | HLI_Epwm_GetDutyCycle |
| 语法: | HLI_Epwm_StatusType HLI_Epwm_GetDutyCycle(uint32_t ChannelIndex, uint32_t *DutyCycleA, uint32_t *DutyCycleB); |
| 同步/异步: | 同步 |
| 重入性 : | 可重入 |
| 形参(输入): | ChannelIndex : 通道索引编号 |
| 形参(输出): | DutyCycleA : A通道占空比 |
| 形参(输出): | DutyCycleB : B通道占空比 |
| 返回值: | HLI_EPWM_OK执行成功 |
| 返回值: | HLI_EPWM_ERROR执行失败 |
| 描述: | 获取EPWM A/B通道占空比。 |
| 注意事项: | 1. 通道索引编号由HLI_Epwm_ChannelConfigType结构体类型自动编号。2. 互补模式下对通道B的设置无效。 |
4.2 中断回调
无。
5. 使用示例
注
示例中使用的参数仅用作示例演示,应用时以实际为准。
此示例展示了如何初始化一个EPWM模块,并动态修改其占空比。
6. 限制与假设
- EPWM通道成对使用。
- 注意区分独立模式和互补模式, 独立模式对通道B设置有效, 互补模式对通道B的所有设置都无效。
7. 变更记录
| 版本 | 时间 | 变更记录 |
|---|---|---|
| v1.0 | 2025.11.20 | 新增初版文档 |
