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

【瑞薩RA8D1 CPK開發(fā)板試用】開箱與點燈
【瑞薩RA8D1 CPK開發(fā)板】RA8D1移植ThreadX操作系統(tǒng)
《電子發(fā)燒友電子設(shè)計周報》聚焦硬科技領(lǐng)域核心價值 第7期:2025.04.7--2025.04.11
基于瑞薩電子RA系列的野火耀陽RA8D1開發(fā)板產(chǎn)品簡介

評論