Hands-On 基於 Flagchip FC4150 MCAL-PWM 驅動 RGB

關鍵字 :FlagchipFC4150MCAL-PWM

簡介

        本文將詳細介紹如何使用 EB 工具配置 Flagchip FC4150 MCAL PWM 驅動 RGB,並重點強調了配置 pwm 模塊的過程以及對 pwm 模塊的詳細解釋。關於 mcu、port 、dio、icu、adc 模塊可參考之前發布的博文。本次示例演示將會使用 FTU0_CH3、FTU0_CH5、 FTU0_CH7 通道來驅動 RBG 燈點亮

硬體平台:旗芯微 FC4150 DEMO BOARD V2 開發板

軟體平台:EB tresos 28.1.0 、Flagchip_FC_IDE 4.04

MCAL: V1.1.0 & V1.1.1

一、MCAL 配置

        1.1 配置 MCU 模塊

        1.1.1 根據 demo board 電位器原理圖所示,我們需要在MCU模塊-> PCC下添加Port B 、E、FTU 0的外設並配置為時鐘使能。


▲ 圖 1.1.1


▲ 圖 1.1.2

        1.2 配置 PORT 模塊

        1.2.1進入Port B  的 PortPin 界面下,添加  PTB15引腳並命名為 RGB1_UL,配置 PTB15 為 FTU0_CH3 、輸出模式,默認電平為低。

           
▲ 圖 1.2.1

        1.2.2進入Port B  的 PortPin 界面下,添加  PTB17引腳並命名為 RGB1_VL,配置 PTB17 為 FTU0_CH5 、輸出模式,默認電平為低。

▲ 圖 1.2.2

        1.2.3 進入Port E  的 PortPin 界面下,添加  PTE7 引腳並命名為 RGB1_WL,配置 PTE7 為        FTU0_CH7 、輸出模式,默認電平為低。

               
▲ 圖 1.2.3

1.3配置 PWM 模塊

        1.3.1 在Module Configurations 中添加 PWM模塊,在 PWM模塊中的  PwmFtuModule  下添加 FTU 外設。 



▲ 圖 1.3.1 

        1.3.2 雙擊 Index 0 進入PwmFtuModule_0-> Ftu Modules 配置界面,選擇 Ftu 外設為 FTU_0,時鐘選擇為 CORE,參考源為 McuClockReferencePoint_Sys,選擇 PWM 計數方式為邊沿對齊模式、設置 PWM 頻率為 10 Khz。


▲ 圖 1.3.2 

       1.3.3 進入 PwmFtuModule_0->  PwmFtuChannels 的配置界面,添加三個 PWM_FTU_Channal ,將 Name 分別修改為 RGB1_UL、RGB1_VL、RGB1_WL, Ftu Hardware Channel  更改為與原理圖對應的 FTU_CH3、FTU_CH5、FTU_CH7 通道、將通道設置為相互之間獨立。



▲ 圖 1.3.3

        1.3.4 進入 PWM->PwmChannelConfigSet的配置界面添加三個 PwmChannel、Name 分別修改為RGB1_RED、RGB1_BLUE、RGB1_GREEN



▲ 圖 1.3.4

       1.3.4.1 雙擊 Index 0 進入RGB1_RED配置界面,選擇 PwmFtuChannel 為剛剛在 PwmFtuModule_0->  PwmFtuChannels 下配置的通道,選擇 PWM 極性為高,選擇 PWM 空閒時的電平為低。


▲ 圖 1.3.4.1

       1.3.4.2 RGB1_BLUE、RGB1_GREEN 重複 1.3.4.1 的操作即可。

二、示例代碼解析

2.1 將 EB 配置好的工程編譯並更新代碼至 FCIDE 中

2.2 Main 函數

將 Bsp_Pwm_Init 函數取消屏蔽,Bsp_Pwm_5ms_Task_Event 函數添加至任務時間片函數中



▲ 圖 2.2.1



▲ 圖 2.2.2

 2.3  Pwm_PBcfg.c

       我們可以看到 FTU0外設、FTU0_CHx 在EB 工具配置好的屬性

▲ 圖 2.3.1(FTU硬體模塊配置屬性)



▲ 圖 2.3.2(FTU通道配置屬性)

2.4 Bsp_Pwm.c  

在demo示例中修改 Bsp_Pwm_5ms_Task_Event函數,如圖3.4所示


▲ 圖 2.4

三、燒錄 & 調試

3.1 將工程編譯並燒錄到開發板

        觀察 RGB 燈,可以看到 RBG 呈呼吸狀態被點亮


▲ 圖 3.1

四、MCAL PWM 模塊詳解

FC4150 PWM 模塊提供獨立/互補/同步通道輸出,邊沿/中心對齊模式,產生可變占空比與周期脈衝等功能

4.1 General 配置


▲ 圖 4.1

       ①PwmConfigurationOfOptApiServices

  • PwmDeInitApi:復位 PWM 配置
  • PwmGetOutputState :獲取 PWM 輸出狀態
  • PwmSetDutyCycle :設置 PWM 占空比
  • PwmSetOutputToIdle : 將 PWM 輸出設置為空閒狀態
  • PwmSetPeriodAndDuty :設置 PWM 占空比和 PWM 周期使能,只有在 PWM-> PwmChannelConfigSet 下選用了 PWM_VARIABLE_PERIOD 才可以使用
  • PwmVersionInfoApi:讀 PWM 模塊版本信息
  • PwmGetChannelStateApi:獲取 PWM 通道狀態
  • PwmEnableTriggerOut :使能 PWM 觸發輸出

       ②PwmGeneral

  • PwmDevErrorDetect: 是否開啟錯誤檢測
  • PwmDutycycleUpdatedEndperiod: 選擇更新 PWM 占空比的方式,立即更新/周期結束後更新
  • PwmLowPowerStatesSupport: 啟用PWM低功耗模式,電源狀態管理相關的函數有(PWM_SetPowerState、 PWM_GetCurrentPowerState、 PWM_GetTargetPowerState、 PWM_PreparePowerState,、PWM_Main_PowerTransitionManager)
  • PwmPowerStateAsynchTransitionMode:不需要配置
  • Pwm Enable User Mode Support:不需要配置
  • PwmIndex:指定此模塊實例的編號。如果只有一個實例,則其 Id 應為 0
  • Fault Support Enable:啟用故障功能,用於關停 PWM 輸出
  • EnableMaskingOperations :啟用兩個功能函數,分別是強制停止 PWM 通道輸出、解除強制停止 PWM 通道輸出

4.2 PwmChannel配置

添加在 PwmFtuModule 配置好的通道



▲ 圖 4.2

       4.2.1 雙擊Index 進入PwmChannel-> General配置



▲ 圖 4.2.1

  • PwmChannelId:PWM 通道 Id 號
  • PWM Hardware IP:PWM 的硬體單元選擇
  • PwmFtuChannel :選擇一個 FTUx Channelx 配置
  • PwmChannelClass:PWM 通道類別,可選固定周期,可變周期
  • PwmPolarity :PWM 極性
  • PwmIdleState :PWM 空閒狀態電平
  • Default Period(HZ):默認 PWM 輸出周期 (unit:Hz)
  • Default Period Value :默認 PWM 輸出周期 (unit:s)
  • PwmDutycycleDefault :默認 PWM 占空比
  • PwmNotification:PWM 中斷回調函數

4.3 PwmFtuModule配置

       最多可添加 FTU 0-7 ,8個FTU硬體外設



▲ 圖 4.3

       4.3.1 雙擊 Index0 進入PwmFtuModule-> PwmFtuModule_0->Ftu Modules配置界面


▲ 圖 4.3.1

  • Ftu Hardware Module:選擇Ftu 硬體外設
  • Ftu Module Prescaler:Ftu 預分頻器
  • Ftu Module clock selection:選擇 Ftu 時鐘輸入源
  • Ftu Module clock Frequency:選擇 Ftu 時鐘頻率
  • Ftu Module's Channels Alignment:選擇計數模式
  • Reload Frequency: 重新加載次數,例:當選擇 LDFQ_EACH1 每次 cnt 計數等於 mod 時進行一次重新加載
  • Default Period:配置 PWM 周期
  • Default Period Value:根據 Default Period 點擊計算器標識可自動計算出
  • Deadtime Counter:死區時間配置
  • DeadTime Counter Prescaler:死區時間計數分頻器

         Dead Time config note: 死區的值是以 Default Period Value 去進行設置的,例如圖 4.3.1,這邊是直接走的 Core CLK,150M,配置頻率為 10k,那一個周期就是 100us,period value 就是 150M/10K=15000。如果這裡要做一個 1us 的 deadtime,那麼 counter 就填 150。counter 到 150 就是 1/10K/(15000/150)=1us。死區的分頻是為了讓 dead value 能夠設大點。需要注意的是死區的 value 是不經過上面的 Ftu Module Prescaler 分頻的。也就是說,如果 Module Prescaler 選擇 2 分頻,那下面 Period Value 就會變成 7500,但還得按照15000 去算 dead value,它只與 Core CLK 有關

  • Pwm Background Debug Mode configuration:PWM 在 Debug 時的行為,可選計數停止設立標誌位、計數停止輸出進入安全模式、計數停止輸出凍結、繼續進行 PWM 輸出
  • Pwm Fault Funtionality and Clear Mode:故障控制模式,在使能 Fault Support Enable 可以進行配置,可選所有通道禁用、啟用偶數通道故障控制,手動故障清除、啟用所有通道故障控制,手動故障清除、啟用所有通道故障控制,自動清楚故障。使用手動清楚故障時,需要開啟中斷。
  • Enable External Trigger Channel x:使能外部信號進行 PWM Channel 輸出
  • Enable Reload Trigger:使能重新裝載時的觸發信號

4.3.2 PwmFtuModule-> PwmFtuModule_0->Ftu Fault 配置界面


▲ 圖 4.3.2

  • Pwm Fault Filter Prescaler: Ftu 故障濾波分頻器
  • Pwm Fault Filter Value : Ftu 故障濾波值
  • Channel Output on Fault: 故障通道輸出、
  • Fault notification enable: 故障通知使能                 
  • Fault Input Channel: 故障輸入通道選擇
  • Configure polarity for Fault Input Pin:配置故障輸入引腳極性
  • Enable Fault Input Glitch Filter: 啟動故障輸入濾波器
  • PwmFaultNotification:PWM 故障回調函數

       4.3.2 PwmFtuModule-> PwmFtuModule_0->PwmFtuChannels配置界面,每個 FTU 外設最多可配置 8 個 PWM 通道


▲ 圖 4.3.2

       4.3.3 雙擊 Index0 ,進入 PwmFtuChannles-> General 配置界面


▲ 圖 4.3.3

  • Ftu Hardware Channel    : FTU 硬體通道選擇
  • Edge configuration setting for current channel:當前通道的模式,可配置為獨立、同步、互補通道
  • Enable Deadtime on combined channels: 使能互補通道死區時間   

4.4 PwmPowerStateConfig配置


▲ 圖 4.4

4.5 PublishedInformation PWM 模塊版本信息

4.6 PWM 模塊常用函數

  • Pwm_Init:初始化 PWM 模塊
  • Pwm_DeInit:將 PWM 模塊復位至默認狀態
  • Pwm_SetDutyCycler:設置 PWM 通道占空比
  • Pwm_SetPeriodAndDuty:設置 PWM 周期與通道占空比
  • Pwm_SetOutputToIdle:將 PWM 輸出設置為空閒狀態
  • Pwm_GetOutputState:獲取 PWM 通道輸出空閒狀態
  • Pwm_EnableNotification:使能  PWM 通道事件通知
  • Pwm_DisableNotification:失能 PWM 通道事件通知
  • Pwm_GetVersionInfo: 獲取 PWM 模塊版本信息
  • Pwm_GetChannelState:獲取 PWM 通道占空比狀態
  • Pwm_EnableTriggerOut:使能 PWM 通道重載觸發輸出
  • Pwm_DisableTriggerOut:失能 PWM 通道重載觸發輸出
  • Pwm_MaskOutputs:強制停止 PWM 通道輸出
  • Pwm_UnMaskOutputs:解除強制停止 PWM 通道輸出

五、總結

        本文以 PWM 驅動 RGB 為示例,詳細介紹了如何配置和使用 PWM(脈寬調製)模塊,通過本文的講解,讀者可以了解到如何正確配置 PWM 模塊,以實現脈寬調製的功能。

六、參考文獻

(1)  AUTOSAR_SWS_PWMDriver.pdf

(2)  FC4150 Reference Manual V3.0.pdf

 

 歡迎在博文下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com   
作者:Memory


更多資訊,請掃碼關注我們!


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

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

評論