1 PWM簡(jiǎn)介
脈沖寬度調(diào)制(PWM) ,是英文“Pulse Width Modulation” 的縮寫(xiě),簡(jiǎn)稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。簡(jiǎn)單一點(diǎn),就是對(duì)脈沖寬度的控制。
在瑞薩RA6E2系列 MCU 中有兩種定時(shí)器,一種是通用 PWM 定時(shí)器 GPT,另外一種是異步通用定時(shí)器 AGT,在這里我們使用通用定時(shí)器GPT進(jìn)行PWM輸出。
[]()[]()Figure ? GPT 外設(shè)模塊的結(jié)構(gòu)框圖
RA6E2系列共有共 6 個(gè)GPT定時(shí)器(即6個(gè)通道)。GPT 的計(jì)數(shù)器支持遞增計(jì)數(shù),遞減計(jì)數(shù)和遞增/遞減計(jì)數(shù)。詳細(xì)的通道名稱如下表所示。
[]()[]()Figure ? GPT各個(gè)通道詳情
PWM 輸出就是對(duì)外輸出脈寬(即占空比)可調(diào)的方波信號(hào), 信號(hào)頻率由周期設(shè)定寄存器 GTPR 的值決定,占空比由比較寄存器 GTCCR 的值決定。
2 RT-Thread 的PWM簡(jiǎn)介
PWM(Pulse Width Modulation , 脈沖寬度調(diào)制) 是一種對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法,通過(guò)不同頻率的脈沖使用方波的占空比用來(lái)對(duì)一個(gè)具體模擬信號(hào)的電平進(jìn)行編碼,使輸出端得到一系列幅值相等的脈沖,用這些脈沖來(lái)代替所需要波形的設(shè)備。
在開(kāi)啟 PWM 設(shè)備框架以及 PWM驅(qū)動(dòng)之后,應(yīng)用程序通過(guò) RT-Thread 提供的 PWM設(shè)備管理接口來(lái)訪問(wèn) PWM設(shè)備,相關(guān)接口如下所示:
函數(shù) | 描述 |
---|---|
rt_device_find() | 根據(jù)PWM設(shè)備名稱查找設(shè)備獲取設(shè)備句柄 |
rt_pwm_set() | 設(shè)置PWM周期和脈沖寬度 |
rt_pwm_enable() | 使能PWM設(shè)備 |
rt_pwm_disable() | 關(guān)閉PWM設(shè)備 |
關(guān)于PWM的更多資料請(qǐng)參看RT-Thread官方手冊(cè):
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm
3 PWM實(shí)例
3.1 RA6E2 PWM配置
接下來(lái)配置PWM,只需要簡(jiǎn)單配置就可使用。
- FSP配置PWM
打開(kāi)RA Smart Configurator,在配置界面里面依次打開(kāi)“Pins->Peripherals->Timers:GPT”配置GPT模塊,將GPT3 的 GTIOC3A 信號(hào)輸出連接到 P111引腳。
[]()[]()Figure ? 打開(kāi)GPT輸出引腳
接下來(lái)就是添加PWM stack。
[]()[]()Figure ? 添加PWM stack
接下來(lái)需要配置PWM的參數(shù)。
[]()[]()Figure ? 配置PWM的參數(shù)
核心參數(shù)如下:
- Pin Output Support :使能PWM輸出
- Name :設(shè)置 GPT 模塊名字,這里使用是GPT3,名字就為g_timer3
- Channel :配置GPT通道,這里使用的第3個(gè)通道
- Mode :配置 GPT 的工作模式為 PWM 輸出模式。
- Period :配置GPT的周期為10 KHz,需要和Period Unit配合使用
- Period Unit :周期的單位,這里設(shè)置為KHz
- Duty Cycle Percent :設(shè)置PWM的占空比,當(dāng)然也可通過(guò)代碼修改,這里就設(shè)置為50
- GTIOCA Output Enabled :使能 GTIOCA 輸出
- GTIOCA Stop Level :設(shè)置定時(shí)器停止時(shí) GTIOCA 輸出的電平為低電平
- GTIOC3A :選擇連接到 P111引腳,打開(kāi)GPT的Pin之后,會(huì)默認(rèn)關(guān)聯(lián)
最后生成過(guò)程即可。
- 配置組件
然后打開(kāi)對(duì)應(yīng)的通道。
3.2 PWM輸出代碼實(shí)現(xiàn)
核心代碼如下:
#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 測(cè)試驗(yàn)證
編譯下載,調(diào)試信息如下:
接下來(lái)就看看PWM的輸出,PWM 信號(hào)可以通過(guò)示波器看到,下面筆者就是用邏輯分析儀查看波形。
首先筆者使用的邏輯分析儀是Kingst LA5016,當(dāng)然啦,其他的也可以,關(guān)于邏輯分析儀的相關(guān)使用筆者這里就不介紹了,可以查看官方資料。
首先將P111引腳接到邏輯分析儀的CH0,然后下載程序到板子中,打開(kāi)Kingst VIS,然后進(jìn)行采樣。
[]()[]()Figure ? PWM輸出實(shí)現(xiàn)現(xiàn)象
從上圖可以看到,實(shí)際測(cè)量的頻率和占空比與理論是相符的。
-
mcu
+關(guān)注
關(guān)注
147文章
18367瀏覽量
378438 -
瑞薩
+關(guān)注
關(guān)注
36文章
22413瀏覽量
89187 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2301瀏覽量
97162 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3347瀏覽量
120901
發(fā)布評(píng)論請(qǐng)先 登錄
【EK-RA6E2開(kāi)發(fā)指南】開(kāi)發(fā)環(huán)境搭建

評(píng)論