瑞萨e2studio(13)----定时器AGT配置PWM输出

63 篇文章 103 订阅

概述

本篇文章主要介绍如何使用e2studio对瑞萨单片机进行定时器AGT配置PWM输出。
需要样片的可以加qun申请:6_15061293 。

视频教学

听不到声音的请点击跳转进行观看。
https://www.bilibili.com/video/BV1zR4y1F7cW/

瑞萨e2studio(14)----定时器AGT配置PWM输出

csdn课程

csdn课程更加详细。
https://edu.csdn.net/course/detail/36131

完整代码下载

https://download.csdn.net/download/qq_24312945/84997805

样品申请

https://www.wjx.top/vm/wBbmSFp.aspx#

硬件准备

首先需要准备一个开发板,这里我准备的是芯片型号R7FAM2AD3CFP的开发板:
在这里插入图片描述

开发板

在这里插入图片描述

新建工程

在这里插入图片描述

工程模板

在这里插入图片描述

保存工程路径

在这里插入图片描述

芯片配置

本文中使用R7FA4M2AD3CFP来进行演示。
在这里插入图片描述

工程模板选择

在这里插入图片描述

时钟设置

开发板上的外部高速晶振为12M,需要修改XTAL为12M.
在这里插入图片描述

PWM(脉冲宽度调制)

脉冲宽度调制是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
在瑞萨RA系列MCU中有两种定时器,一种是通用PWM定时器GPT,另外一种是异步通用定时器AGT。
频率=主频/period
+占空比=cycle/period
在这里插入图片描述

定时器管脚配置

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

在这里插入图片描述

管脚定义

开发板上有Arduino的接口,选取(P102) 和(P106) 、 (P107)进行配置。

在这里插入图片描述

定时器配置

在这里插入图片描述

点击Stacks->New Stack->Driver->Timers->Timer Driver on r_agt。
在这里插入图片描述

定时器AGT配置

在这里插入图片描述

R_AGT_Open()函数原型

在这里插入图片描述
故可以用 R_AGT_Open()函数进行初始化时器模块并应用配置。

 /* Initializes the module. */
     err = R_AGT_Open(&g_timer0_ctrl, &g_timer0_cfg);
     /* Handle any errors. This function should be defined by the user. */
     assert(FSP_SUCCESS == err);

R_AGT_Start()函数原型

在这里插入图片描述
故可以用R_AGT_Start()函数进行开启定时器。

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

R_AGT_PeriodSet()函数原型

在这里插入图片描述
频率=时钟源/period,若设置频率为10K,则period=25M/10K=2500

 err = R_AGT_PeriodSet(&g_timer0_ctrl, 2500);//频率
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延时可能会设置不成功

R_AGT_DutyCycleSet()函数原型

在这里插入图片描述

+占空比=cycle/period,若设置AGTOA占空比为50%,则cycle= +占空比* period=50%2500=1250
若设置AGTOB占空比为30%,则cycle= +占空比
period=30%*2500=750

err = R_AGT_DutyCycleSet(&g_timer0_ctrl, 1250, AGT_OUTPUT_PIN_AGTOA);//占空比
assert(FSP_SUCCESS == err);
err = R_AGT_DutyCycleSet(&g_timer0_ctrl, 750, AGT_OUTPUT_PIN_AGTOB);//占空比
assert(FSP_SUCCESS == err);

R_AGT_Reset()函数原型

在这里插入图片描述
将计数器值重置为 0。

 err = R_AGT_Reset(&g_timer0_ctrl);
        assert(FSP_SUCCESS == err);

R_AGT_Close()函数原型

在这里插入图片描述
关闭定时器AGT。

(void) R_AGT_Close(&g_timer0_ctrl);

工程文件

打开main.c函数,发现写了一个hal_entry ()函数。
在这里插入图片描述

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

AGT定时器管脚输出状态

在AGT定时器配置中,有一个AGTO输出管脚,该管脚在周期结束时候会进行翻转电平,故占空比应该是50%, AGTO输出管脚频率是设定频率的一般。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

黄色为AGTOA输出的信号,为e2studio配置的2k频率,60%占空比。
蓝色为AGTO输出的信号,频率刚好为2k的一半,为1k,占空比为50%。

在AGT定时器配置中,有配置AGTOA/AGTOB输出管脚的电平,该设置是在输出启动时或者关闭时候的电平状态。

在这里插入图片描述

void hal_entry(void)
{
    /* TODO: add your own code here */
    fsp_err_t err = FSP_SUCCESS;
     /* Initializes the module. */
     err = R_AGT_Open(&g_timer0_ctrl, &g_timer0_cfg);
     /* Handle any errors. This function should be defined by the user. */
     assert(FSP_SUCCESS == err);
     R_BSP_SoftwareDelay (5, BSP_DELAY_UNITS_MILLISECONDS);
     /* Start the timer. */
     (void) R_AGT_Start(&g_timer0_ctrl);
     R_BSP_SoftwareDelay (5, BSP_DELAY_UNITS_MILLISECONDS);
     (void) R_AGT_Close(&g_timer0_ctrl);

#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}


在这里插入图片描述
黄色波形为AGTOA管脚的信号,设置为Start Level Low ,故在开启AGT时候电平就被置为低,而在关闭AGT的时候,电平也是被置为低。
蓝色波形为AGTOB管脚的信号,设置为Start Level High ,故在开启AGT时候电平就被置为高,而在关闭AGT的时候,电平也是被置为高。

在这里插入图片描述

在这里插入图片描述

黄色波形为AGTOB管脚的信号,设置为Start Level High,故在输出PWM时候,高电平时间为0~duty_cycle_counts。
蓝色波形为AGTOA管脚的信号,设置为Start Level Low,故在输出PWM时候,高电平时间为(timer_period_t::counts - duty_cycle_counts)~(timer_period_t::counts)。

最后

以上的代码会在Q_QUN里分享。Q_QUN:615061293。
或者关注『记帖』,持续更新文章和学习资料!
在这里插入图片描述

AGT定时器修改PWM输出频率以及占空比

通过 R_AGT_PeriodSet ()可以修改频率,通过R_AGT_DutyCycleSet()可以修改占空比,修改频率为10k,其中AGTOA的占空比为50%, AGTOB的占空比为30%。

void hal_entry(void)
{
    /* TODO: add your own code here */
 fsp_err_t err = FSP_SUCCESS;
     /* Initializes the module. */
     err = R_AGT_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_AGT_Start(&g_timer0_ctrl);
     err = R_AGT_PeriodSet(&g_timer0_ctrl, 2500);//频率
    assert(FSP_SUCCESS == err);
    R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延时可能会设置不成功
    err = R_AGT_DutyCycleSet(&g_timer0_ctrl, 1250, AGT_OUTPUT_PIN_AGTOA);//占空比
    assert(FSP_SUCCESS == err);
    err = R_AGT_DutyCycleSet(&g_timer0_ctrl, 750, AGT_OUTPUT_PIN_AGTOB);//占空比
    assert(FSP_SUCCESS == err);#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}


可以看到,输出频率为10k,其中黄色波形为AGTOA输出的波形,占空比为50%,紫色波形为AGTOB输出的波形,占空比为30% 。

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 瑞莎半导体RH850系列是一种高性能汽车微控制器单元(MCU),其数据手册是针对该系列芯片的详细说明和技术规格的文档。 该数据手册提供了RH850系列MCU的各种功能和特性的完整介绍。其中包括芯片的架构、内部外部总线结构、内存和外设的布局、中央处理器(CPU)的性能规格、工作频率范围、电源管理和电源电压等技术参数。此外,还介绍了芯片的各种外设模块,如通用串行总线(USB)、以太网、CAN总线、SPI和I2C接等,并详细描述了它们的功能和特性。 此外,数据手册还提供了开发和编程RH850系列MCU的详细指导,包括内置的调试和调试接、软件开发工具链的使用、驱动程序编写要点等。它还介绍了编程语言和框架、开发环境、调试工具和软件的集成,以及与其他常见汽车电子系统的接和通信方法。 数据手册还包含了RH850系列MCU的信号和时序图,以帮助开发人员了解芯片的内部工作原理和操作方式。此外,它还提供了示例代码和实用工具的使用方法,以及一些典型应用案例和建议。 总体而言,瑞莎半导体RH850中文数据手册是开发人员和工程师理解和应用RH850系列MCU的重要参考资料。它提供了全面的技术规格和应用指导,帮助用户充分发挥芯片的性能,从而实现各种汽车电子控制应用。 ### 回答2: 瑞莎半导体RH850中文数据手册是一本关于瑞莎半导体公司生产的RH850系列芯片的详细说明书。通过这本手册,用户可以了解关于这款芯片的各种技术参数、功能特点以及使用方法。 首先,手册会详细介绍RH850芯片的基本特性。这包括芯片的器件型号、工作电压、封装方式等方面的信息。用户可以通过这些参数来选择适合自己需求的芯片型号。 其次,手册会详细介绍RH850芯片的内部结构和功能模块。这包括中央处理器(CPU)、内存、I/O接定时器、串行通信等模块。用户可以了解每个模块的功能以及如何通过编程来控制和使用这些模块。 此外,手册还会给出RH850芯片的电气特性和性能参数。这包括芯片的电流消耗、时钟频率、工作温度范围等方面的数据。用户可以根据这些参数来评估芯片的性能和可靠性。 最后,手册还提供了RH850芯片的软件开发工具和应用示例。这包括编译器、调试接、软件开发工具链等方面的介绍。用户可以通过这些工具和示例来进行软件开发和调试,以满足自己的应用需求。 总而言之,瑞莎半导体RH850中文数据手册是一本详细介绍RH850芯片的技术手册。用户可以通过这本手册了解芯片的各种特性和性能参数,以及如何进行软件开发和应用设计。这对于使用RH850芯片的工程师和技术人员来说是一本非常有价值的参考资料。 ### 回答3: 瑞莎半导体RH850是一种先进的半导体芯片,其中文数据手册是对该芯片的详细说明和技术参数的文档。该手册提供了用户需要了解的关于RH850芯片的各种信息和指导,以帮助用户更好地了解和应用该芯片。 瑞莎半导体RH850中文数据手册首先包括了关于该芯片的基本介绍,包括芯片的型号、功能特性及应用领域。手册中列举了RH850芯片的规格参数,如封装方式、运行频率、工作电压等。这些参数对于用户选择合适的芯片以及进行相关设计和布局是非常重要的依据。 同时,瑞莎半导体RH850中文数据手册还阐述了芯片的主要功能模块和架构,如内核和外设等。通过对这些功能模块的介绍和功能描述,用户可以更好地理解和利用芯片的各种功能,从而实现自己的应用需求。 手册中还会详细介绍RH850芯片的编程和调试方法,包括寄存器的配置和使用、特殊功能的实现等。这对于初次接触该芯片或者对编程不太熟悉的用户来说,具有很大的参考价值和指导意义。 最后,瑞莎半导体RH850中文数据手册还会提供一些典型的应用案例,以及相关的设计注意事项和建议。这些案例可以帮助用户更好地了解和应用该芯片,并发现一些常见问题的解决方法。 总之,瑞莎半导体RH850中文数据手册是一本对于该芯片的全面介绍和操作指南,它通过详细的文字和图表,向用户提供了对该芯片的全面了解和应用。对于芯片的开发者、工程师和研究者来说,该手册是一本必备的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记帖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值