一、 測試環境
硬體:SemiDrive G9X Spider
軟體:PTG5.0 Linux + FreeRTOS
圖(1)
二、 配置與 Demo
1.測試原理:
G9X 有 8 個 PWM 模塊,其中,PWM1 和 PWM2 屬於 Safety Domain,PWM3 – PWM8 屬於 AP
Domain,每個 PWM 有 4 個輸出 Channel,本次測試採用 PWM3 Channel-1 作為測試通道。查找資料可知,GPIO-C9 的 mux6 為 PWM3 CH1 復用功能,如圖(2)。
圖(2)
2.資源分配
如上節所述,PWM3 屬於 AP Domain 資源,因此在 safety domain 使用的時候,需要做資源調整,修改 buildsystem/rtos/lk_boot/chipcfg/generate/g9x/projects/default/safety路徑下的 domain_res.h,增加需要測試的 PWM Unit,並在 domain_res_cnt.h 中修改 PWM 實際在 safety domain 使用的 PWM Unit個數。domain_res.h 的修改參考圖(3),這裡增加了PWM3,PWM6 兩個 Unit。
圖(3)
3.配置
Pinmux 的配置首先打開 SDConfigTool,選擇 Chip G9X,然後 import binary,選擇 SDK 中buildsystem/binary_G9X_Ref_Linux_1G_2133/system_config.img,修改 pinmux 後,Savebinary,將新生成的 system_config.img copy 到原有路徑,重新打包生成 ospi.pac。操作步驟圖(4)。
圖(4)
PWM 的測試代碼可以從以下鏈接獲取。
鏈接:https://pan.baidu.com/s/18B1NXPuDHwfA17HT6aWv1A 提取碼:u9z4
獲取代碼解壓後, copy 到工程的 buildsystem/rtos/freertos_safetyos/application/test 路徑,並修改buildsystem/rtos/freertos_safetyos/project/safety-g9x-ref.mk,按照圖(5)增加測試代碼的編譯配置,並重新編譯Safety 鏡像並打包。
圖(5)
圖(6)是測試 demo 的配置部分代碼片段,具體配置含義解釋如下。
hal_cfg.freq = 20000; // pwm 輸出頻率
hal_cfg.grp_num = HAL_PWM_CHN_A_B_WORK; //輸出通道配置,ABCD 對應 channel 0123
hal_cfg.single_mode = HAL_PWM_CONTINUE_CMP;//連續模式,PWM 連續輸出,軟體控制停止
hal_cfg.align_mode = HAL_PWM_EDGE_ALIGN_MODE;//比較模式,單/雙 兩種,詳情見 TRM 文檔
hal_cfg.cmp_cfg[HAL_PWM_CHN_B].phase = HAL_PWM_PHASE_POLARITY_POS;//初始相位
hal_cfg.cmp_cfg[HAL_PWM_CHN_B].duty = PWM_DUTY;//占空比
圖(6)
三、測試操作
1.完成以上操作後,編譯工程,然後用新生成的 safe.bin,system_config.img替換 SDFactoryTool 裡面 safety 域的 bin 文件,見圖(7)。或者重新打包 ospi.pac
圖(7)
2.撥碼開關設置為 0000,啟動開發板。命令行執行 pwm_task,輸出 log 顯示 pwm 模塊寄存器信息,占空比,周期等,見圖(8),結合相關文檔可以用於調試。
圖(8)
3.最後使用邏輯分析儀捕捉 GPIO_C9 引腳的輸出,如圖(9)顯示輸出周期為 50us,即頻率為20000 的 PWM 方波。
圖(9)
如對此有更多需求,敬請聯繫世平集團 ATU 部門, atu.cn@wpi-group.com
四、 參考文獻:
- SD_G9_SDK_Reference_Manual_Rev1.4.pdf
- SD_G9H_Quick_Start_Rev1.01.pdf
- G9_Processor_TRM_Rev01.00.pdf
歡迎在博文下方留言評論,我們會及時回復您的問題。如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com
作者:Sim Guo / 郭夕峰
更多資訊,請掃碼關注我們!:
評論