28.5
實(shí)驗(yàn)2:比較匹配功能——PWM輸出
28.5.1
硬件設(shè)計(jì)
野火啟明6M5開發(fā)板例程使用的PWM輸出引腳為額外引出的IO引腳:P500,如下圖所示。

點(diǎn)擊可查看大圖
注
野火啟明6M5開發(fā)板例程使用的PWM輸出引腳為額外引出的IO引腳:P500(AGTOA0)。
野火啟明4M2開發(fā)板例程使用的PWM輸出引腳為額外引出的IO引腳:P211(AGTOA5)。
野火啟明2L1開發(fā)板例程使用的PWM輸出引腳為額外引出的IO引腳:P208(AGTOB0)。
28.5.2
軟件設(shè)計(jì)
28.5.2.1
新建工程
由于本實(shí)驗(yàn)需要用到LED,也會(huì)用到串口打印提示信息,因此我們在前面串口通信章節(jié)的“實(shí)驗(yàn)1:UART收發(fā)回顯"例程的基礎(chǔ)上修改程序。
對于e2studio開發(fā)環(huán)境:拷貝一份我們之前的e2s工程“19_UART_Receive_Send”,然后將工程文件夾重命名為“28_AGT_PWM_Output”,最后再將它導(dǎo)入到我們的e2studio工作空間中。
對于Keil開發(fā)環(huán)境:拷貝一份我們之前的Keil工程“19_UART_Receive_Send”,然后將工程文件夾重命名為“28_AGT_PWM_Output”,并進(jìn)入該文件夾里面雙擊Keil工程文件,打開該工程。
工程新建好之后,在工程根目錄的“src”文件夾下面新建“agt”文件夾,再進(jìn)入“agt”文件夾里面新建源文件和頭文件:“bsp_agt_pwm_output.c”和“bsp_agt_pwm_output.h”。工程文件結(jié)構(gòu)如下。
列表5:文件結(jié)構(gòu)
左右滑動(dòng)查看完整內(nèi)容
28_AGT_PWM_Output ├─ ...... └─src ├─ led │ ├─ bsp_led.c │ └─ bsp_led.h ├─ debug_uart │ ├─ bsp_debug_uart.c │ └─ bsp_debug_uart.h ├─ agt │ ├─ bsp_agt_pwm_output.c │ └─ bsp_agt_pwm_output.h └─ hal_entry.c
28.5.2.2
FSP配置
接下來我們要以啟明6M5開發(fā)板為例來說明進(jìn)行FSP配置的方法,另外兩塊板子的配置步驟是一樣的,讀者可根據(jù)實(shí)際使用的引腳參照下面的步驟來進(jìn)行配置。
因?yàn)镻WM輸出需要使用IO口進(jìn)行輸出,因此需要先在“Pins”配置頁中為AGT配置引腳,我們將AGT的AGTOA0信號輸出連接到P500引腳,如下圖所示。

點(diǎn)擊可查看大圖
隨后在“Stacks”配置頁中加入AGT模塊,并對其作如下圖所示的配置。

點(diǎn)擊可查看大圖
AGT的“Output”部分屬性描述如下表所示。
表6:AGT屬性描述:“Output”部分。

點(diǎn)擊可查看大圖
28.5.2.3
AGT初始化函數(shù)
列表6:AGT初始化函數(shù)
左右滑動(dòng)查看完整內(nèi)容
/* AGT 初始化函數(shù)*/
voidAGT_PWM_Init(void)
{
/* 初始化AGT 模塊*/
R_AGT_Open(&g_timer_agt0_ctrl, &g_timer_agt0_cfg);
/* 啟動(dòng)AGT 定時(shí)器*/
R_AGT_Start(&g_timer_agt0_ctrl);
/* 重新設(shè)置占空比為80% */
AGT_PWM_SetDuty(80);
}
需要注意的是,在AGT初始化函數(shù)里面,我們重新設(shè)置了占空比:50%→80%。設(shè)置PWM占空比使用了我們自己寫的AGT_PWM_Set Duty函數(shù)。
28.5.2.4
設(shè)置PWM占空比函數(shù)
列表7:設(shè)置PWM占空比函數(shù)
左右滑動(dòng)查看完整內(nèi)容
/** 自定義函數(shù):設(shè)置PWM 占空比 @param duty 占空比范圍:0~100 % */ voidAGT_PWM_SetDuty(uint8_tduty) { timer_info_tinfo; uint32_tcurrent_period_counts; uint32_tduty_cycle_counts; if(duty >100) duty =100;//限制占空比范圍:0~100 /* 獲得AGT 的信息*/ R_AGT_InfoGet(&g_timer_agt0_ctrl, &info); /* 獲得計(jì)時(shí)器一個(gè)周期需要的計(jì)數(shù)次數(shù)*/ current_period_counts = info.period_counts; /* 根據(jù)占空比和一個(gè)周期的計(jì)數(shù)次數(shù)計(jì)算比較匹配寄存器的值*/ duty_cycle_counts = (uint32_t)(((uint64_t) current_period_counts *? ,→duty) /100); /* 最后調(diào)用FSP 庫函數(shù)設(shè)置占空比*/ R_AGT_DutyCycleSet(&g_timer_agt0_ctrl, duty_cycle_counts, AGT_OUTPUT_ ,→PIN_AGTOA); }
該函數(shù)的主要思路是需要先知道計(jì)數(shù)器的計(jì)數(shù)周期(即當(dāng)前輸出的PWM信號的一個(gè)周期需要計(jì)數(shù)的值current_period_counts),然后計(jì)算與要設(shè)定的占空比(duty)對應(yīng)的計(jì)數(shù)值(duty_cycle_counts),最后調(diào)用FSP庫函數(shù)R_AGT_Duty Cycle Set寫入該占空比對應(yīng)的計(jì)數(shù)值。
調(diào)用R_AGT_Duty Cycle Set函數(shù)時(shí)需要注意傳入的第三個(gè)參數(shù)是AGT_OUTPUT_PIN_AGTOA,因?yàn)槲覀兪褂玫腜WM輸出引腳P500連接到的是AGT0的AGTOA信號。如果換用別的引腳,需要注意檢查這個(gè)參數(shù)是否需要修改。
28.5.2.5
hal_entry入口函數(shù)
列表8:hal_entry入口函數(shù)
左右滑動(dòng)查看完整內(nèi)容
/* 用戶頭文件包含*/
#include"led/bsp_led.h"
#include"debug_uart/bsp_debug_uart.h"
#include"gpt/bsp_gpt_pwm_output.h"
voidhal_entry(void)
{
/*TODO:add your own code here */
LED_Init();// LED 初始化
Debug_UART4_Init();// SCI4 UART 調(diào)試串口初始化
AGT_PWM_Init();// AGT 初始化
printf("這是一個(gè)AGT 的PWM 輸出功能實(shí)驗(yàn)
");
printf("使用示波器測量P500 輸出的PWM 波形
");
// LED1 閃爍指示程序正在運(yùn)行...
while(1)
{
LED1_ON;
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
LED1_OFF;
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
}
#ifBSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
28.5.3
下載驗(yàn)證
以野火啟明6M5開發(fā)板為例,編譯并下載程序后,復(fù)位開發(fā)板使程序重新運(yùn)行,然后使用示波器測量P500引腳輸出的PWM波形。實(shí)現(xiàn)現(xiàn)象如下。
圖中PWM波形的頻率為20KHz,占空比為80%:

-
PWM
+關(guān)注
關(guān)注
116文章
5896瀏覽量
226785 -
瑞薩
+關(guān)注
關(guān)注
38文章
22526瀏覽量
91408 -
引腳
+關(guān)注
關(guān)注
16文章
2123瀏覽量
56061 -
開發(fā)板
+關(guān)注
關(guān)注
26文章
6439瀏覽量
121243
原文標(biāo)題:實(shí)驗(yàn)2:比較匹配功能(PWM輸出)——瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南(104)
文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之AGT低功耗定時(shí)器簡介和結(jié)構(gòu)框圖
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之使用AGT進(jìn)行脈沖寬度測量模式實(shí)驗(yàn)
瑞薩e2studio(1)----瑞薩芯片之搭建FSP環(huán)境
【RA-Eco-RA4M2開發(fā)板評測】+VS Code 下瑞薩 RA4M2 開發(fā)環(huán)境搭建與 GPIO 點(diǎn)燈實(shí)驗(yàn)教程
【瑞薩RA4系列開發(fā)板體驗(yàn)】開發(fā)環(huán)境搭建和新手點(diǎn)燈指南
【瑞薩RA4系列開發(fā)板體驗(yàn)】10. 我的試用總結(jié)
【瑞薩RA4系列開發(fā)板體驗(yàn)】體驗(yàn)過程
【有獎(jiǎng)直播預(yù)報(bào)名】瑞薩電子RA系列產(chǎn)品開發(fā)工具之FSP4.0.0新特性介紹
瑞薩電子RA系列微控制器的可擴(kuò)展性強(qiáng)的配置軟件包 (FSP)安裝下載與使用指南
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之使用GPT進(jìn)行PWM輸出實(shí)驗(yàn)
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之使用AGT基本定時(shí)功能實(shí)驗(yàn)
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之使用AGT進(jìn)行PWM輸出實(shí)驗(yàn)
評論