
1.概述
本篇文章主要介紹如何使用e2studio對(duì)瑞薩單片機(jī)進(jìn)行PWM輸出。
2.硬件準(zhǔn)備
首先需要準(zhǔn)備一個(gè)開(kāi)發(fā)板,這里我準(zhǔn)備的是芯片型號(hào) R7FA2L1AB2DFL 的開(kāi)發(fā)板。
3. 新建工程

4.工程模板

5. 保存工程路徑

6. 芯片配置
本文中使用R7FA2L1AB2DFL來(lái)進(jìn)行演示。

7
7.工程模板選擇

8.選擇定時(shí)器

時(shí)鐘源在這設(shè)置的是PCKLD 48M 。
可以通過(guò)修改該頻率來(lái)修改占空比頻率。

9.PWM(脈沖寬度調(diào)制)
脈沖寬度調(diào)制是一種模擬控制方式,根據(jù)相應(yīng)載荷的變化來(lái)調(diào)制晶體管基極或MOS管柵極的偏置,來(lái)實(shí)現(xiàn)晶體管或MOS管導(dǎo)通時(shí)間的改變,從而實(shí)現(xiàn)開(kāi)關(guān)穩(wěn)壓電源輸出的改變。這種方式能使電源的輸出電壓在工作條件變化時(shí)保持恒定,是利用微處理器的數(shù)字信號(hào)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。脈沖寬度調(diào)制是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù),廣泛應(yīng)用在從測(cè)量、通信到功率控制與變換的許多領(lǐng)域中。
在瑞薩RA系列MCU中有兩種定時(shí)器,一種是通用PWM定時(shí)器GPT,另外一種是異步通用定時(shí)器AGT。
頻率=主頻/period
+占空比=cycle/period

10.定時(shí)器管腳配置
通過(guò)點(diǎn)擊需要配置的管腳,選擇GTIOC1即可配置。

11.定時(shí)器配置
點(diǎn)擊Stacks->New Stack->Driver->Timers->Timer Driver on r_gpt。


12.工程文件
查看pin_data.c,可以看到定時(shí)器0的定義已經(jīng)寫(xiě)入,說(shuō)明配置成功。

打開(kāi)main.c函數(shù),發(fā)現(xiàn)寫(xiě)了一個(gè)hal_entry ()函數(shù)。

打開(kāi)hal_entry.c,可以看到在hal_entry函數(shù)內(nèi),注釋著可以在這輸入自己的代碼。

13.R_GPT_Open()函數(shù)原型

故可以用 R_GPT_Open()函數(shù)進(jìn)行初始化時(shí)器模塊并應(yīng)用配置。
/* Initializes the module. */
err = R_GPT_Open(&g_timer0_ctrl, &g_timer0_cfg);
/* Handle any errors. This function should be defined by the user. */
assert(FSP_SUCCESS == err);
14.R_GPT_Start()函數(shù)原型

故可以用R_GPT_Start()函數(shù)進(jìn)行開(kāi)啟定時(shí)器。
/* Start the timer. */
(void) R_GPT_Start(&g_timer0_ctrl);
15.R_GPT_PeriodSet()函數(shù)原型

頻率=時(shí)鐘源/period,若設(shè)置頻率為10K,則period=48M/10K=4800
err = R_GPT_DutyCycleSet(&g_timer0_ctrl, 2400, GPT_IO_PIN_GTIOCA);//占空比
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延時(shí)可能會(huì)設(shè)置不成功
16.R_GPT_DutyCycleSet()函數(shù)原型

+占空比=cycle/period,若設(shè)置+占空比為50%,則cycle= +占空比* period=50%*4800=2400
err = R_GPT_DutyCycleSet(&g_timer0_ctrl, 2400, GPT_IO_PIN_GTIOCA);//占空比
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延時(shí)可能會(huì)設(shè)置不成功
17.R_GPT_Reset()函數(shù)原型

將計(jì)數(shù)器值重置為 0。
err = R_GPT_Reset(&g_timer0_ctrl);
assert(FSP_SUCCESS == err);
18.完整代碼
hal_entry()中添加如下。
void hal_entry(void)
{
/* TODO: add your own code here */
fsp_err_t err = FSP_SUCCESS;
/********************************************************************
* 開(kāi)啟PWM
*/
/* Initializes the module. */
err = R_GPT_Open(&g_timer0_ctrl, &g_timer0_cfg);
/* Handle any errors. This function should be defined by the user. */
assert(FSP_SUCCESS == err);
/* Start the timer. */
(void) R_GPT_Start(&g_timer0_ctrl);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);
err = R_GPT_PeriodSet(&g_timer0_ctrl, 4800);//頻率
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延時(shí)可能會(huì)設(shè)置不成功
err = R_GPT_DutyCycleSet(&g_timer0_ctrl, 2400, GPT_IO_PIN_GTIOCA);//占空比
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);
err = R_GPT_Reset(&g_timer0_ctrl);
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);
#if BSP_TZ_SECURE_BUILD /* Enter non-secure code */ R_BSP_NonSecureEnter();#endif
}
19.結(jié)果演示

20.視頻教學(xué)
視頻教學(xué)稍后會(huì)在B站官方賬號(hào)更新,請(qǐng)留意B站視頻更新~

原文標(biāo)題:瑞薩e2studio----PWM
文章出處:【微信公眾號(hào):RA生態(tài)工作室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
mcu
+關(guān)注
關(guān)注
146文章
17718瀏覽量
358204 -
ARM
+關(guān)注
關(guān)注
134文章
9270瀏覽量
373517 -
嵌入式
+關(guān)注
關(guān)注
5125文章
19438瀏覽量
313070
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
使用e2studio軟件新建瑞薩RA系列MCU工程

【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】初學(xué)瑞薩-使用瑞薩flash programmer燒錄程序
【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】試用瑞薩flash programmer燒錄
【瑞薩RA2L1入門(mén)學(xué)習(xí)】+e2_studio軟件安裝及使用
瑞薩RA8快速上手指南:Cortex-M85內(nèi)核瑞薩RA8開(kāi)發(fā)環(huán)境搭建 并點(diǎn)亮一個(gè)LED

e2studio和Keil簡(jiǎn)介及如何安裝e2studio開(kāi)發(fā)環(huán)境

【瑞薩**RA2L1入門(mén)學(xué)習(xí)】+**UART測(cè)試實(shí)驗(yàn)
【瑞薩RA2L1入門(mén)學(xué)習(xí)】RA2L1開(kāi)發(fā)環(huán)境搭建
基于瑞薩RA0E1開(kāi)發(fā)板的IIC OLED測(cè)試

評(píng)論