加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

瑞薩RA8系列教程 | RA8輸出PWM實現(xiàn)方法

10/09 12:55
1081
閱讀需 7 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

微信公眾號?| strongerHuang

PWMPulse Width Modulation,脈沖寬度調(diào)制。

單片機實現(xiàn)PWM輸出的方式有很多種,有通過IO延時翻轉(zhuǎn)實現(xiàn)的,比如:

while(1){  IO口高電平??Delay延時  IO口低電平??Delay延時}

這種方法和前面給大家分享的文章【通過RA8單片機 SysTick 實現(xiàn)延時】有點類似,但這種方法缺陷也明顯,占用CPU資源,也存在誤差,特別是us級別誤差更明顯。

也有通過定時器中斷控制IO高低電平輸出實現(xiàn)的。

定時器中斷配置 ——>?啟動定時器?——>?響應中斷,控制IO高低電平···

當然,本文通過,瑞薩RA8D1單片機通用 PWM 定時器(GPT,General PWM Timer)輸出PWM波形,這樣既避免了占用CPU資源,又避免了誤差(精度相對很高)。
下面手把手教大家基于e2 studio環(huán)境下,實現(xiàn)RA8單片機輸出PWM的方法。

準備工作

1、下載并安裝e2 studio工具

下載地址,推薦瑞薩官方的GitHub:https://github.com/renesas/fsp/releases

我們這里基于Windows環(huán)境,安裝exe文件,基本根據(jù)提示信息一路next即可。

2、準備RA8D1開發(fā)板

我們這里以瑞薩RA8D1單片機為例(當然,其實RA系列單片機也類似):

RA8單片機PWM輸出方法

本文就瑞薩官方集成開發(fā)工具e2 studio,它是瑞薩單片機一站式編程工具,只需要動動鼠標點一點就能創(chuàng)建一個單片機工程。

1、打開e2 studio創(chuàng)建PWM項目

我們命名項目名稱為:RA8D1_PWM

選擇對應芯片型號:R7FA8D1BEC

 

只需要動動鼠標“點一點”,一個完整的工程就創(chuàng)建好了。

2、配置工程

我們使用RA8D1單片機通用PWM定時器(General PWM Timer)GPT4,引腳P301輸出PWM。

這里配置時鐘、添加GPT模塊以相關配置。

配置時鐘:GPT4使用?PCLKD?分頻作為時鐘源

配置引腳:我們使用GPT4的P301作為PWM輸出引腳。

新建定時器模塊:我們添加定時器模塊并配置相關屬性(配置常用參數(shù),其實默認即可)。

3、添加源代碼

我們這里簡單添加一個gpt4模塊(源代碼文件),如圖:

bsp_gpt_pwm_output.c源代碼:

#include "bsp_gpt_pwm_output.h"
/* GPT初始化函數(shù) */void GPT_PWM_Init(void){    /* 初始化 GPT 模塊 */    R_GPT_Open(&g_timer_gpt4_ctrl, &g_timer_gpt4_cfg);        /* 啟動 GPT 定時器 */    R_GPT_Start(&g_timer_gpt4_ctrl);}
/** 設置PWM占空比    @param duty 占空比范圍:0~100 %*/void GPT_PWM_SetDuty(uint8_t duty){    timer_info_t info;    uint32_t current_period_counts;    uint32_t duty_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ù)設置占空比 */    R_GPT_DutyCycleSet(&g_timer_gpt4_ctrl, duty_cycle_counts, GPT_IO_PIN_GTIOCB);}

bsp_gpt_pwm_output.h頭代碼:

#ifndef __BSP_GPT_PWM_OUTPUT_H#define __BSP_GPT_PWM_OUTPUT_H#include "hal_data.h"
void GPT_PWM_Init(void);
void GPT_PWM_SetDuty(uint8_t duty);
#endif

我們這里只有兩個簡單函數(shù),在我們代碼中添加 GPT_PWM_Init 即可實現(xiàn)(配置中的)200KHz,占空比80%的PWM波形輸出。

4、演示效果

下圖是我們配置200KHz,占空比80%的PWM波形:

根據(jù)源碼,你能發(fā)現(xiàn),我們只需要初始化(配置好)PWM輸出,后面就不會占用CPU資源。

我們提供了一個簡單的接口,修改占空比,如果需要根據(jù)需求修改占空比,我們調(diào)用一下接口即可。比如我們修改占空比為60%:

當然,更多參數(shù),我們可以根據(jù)自己情況封裝函數(shù)接口。

好了,本文就分享到這里,希望你=對你們有所幫助。

瑞薩電子

瑞薩電子

(RENESAS)于2003年4月1日—由日立制作所半導體部門和三菱電機半導體部門合并成立。RENESAS結(jié)合了日立與三菱在半導體領域方面的先進技術(shù)和豐富經(jīng)驗,是無線網(wǎng)絡、汽車、消費與工業(yè)市場設計制造嵌入式半導體的全球領先供應商。創(chuàng)立日期2003年4月1日公司法人董事長&CEO伊藤達業(yè)務范圍單片機邏輯模擬等的系統(tǒng)LSI、分立半導體元件、SRAM等的存儲器開發(fā)、設計、制造、銷售、服務的提供。集團成員44家公司(日本20家,日本以外24家)年度銷售額2006財年(截止至2007年3月):9526億日元(約83億美元)從業(yè)人員:26000人(全世界20個國家、43家公司)瑞薩科技是世界十大半導體芯片供應商之一,在很多諸如移動通信、汽車電子和PC/AV 等領域獲得了全球最高市場份額。瑞薩集成電路設計(北京)有限公司蘇州分公司(RDB-SU)是瑞薩科技全資子公司,2004年1月成立以來,現(xiàn)已擁有150多名優(yōu)秀工程師,承擔著家電和汽車電子領域MCU的一系列設計工作,并在2006年4月開始開發(fā)面向中國市場的MCU。

(RENESAS)于2003年4月1日—由日立制作所半導體部門和三菱電機半導體部門合并成立。RENESAS結(jié)合了日立與三菱在半導體領域方面的先進技術(shù)和豐富經(jīng)驗,是無線網(wǎng)絡、汽車、消費與工業(yè)市場設計制造嵌入式半導體的全球領先供應商。創(chuàng)立日期2003年4月1日公司法人董事長&CEO伊藤達業(yè)務范圍單片機邏輯模擬等的系統(tǒng)LSI、分立半導體元件、SRAM等的存儲器開發(fā)、設計、制造、銷售、服務的提供。集團成員44家公司(日本20家,日本以外24家)年度銷售額2006財年(截止至2007年3月):9526億日元(約83億美元)從業(yè)人員:26000人(全世界20個國家、43家公司)瑞薩科技是世界十大半導體芯片供應商之一,在很多諸如移動通信、汽車電子和PC/AV 等領域獲得了全球最高市場份額。瑞薩集成電路設計(北京)有限公司蘇州分公司(RDB-SU)是瑞薩科技全資子公司,2004年1月成立以來,現(xiàn)已擁有150多名優(yōu)秀工程師,承擔著家電和汽車電子領域MCU的一系列設計工作,并在2006年4月開始開發(fā)面向中國市場的MCU。收起

查看更多

相關推薦

電子產(chǎn)業(yè)圖譜

作者黃工,從事嵌入式軟件開發(fā)工作8年有余,高級嵌入式軟件工程師,業(yè)余維護公眾號『strongerHuang』,分享嵌入式軟硬件、單片機、物聯(lián)網(wǎng)等內(nèi)容。