概述
本次測試用的是RA生態工作室提供的R7FA2E1A72DFL demo板,控制定時器輸出互補的帶死區PWM,并通過中斷觸發一對IO口的電平切換。
問題
為什么使用GPT輸出帶死區的互補PWM,進入比較匹配中斷后會有一小段延時才開始執行callback。
分析
觸發中斷后沒有馬上執行邏輯操作,在底層耗時太長。
操作
使用e2 studio配置工程分析現象
1、GPT模塊的設置
時鐘框圖如下,GPT0是32位定時器,GPT4、GPT5、GPT6、GPT7、GPT8和GPT9是16位定時器。
圖1 GPT框圖
2、配置工程時需要注意對應通道是0,4,5,6,7,8,9,沒有1,2,3。
配置過程:
timer7,P302->GTIOC7A,P301->GTIOC7B,20kHz,duty=50%,打開Capture A Interrupt(compare match A),輸出互補同步三角波pwm,死區設1us。
圖2 GPT配置
3、配置IO口在callback進行翻轉
圖3 在timer7_callback觸發IO翻轉
現象如下:
A:死區時間AB設定為1us,1,2通道為GTIOC7A(P302)和GTIOC7B (P301)
B:觸發比較匹配中斷后,翻轉3(P103)通道和4(P104)通道的電平
從觸發中斷到完成3,4通道電平翻轉的時間AC為3.3us。
圖4 定時器中斷觸發IO翻轉時間
分析——使用GPT輸出帶死區的互補PWM,進入比較匹配中斷后會有一小段時間的延時才開始執行電平翻轉:
a:通過操作寄存器完成翻轉的時間為350ns,因此排除操作IO口占用時間的因素
b:在callback中完成電平翻轉需要3.3us
4、為了縮短時間,把IO翻轉改到gpt_capture_a_isr中執行,不在r_gpt_call_callback中執行IO翻轉,
圖5 gpt_capture_a_isr
圖6 觸發中斷到完成IO翻轉時間為AC:1.22us
結論
因為執行r_gpt_call_callback前后還需要執行一段代碼,執行底層耗時過長,因此把callback改為NULL,然后在ISR底層中執行R_PORT1->PCNTR3_b.POSR,是目前測試時間最短的操作了。
來源:瑞薩MCU小百科
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理
審核編輯 黃宇
-
PWM
+關注
關注
116文章
5519瀏覽量
219400 -
定時器
+關注
關注
23文章
3298瀏覽量
118932
發布評論請先 登錄
STM32CubeIDE下配置STM32F103輸出帶死區的互補PWM波

高級定時器如何實現PWM互補輸出,帶死區控制,帶剎車功能
普通定時器輸出互補PWM帶死區

評論