1 PWM簡介
脈沖寬度調制(PWM) ,是英文“Pulse Width Modulation” 的縮寫,簡稱脈寬調制,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術。簡單一點,就是對脈沖寬度的控制。
在瑞薩RA6E2系列 MCU 中有兩種定時器,一種是通用 PWM 定時器 GPT,另外一種是異步通用定時器 AGT,在這里我們使用通用定時器GPT進行PWM輸出。

[]()[]()Figure ? GPT 外設模塊的結構框圖
RA6E2系列共有共 6 個GPT定時器(即6個通道)。GPT 的計數器支持遞增計數,遞減計數和遞增/遞減計數。詳細的通道名稱如下表所示。

[]()[]()Figure ? GPT各個通道詳情
PWM 輸出就是對外輸出脈寬(即占空比)可調的方波信號, 信號頻率由周期設定寄存器 GTPR 的值決定,占空比由比較寄存器 GTCCR 的值決定。
2 RT-Thread 的PWM簡介
PWM(Pulse Width Modulation , 脈沖寬度調制) 是一種對模擬信號電平進行數字編碼的方法,通過不同頻率的脈沖使用方波的占空比用來對一個具體模擬信號的電平進行編碼,使輸出端得到一系列幅值相等的脈沖,用這些脈沖來代替所需要波形的設備。
在開啟 PWM 設備框架以及 PWM驅動之后,應用程序通過 RT-Thread 提供的 PWM設備管理接口來訪問 PWM設備,相關接口如下所示:
| 函數 | 描述 |
|---|---|
| rt_device_find() | 根據PWM設備名稱查找設備獲取設備句柄 |
| rt_pwm_set() | 設置PWM周期和脈沖寬度 |
| rt_pwm_enable() | 使能PWM設備 |
| rt_pwm_disable() | 關閉PWM設備 |
關于PWM的更多資料請參看RT-Thread官方手冊:
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm
3 PWM實例
3.1 RA6E2 PWM配置
接下來配置PWM,只需要簡單配置就可使用。
- FSP配置PWM
打開RA Smart Configurator,在配置界面里面依次打開“Pins->Peripherals->Timers:GPT”配置GPT模塊,將GPT3 的 GTIOC3A 信號輸出連接到 P111引腳。

[]()[]()Figure ? 打開GPT輸出引腳
接下來就是添加PWM stack。

[]()[]()Figure ? 添加PWM stack
接下來需要配置PWM的參數。

[]()[]()Figure ? 配置PWM的參數
核心參數如下:
- Pin Output Support :使能PWM輸出
- Name :設置 GPT 模塊名字,這里使用是GPT3,名字就為g_timer3
- Channel :配置GPT通道,這里使用的第3個通道
- Mode :配置 GPT 的工作模式為 PWM 輸出模式。
- Period :配置GPT的周期為10 KHz,需要和Period Unit配合使用
- Period Unit :周期的單位,這里設置為KHz
- Duty Cycle Percent :設置PWM的占空比,當然也可通過代碼修改,這里就設置為50
- GTIOCA Output Enabled :使能 GTIOCA 輸出
- GTIOCA Stop Level :設置定時器停止時 GTIOCA 輸出的電平為低電平
- GTIOC3A :選擇連接到 P111引腳,打開GPT的Pin之后,會默認關聯
最后生成過程即可。
- 配置組件
然后打開對應的通道。

3.2 PWM輸出代碼實現
核心代碼如下:
#define PWM_DEV_NAME "pwm3"
#define PWM_DEV_CHANNEL 0
void open_pwm_output(void)
{
struct rt_device_pwm *pwm_dev;
/* turn on the LCD backlight */
pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
/* pwm frequency:100K = 10000ns */
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, 10000, 5000);
rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
}
3.3 測試驗證
編譯下載,調試信息如下:

接下來就看看PWM的輸出,PWM 信號可以通過示波器看到,下面筆者就是用邏輯分析儀查看波形。
首先筆者使用的邏輯分析儀是Kingst LA5016,當然啦,其他的也可以,關于邏輯分析儀的相關使用筆者這里就不介紹了,可以查看官方資料。
首先將P111引腳接到邏輯分析儀的CH0,然后下載程序到板子中,打開Kingst VIS,然后進行采樣。

[]()[]()Figure ? PWM輸出實現現象
從上圖可以看到,實際測量的頻率和占空比與理論是相符的。
-
mcu
+關注
關注
147文章
18925瀏覽量
398106 -
瑞薩
+關注
關注
37文章
22481瀏覽量
90864 -
計數器
+關注
關注
32文章
2316瀏覽量
98176 -
定時器
+關注
關注
23文章
3368瀏覽量
123606
發布評論請先 登錄
【EK-RA6E2開發指南】PWM輸出
評論