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

簡介

        本文將詳細介紹如何使用 EB 工具配置 Flagchip FC7300 MCAL PWM 驅動 RGB,並重點強調了配置 pwm 模塊的過程以及對pwm 模塊的詳細解釋。本次示例演示將會使用 FTU1_CH1、FTU1_CH3、 FTU1_CH5 通道來驅動 RBG 燈點亮

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

軟體平台:EB tresos 28.1.0 、Flagchip_FC_IDE 4.0.7

MCAL:  0.4.0

AUTOSAR VERSION :  V4.6.0

 

 

       以下是 MCAL PACK中 一些文件的簡要說明:

 

 


一、 PWM 實例 EB 配置

1.1 導入DemoBoard 例程

       打開 Tresos Studio 左上角選擇 File→Import→Existing Projects into Workspace,選擇 FC7300 MCAL 包中的 DemoBoard/tools/DemoBoard_FC7300F8M_EB_Project 文件夾,如圖1.1-1.3所示步驟

                                              
  圖1.3 Tools/DemoBoard

       1.2 選擇需要用到的模塊

       由圖 1.4 可以看到,導入進來的例程包含多個模塊,但是本次只需要用到Common、EcuC、Mcu、Os、Port、Pwm,所以右擊工程,選擇 Module Configurations,進入圖 1.6 所示界面並進行篩選。

                                


1.3 配置 ECUC 模塊

        在 RGB 燈的MCAL中必須有ECUC模塊,在Module Configurations 中添加ECUC模塊,選擇默認配置即可。


                                                                                           圖 1.7  ECUC 模塊


1.4 配置OS 模塊

       在 RGB 燈的MCAL中必須有OS模塊,在Module Configurations 中添加OS模塊,選擇默認配置即可。


                                                                                            圖 1.8  OS 模塊


1.5 配置 MCU 模塊

MCU 模塊提供 MCU 初始化、復位、休眠、系統時鐘配置、外設時鐘配置等功能。

       我們需要配置FOSC 使能,先雙擊 Mcu 模塊,進入如圖 1.9 所示界面,選擇 McuClockSettingConfig,勾選 FOSC Enable。


                                                                                                      圖 1.9  Mcu 配置界面1



        查看原理圖如圖 1.10 所示,RGB1r 對應 PTC12、RGB1g 對應 PTB29、RGB1b 對應 PTB21。通過查找如圖 1.11 所示引腳復用看到可復用到 FTU1_CH5、FTU1_CH3、FTU1_CH1。


圖 1.10 原理圖



圖 1.11 引腳復用



雙擊圖 1.9 index 欄下的 0,選擇 PCC 外設時鐘配置,添加如圖 12  所示的 FTU 時鐘並使能。



圖 1.12 Mcu 配置界面2


1.6 配置 IO 模塊

        雙擊 port,進入到 port 配置模塊,如圖 1.13 所示。選擇 portconfig,現在配置需要用到的 PTB21、PTB29、PTC12。雙擊 port 前面的 index 欄下的 1,進入 portB 的配置界面。


圖 1.13 port配置界面


添加 PTB21、PTB29,名字命名為原理圖對應的 RGB 名,如 PTB21 為 RGB_1b。如圖 1.14 所示。


                                                                                                             圖 1.14 portpin配置界面

        雙擊 index 欄下的序號進入 PTB21 的配置界面。配置引腳模式為 FTU1_CH1,輸出模式,默認低電平。如圖 1.15 所示。同理,PTB29 和 PTC12 也是一樣的配置方法,引腳模式分別是 FTU1_CH3 和 FTU1_CH7,輸出模式,默認低電平。


圖 1.15 PTB21 配置界面


1.7 配置 PWM 模塊:

       在 Module Configurations 中添加 PWM 模塊,在 PWM 模塊中的  PwmFtuModule  下添加 FTU 外設如圖 1.16 所示。

 

                                                                                                  圖 1.16 PWM 配置界面

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


圖 1.17 Ftu Modules配置界面

        進入 PwmFtuModule_0->  PwmFtuChannels 的配置界面,添加三個 PWM_FTU_Channal ,將 Name 分別修改為 RGB1_1r、RGB1_1g、RGB1_1b, Ftu Hardware Channel  更改為與引腳定義對應的 FTU_CH5、FTU_CH3、FTU_CH1 通道、將通道設置為相互之間獨立。如圖 1.18 所示。



        進入 PWM->PwmChannelConfigSet的配置界面添加三個 PwmChannel、Name 分別修改為RGB1_RED、RGB1_BLUE、RGB1_GREEN。如圖 1.19 所示。

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

                              


二、實例代碼解析

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

圖 2.1 編譯並更新


按照如圖 2.1 所示標註依次點擊,驗證錯誤,無錯誤後並生成代碼。


2.2 main.c

可以看到如圖 2.2 所示的 Pwm 已經添加進來並進行初始化。



把 Bsp_Pwm_20ms_Task_Event 函數添加至任務時間片函數中。




2.3 Pwm_PBcfg.c

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




2.4 Bsp_Pwm.c 


在 demo 示例中修改 Bsp_Pwm_20ms_Task_Event 函數,如圖 2.6 所示

這串代碼的解釋是:

當前 CPU 是 Core 0,代碼將執行 PWM 操作。

        代碼將 PWM 通道 RGB1_RED、RGB1_GREEN、RGB1_BLUE 的占空比設置為變量 s_u32Rgb2DutyVal 的值。檢查變量 s_u8BreathDirection 的值。如果為 0,代碼將 RGB1 通道的占空比增加 s_u32Rgb1Step 的值。呼吸效果逐漸變亮。如果占空比超過最大占空比值(PWM_MAX_DUTY),則將 s_u32Rgb1DutyVal 設置為最大占空比值,並將 s_u8BreathDirection 設置為 1。

       如果 s_u8BreathDirection 為 1,代碼檢查當前占空比值(s_u32Rgb1DutyVal)是否大於 s_u32Rgb1Step。如果是,則將占空比減去 s_u32Rgb1Step。呼吸效果體現為逐漸變暗。如果占空比小於或等於 s_u32Rgb1Step,則將占空比設置為 0,並將 s_u8BreathDirection 設置為 0。

由此來設置三色為相同的亮度。可以看到 RGB 燈呈現白光的呼吸效果。


三、燒錄和調試

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

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

四、PWM 模塊詳解

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


4.1 General 配置


圖 4.1 General 配置

①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 PwmChannel


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



圖 4.3 PwmChannel General 配置

  • PwmChannelId:PWM 通道 Id 號
  • PWM Hardware IP:PWM 的硬體單元選擇
  • PwmFtuChannel:選擇一個 FTUx Channelx 配置
  • PwmMcuClockReferencePoint:PWM 的 Mcu 時鐘參考源
  • 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.4 PwmFtuModule


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



4.5 PwmFtuModule-> PwmFtuModule_0->Ftu Modules 配置界面

  • 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:死區時間計數分頻器
  • 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.6 PwmFtuModule-> PwmFtuModule_0->Ftu Fault 配置界面       

  • 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.3 PwmFtuModule-> PwmFtuModule_0->PwmFtuChannels 配置界面,每個 FTU 外設最多可配置 8 個 PWM 通道



圖 4.7 PwmFtuModule-> PwmFtuModule_0->PwmFtuChannels配置界面



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



圖 4.8 PwmFtuChannles-> General配置界面

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


4.4 PwmPowerStateConfig配置



圖 4.9 PwmPowerStateConfig配置


4.5 PublishedInformation PWM 模塊版本信息



圖 4.10 PublishedInformation PWM 模塊版本信息


4.6 PWM 模塊常用函數



1. Pwm_Init:初始化PWM 模塊

2. Pwm_DeInit:將 PWM模塊復位至默認狀態

3. Pwm_SetDutyCycler:設置 PWM 通道占空比

4. Pwm_SetPeriodAndDuty:設置 PWM 周期與通道占空比

5. Pwm_SetOutputToIdle:將PWM輸出設置為空閒狀態

6. Pwm_GetOutputState:獲取PWM通道輸出空閒狀態

7. Pwm_EnableNotification:使能 PWM 通道事件通知

8. Pwm_DisableNotification:失能PWM 通道事件通知


9. Pwm_GetVersionInfo: 獲取 PWM 模塊版本信息

10. Pwm_GetChannelState:獲取PWM通道占空比狀態

11. Pwm_EnableTriggerOut:使能PWM通道重載觸發輸出

12. Pwm_DisableTriggerOut:失能PWM通道重載觸發輸出

13. Pwm_MaskOutputs:強制停止 PWM 通道輸出

14. Pwm_UnMaskOutputs:解除強制停止 PWM 通道輸出



15. Pwm_SetPowerState: 進入預先準備好的電源狀態

16. Pwm_GetCurrentPowerState: 返回 PWM 硬體單元的當前電源狀態

17. Pwm_GetTargetPowerState: 返回 PWM 硬體單元的目標電源狀態

18. Pwm_PreparePowerState: 允許 PWM 硬體模塊進入請求的電源狀態


五、總結

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


六、參考文獻

(1)  AUTOSAR_SWS_PWMDriver.pdf

(2)  FC7300 Reference Manual V0.6.pdf

(3)  FC7300 DataSheet V0.4.pdf

 


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

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


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

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

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

評論