PWM:Pulse Width Modulation,脈沖寬度調(diào)制。
單片機(jī)實(shí)現(xiàn)PWM輸出的方式有很多種,有通過(guò)IO延時(shí)翻轉(zhuǎn)實(shí)現(xiàn)的,比如:
左右滑動(dòng)查看完整內(nèi)容
while(1) { IO口高電平 Delay延時(shí) IO口低電平 Delay延時(shí) }
也有通過(guò)定時(shí)器中斷控制IO高低電平輸出實(shí)現(xiàn)的。
定時(shí)器中斷配置——>啟動(dòng)定時(shí)器——>響應(yīng)中斷,控制IO高低電平
當(dāng)然,本文通過(guò),瑞薩RA8D1單片機(jī)通用PWM定時(shí)器(GPT,General PWM Timer)輸出PWM波形,這樣既避免了占用CPU資源,又避免了誤差(精度相對(duì)很高)。
下面手把手教大家基于e2studio環(huán)境下,實(shí)現(xiàn)RA8單片機(jī)輸出PWM的方法。
準(zhǔn)備工作
01下載并安裝e2studio工具
下載地址,推薦瑞薩官方的GitHub:
e2studio工具
https://github.com/renesas/fsp/releases
我們這里基于Windows環(huán)境,安裝exe文件,基本根據(jù)提示信息一路next即可。這里不再詳述。
02準(zhǔn)備RA8D1開(kāi)發(fā)板
我們這里以瑞薩RA8D1單片機(jī)為例:
(當(dāng)然,其實(shí)RA系列單片機(jī)也類(lèi)似)
RA8單片機(jī)PWM輸出方法
本文就瑞薩官方集成開(kāi)發(fā)工具e2studio,它是瑞薩單片機(jī)一站式編程工具,只需要?jiǎng)觿?dòng)鼠標(biāo)點(diǎn)一點(diǎn)就能創(chuàng)建一個(gè)單片機(jī)工程。
01打開(kāi)e2studio創(chuàng)建PWM項(xiàng)目
我們命名項(xiàng)目名稱(chēng)為:RA8D1_PWM
選擇對(duì)應(yīng)芯片型號(hào):R7FA8D1BEC
只需要?jiǎng)觿?dòng)鼠標(biāo)“點(diǎn)一點(diǎn)”,一個(gè)完整的工程就創(chuàng)建好了。
02配置工程
我們使用RA8D1單片機(jī)通用PWM定時(shí)器(General PWM Timer)GPT4,引腳P301輸出PWM。
這里配置時(shí)鐘、添加GPT模塊以相關(guān)配置。
配置時(shí)鐘:
GPT4使用PCLKD分頻作為時(shí)鐘源
配置引腳:
我們使用GPT4的P301作為PWM輸出引腳。
新建定時(shí)器模塊:
我們添加定時(shí)器模塊并配置相關(guān)屬性(配置常用參數(shù),其實(shí)默認(rèn)即可)。
03添加源代碼
我們這里簡(jiǎn)單添加一個(gè)gpt4模塊(源代碼文件),如圖:
bsp_gpt_pwm_output.c源代碼:
左右滑動(dòng)查看完整內(nèi)容
#include"bsp_gpt_pwm_output.h" /* GPT初始化函數(shù) */ voidGPT_PWM_Init(void) { /* 初始化 GPT 模塊 */ R_GPT_Open(&g_timer_gpt4_ctrl, &g_timer_gpt4_cfg); /* 啟動(dòng) GPT 定時(shí)器 */ R_GPT_Start(&g_timer_gpt4_ctrl); } /** 設(shè)置PWM占空比 @param duty 占空比范圍:0~100 % */ voidGPT_PWM_SetDuty(uint8_tduty) { timer_info_tinfo; uint32_tcurrent_period_counts; uint32_tduty_cycle_counts; if(duty >100) duty =100;//限制占空比范圍:0~100 /* 獲得GPT的信息 */ R_GPT_InfoGet(&g_timer_gpt4_ctrl, &info); /* 獲得計(jì)時(shí)器一個(gè)周期需要的計(jì)數(shù)次數(shù) */ current_period_counts = info.period_counts; /* 根據(jù)占空比和一個(gè)周期的計(jì)數(shù)次數(shù)計(jì)算GTCCR寄存器的值 */ duty_cycle_counts = (uint32_t)(((uint64_t) current_period_counts * duty) /100); /* 最后調(diào)用FSP庫(kù)函數(shù)設(shè)置占空比 */ R_GPT_DutyCycleSet(&g_timer_gpt4_ctrl, duty_cycle_counts, GPT_IO_PIN_GTIOCB); }
bsp_gpt_pwm_output.h頭代碼:
左右滑動(dòng)查看完整內(nèi)容
#ifndef__BSP_GPT_PWM_OUTPUT_H #define__BSP_GPT_PWM_OUTPUT_H #include"hal_data.h" voidGPT_PWM_Init(void); voidGPT_PWM_SetDuty(uint8_tduty); #endif
我們這里只有兩個(gè)簡(jiǎn)單函數(shù),在我們代碼中添加GPT_PWM_Init即可實(shí)現(xiàn)(配置中的)200KHz,占空比80%的PWM波形輸出。
04演示效果
下圖是我們配置200KHz,占空比80%的PWM波形:
根據(jù)源碼,你能發(fā)現(xiàn),我們只需要初始化(配置好)PWM輸出,后面就不會(huì)占用CPU資源。
我們提供了一個(gè)簡(jiǎn)單的接口,修改占空比,如果需要根據(jù)需求修改占空比,我們調(diào)用一下接口即可。比如我們修改占空比為60%:
當(dāng)然,更多參數(shù),我們可以根據(jù)自己情況封裝函數(shù)接口。
-
單片機(jī)
+關(guān)注
關(guān)注
6055文章
44795瀏覽量
643577 -
PWM
+關(guān)注
關(guān)注
115文章
5284瀏覽量
216955 -
瑞薩
+關(guān)注
關(guān)注
36文章
22345瀏覽量
87472 -
中斷
+關(guān)注
關(guān)注
5文章
902瀏覽量
42294 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3270瀏覽量
116443
原文標(biāo)題:瑞薩RA8系列教程 | RA8輸出PWM實(shí)現(xiàn)方法
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
瑞薩RA8D1 CEU介紹與使用說(shuō)明

基于瑞薩RA8單片機(jī)的智能小車(chē)項(xiàng)目方案 附源代碼

【瑞薩RA8D1 CPK開(kāi)發(fā)板試用】開(kāi)箱與點(diǎn)燈
【瑞薩RA8D1 CPK開(kāi)發(fā)板】RA8D1移植ThreadX操作系統(tǒng)
《電子發(fā)燒友電子設(shè)計(jì)周報(bào)》聚焦硬科技領(lǐng)域核心價(jià)值 第5期:2025.04.7--2025.04.11
如何使用e2studio對(duì)瑞薩單片機(jī)進(jìn)行PWM輸出?
基于瑞薩電子RA系列的野火耀陽(yáng)RA8D1開(kāi)發(fā)板產(chǎn)品簡(jiǎn)介

評(píng)論