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

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論