瑞萨e2studio----PWM

描述

ARM

 

    1.概述      

 

 

    本篇文章主要介绍如何使用e2studio对瑞萨单片机进行PWM输出。

 

 

  2.硬件准备   

 

 

    首先需要准备一个开发板,这里我准备的是芯片型号 R7FA2L1AB2DFL 的开发板。

 

 

 3. 新建工程   

 

 

ARM

 

 

 

  4.工程模板   

 

 

ARM

 

 

 5. 保存工程路径  

 

 

ARM

 

 

  6. 芯片配置    

 

 

    本文中使用R7FA2L1AB2DFL来进行演示。

ARM

 

7

   7.工程模板选择    

 

 

ARM

 

 

   8.选择定时器    

 

 

ARM

 

    时钟源在这设置的是PCKLD 48M 。

    可以通过修改该频率来修改占空比频率。

 

ARM

 

 

 

   9.PWM(脉冲宽度调制)    

 

 

    脉冲宽度调制是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

    在瑞萨RA系列MCU中有两种定时器,一种是通用PWM定时器GPT,另外一种是异步通用定时器AGT。

    频率=主频/period

    +占空比=cycle/period

ARM

 

 

 

   10.定时器管脚配置    

 

 

    通过点击需要配置的管脚,选择GTIOC1即可配置。

 

ARM

 

 

   11.定时器配置    

 

 

    点击Stacks->New Stack->Driver->Timers->Timer Driver on r_gpt。

 

ARM

 

ARM

 

 

   12.工程文件    

 

 

    查看pin_data.c,可以看到定时器0的定义已经写入,说明配置成功。

ARM

 

    打开main.c函数,发现写了一个hal_entry ()函数。

ARM

  

    打开hal_entry.c,可以看到在hal_entry函数内,注释着可以在这输入自己的代码。

ARM

 

 

   13.R_GPT_Open()函数原型    

 

    

ARM

 

    故可以用 R_GPT_Open()函数进行初始化时器模块并应用配置。

 


 		/* 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()函数原型    

 

 

ARM

 

    故可以用R_GPT_Start()函数进行开启定时器。

 

	 /* Start the timer. */
    (void) R_GPT_Start(&g_timer0_ctrl);

 

 

 

   15.R_GPT_PeriodSet()函数原型    

 

 

ARM

 

    频率=时钟源/period,若设置频率为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);//不加延时可能会设置不成功

 

 

   16.R_GPT_DutyCycleSet()函数原型    

 

 

ARM

 

    +占空比=cycle/period,若设置+占空比为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);//不加延时可能会设置不成功

 

 

 

   17.R_GPT_Reset()函数原型    

 

 

ARM

 

    将计数器值重置为 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;
    /********************************************************************
     * 开启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);//不加延时可能会设置不成功


    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.结果演示    

 

                                       

ARM

 

 

 

    20.视频教学      

 

 

视频教学稍后会在B站官方账号更新,请留意B站视频更新~

 

ARM

原文标题:瑞萨e2studio----PWM

文章出处:【微信公众号:RA生态工作室】欢迎添加关注!文章转载请注明出处。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分