SemiDrive E3 MCAL 开发系列(5) – Pwm 模块的使用

一、  概述

本文将会介绍 SemiDrive E3 MCAL Pwm 模块的简介以及基本配置,其中还会涉及到 Xtrg 模块的配置。此外会结合实际操作的介绍,帮助新手快速了解并掌握这个模块的使用,文中的 MCAL 是基于 PTG3.0 的版本,开发板是官方的 E3640 网关板。

二、  Pwm 模块简介

E3 的 Pwm 模块的底层硬件依赖于 Etimer 和 EPwm,E3 系列芯片最多有 4 个 EPwm 和 4 个 Etimer,其中每个 Epwm 和 Etimer 都有 4 个通道(通道 A/B/C/D),每个通道还有 2 个子通道(例如:通道 A0/A1),因此 E3 最多支持 64 通道的 PWM 输出。当底层硬件为 Epwm 时,每个通道有两个周期可以选择,对应的子通道周期一致,当底层硬件为 Etimer 时,每个通道的周期都可以独立配置,对应的子通道的周期一致。

三、  Pwm 模块的主要配置

要使用 Pwm 模块,首先需要在 Mcu 模块中使能 EPWM、ETIMER 等底层硬件。具体操作如下图所示,在 Mcu 模块的 McuHwlpConfig 选项中勾选上需要使能的模块即可。

图 3.1 使能底层硬件
 

接着对 Pwm 模块进行配置,首先需要添加 PwmController,然后对每个 PwmController 进行配置。

图 3.2 添加 PwmController
 

PwmController 的配置包括以下选项,如下图所示。

图 3.3 PwmController 的配置选项 1

图 3.4 PwmController 的配置选项 2


关于配置项的说明如下:

  • PwmHwModule:该配置项用于选择 PwmController 所使用的底层硬件。
  • PwmNotification:中断回调函数。
  • PwmModuleFrequency:Pwm 模块的主频,该时钟固定为 250MHz 和 7MHz(E3206/E3106/E3205/E3104 系列)。
  • PwmHwModulePrescaler,Pwm 频率的预分频值,例如该值为 0 时,Pwm 模块的实际频率为 250 M/(0+1) = 250MHz。
  • EIDEnable:配置是否使能 Pwm 触发 ADC 采样。
  • EIDValue:CMP Event ID 的值。
  • PwmPeriodDefault:Pwm 通道的周期,单位为 ns。
  • PwmChannelClass:该配置决定该计数器产生的 Pwm 波是否可以改变周期和占空比,当配置为 PWM_FIXED_PERIOD 时,使用该计数器产生的 Pwm 波不可改变周期,占空比可变;当配置为 PWM_VARIABLE_PERIOD 时,使用该计数器产生的 Pwm 波周期和占空比可变;配置为 PWM_FIXED_PERIOD_SHIFTED 则无效,该配置未实现。

需要注意的是,每个计数器都可以配置 PwmPeriodDefault 和 PwmChannelClass,总共有以下计数器:CNT_G0/1,LCNT_A/B/C/D,其中当底层硬件选择 EPWM 时,其比较通道的计数器只能选择 CNT_G0/1,当底层硬件选择为 ETIMER 时,其比较通道计数器只能选择 LCNT。

配置完 PwmController 后,接着需要配置 Pwm 的比较通道,如下图所示。

图 3.5 比较通道的配置
 

关于比较通道的配置项,说明如下:

  • PwmCmpChannelId:Pwm 比较通道的 Id,ID 为 0 对应通道 A,ID 为 1 对应通道 B,以此类推。
  • PwmSubCmpChannel_1_EN:该选项决定是否使能子通道 1,默认只使用子通道 0。
  • CntSel:该配置用于选择使用哪个计数器,当底层硬件为 EPWM 时,选择 CNT_G0/1,当底层硬件为 ETIMER 时,选择使用 LCNT 作为计数器。
  • DmaEnable:配置是否支持通过 DMA 搬运 Cmp 值。
  • FIFOWaterMarkLevel:当 DmaEnable 使能时,配置 FIFO 水线。
  • DmaTotalTxNum:当 DmaEnable 使能时,配置 Dma 搬运的总 Ward 数。
  • DutyCycleDefault:Pwm 通道占空比,默认值为 0x4000,对应占空比 50%。
  • Polaity:PWM 通道极性,选择 PWM_HIGH 或 PWM_LOW。
  • IdleState:PWM 通道空闲时的状态,选择 PWM_HIGH 或 PWM_LOW。

配置完了以后进行 Pwm 通道的配置,将通道跟之前配置的比较通道进行绑定。

图 3.6 Pwm 通道配置

配置完 Pwm 模块后,我们需要对 Xtrg 模块进行配置,将 PWM 信号路由到 IO 中。需要注意的是需要通过 Xtrg 路由的引脚,其 Port 需要进行对应的配置。

图 3.7 Xtrg 模块配置
 

图 3.8 Port配置

四、  实际操作

完成了 EB 相关模块的配置后,我们便可以进行验证了,测试代码如下所示。代码中主要进行了 Xtrg 以及 PWM 的初始化,完成初始化后便可以输出对应的 PWM 信号了。

图 4.1 测试代码
 

对工程进行编译,在线调试运行,串口中输入测试命令“runcase 700”,如下图所示。

图 4.2 输入测试命令
 

接着使用逻辑分析仪抓取 IO 的波形,如下图所示,可以看出,输出的 PWM 波形的频率和占空比跟我们的配置是一样的。
 

图 4.3 PWM 波形

五、  使用注意事项

配置 Pwm 模块时,需要注意以下事项:

  • Pwm 模块的主频是固定的,分配系数可以进行设置,范围为 0~0xffff。
  • 目前不支持 LowPower 的相关 API。
  • 调用 Pwm_SetPeriodAndDuty 接口时,只会生效传参的通道的周期和占空比,如果其他通道使用了传参通道的计数器,则其他通道会使用新的周期值和旧的占空比,如果其他通道需要更新周期和占空比,也需要调用 Pwm_SetPeriodAndDuty 这个接口。
  • 调用 Pwm_SetOutputToIdle 接口时会在下个周期生效,而不是立即生效。
  • 当 etimer 用于 PWM 输出时,其未使用到的硬件通道不支持用于 SENT 消息解析和 ICU 捕获。
  • 目前仅支持在初始化时配置好 DMA Buffer 的数据,不支持 DMA PINGPONG 模式。

六、  参考资料

1.《SemiDrive_E3_MCAL_User_Guide_Rev03.00.pdf》,2023.08

点击阅读原文,即可获取更多精彩系列内容~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值