0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RA系列FSP库开发实战指南之使用AGT进行PWM输出实验

瑞萨嵌入式小百科 来源:野火电子 2026-05-08 10:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

28.5

实验2:比较匹配功能——PWM输出

28.5.1

硬件设计

野火启明6M5开发板例程使用的PWM输出引脚为额外引出的IO引脚:P500,如下图所示。

2a64ffba-42b8-11f1-90a1-92fbcf53809c.png

点击可查看大图

野火启明6M5开发板例程使用的PWM输出引脚为额外引出的IO引脚:P500(AGTOA0)。

野火启明4M2开发板例程使用的PWM输出引脚为额外引出的IO引脚:P211(AGTOA5)。

野火启明2L1开发板例程使用的PWM输出引脚为额外引出的IO引脚:P208(AGTOB0)。

28.5.2

软件设计

28.5.2.1

新建工程

由于本实验需要用到LED,也会用到串口打印提示信息,因此我们在前面串口通信章节的“实验1:UART收发回显"例程的基础上修改程序。

对于e2studio开发环境:拷贝一份我们之前的e2s工程“19_UART_Receive_Send”,然后将工程文件夹重命名为“28_AGT_PWM_Output”,最后再将它导入到我们的e2studio工作空间中。

对于Keil开发环境:拷贝一份我们之前的Keil工程“19_UART_Receive_Send”,然后将工程文件夹重命名为“28_AGT_PWM_Output”,并进入该文件夹里面双击Keil工程文件,打开该工程。

工程新建好之后,在工程根目录的“src”文件夹下面新建“agt”文件夹,再进入“agt”文件夹里面新建源文件和头文件:“bsp_agt_pwm_output.c”和“bsp_agt_pwm_output.h”。工程文件结构如下。

列表5:文件结构

左右滑动查看完整内容

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开发板为例来说明进行FSP配置的方法,另外两块板子的配置步骤是一样的,读者可根据实际使用的引脚参照下面的步骤来进行配置。

因为PWM输出需要使用IO口进行输出,因此需要先在“Pins”配置页中为AGT配置引脚,我们将AGT的AGTOA0信号输出连接到P500引脚,如下图所示。

2ac60526-42b8-11f1-90a1-92fbcf53809c.png

点击可查看大图

随后在“Stacks”配置页中加入AGT模块,并对其作如下图所示的配置。

2b250b2a-42b8-11f1-90a1-92fbcf53809c.png

点击可查看大图

AGT的“Output”部分属性描述如下表所示。

表6:AGT属性描述:“Output”部分。

2b7cebd8-42b8-11f1-90a1-92fbcf53809c.png

点击可查看大图

28.5.2.3

AGT初始化函数

列表6:AGT初始化函数

左右滑动查看完整内容

/* AGT 初始化函数*/
voidAGT_PWM_Init(void)
{
/* 初始化AGT 模块*/
R_AGT_Open(&g_timer_agt0_ctrl, &g_timer_agt0_cfg);
/* 启动AGT 定时器*/
R_AGT_Start(&g_timer_agt0_ctrl);
/* 重新设置占空比为80% */
AGT_PWM_SetDuty(80);
}

需要注意的是,在AGT初始化函数里面,我们重新设置了占空比:50%→80%。设置PWM占空比使用了我们自己写的AGT_PWM_Set Duty函数。

28.5.2.4

设置PWM占空比函数

列表7:设置PWM占空比函数

左右滑动查看完整内容

/** 自定义函数:设置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);
/* 获得计时器一个周期需要的计数次数*/
current_period_counts = info.period_counts;
/* 根据占空比和一个周期的计数次数计算比较匹配寄存器的值*/
duty_cycle_counts = (uint32_t)(((uint64_t) current_period_counts *␣
,→duty) /100);
/* 最后调用FSP 库函数设置占空比*/
R_AGT_DutyCycleSet(&g_timer_agt0_ctrl, duty_cycle_counts, AGT_OUTPUT_
,→PIN_AGTOA);
}

该函数的主要思路是需要先知道计数器的计数周期(即当前输出的PWM信号的一个周期需要计数的值current_period_counts),然后计算与要设定的占空比(duty)对应的计数值(duty_cycle_counts),最后调用FSP库函数R_AGT_Duty Cycle Set写入该占空比对应的计数值。

调用R_AGT_Duty Cycle Set函数时需要注意传入的第三个参数是AGT_OUTPUT_PIN_AGTOA,因为我们使用的PWM输出引脚P500连接到的是AGT0的AGTOA信号。如果换用别的引脚,需要注意检查这个参数是否需要修改。

28.5.2.5

hal_entry入口函数

列表8:hal_entry入口函数

左右滑动查看完整内容

/* 用户头文件包含*/
#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 调试串口初始化
AGT_PWM_Init();// AGT 初始化
printf("这是一个AGT 的PWM 输出功能实验
");
printf("使用示波器测量P500 输出的PWM 波形
");
// LED1 闪烁指示程序正在运行...
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

下载验证

以野火启明6M5开发板为例,编译并下载程序后,复位开发板使程序重新运行,然后使用示波器测量P500引脚输出的PWM波形。实现现象如下。

图中PWM波形的频率为20KHz,占空比为80%:

2bdbb348-42b8-11f1-90a1-92fbcf53809c.png

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

    关注

    116

    文章

    5896

    浏览量

    226781
  • 瑞萨
    +关注

    关注

    38

    文章

    22523

    浏览量

    91403
  • 引脚
    +关注

    关注

    16

    文章

    2123

    浏览量

    56061
  • 开发板
    +关注

    关注

    26

    文章

    6440

    浏览量

    121239

原文标题:实验2:比较匹配功能(PWM输出)——瑞萨RA系列FSP库开发实战指南(104)

文章出处:【微信号:瑞萨嵌入式小百科,微信公众号:瑞萨嵌入式小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA系列FSP开发实战指南I2C读写EEPROM实验

    使用官方提供的FPS进行编程,官方提供的FPS
    的头像 发表于 01-27 10:02 3837次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>库</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>I2C读写EEPROM<b class='flag-5'>实验</b>

    RA系列FSP开发实战指南AGT低功耗定时器简介和结构框图

    RA MCU有两种定时器外设:GPT(General PWM Timer)定时器和AGT(Asynchronous General Pu
    的头像 发表于 04-30 16:47 6687次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>库</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b><b class='flag-5'>指南</b><b class='flag-5'>之</b><b class='flag-5'>AGT</b>低功耗定时器简介和结构框图

    RA系列FSP开发实战指南使用AGT进行脉冲宽度测量模式实验

    以野火启明6M5开发板例程为例,本实验需要使用两个引脚,使用的PWM输出引脚为额外引出的IO引脚为:P500;用于脉冲输入的测量引脚使用的开发
    的头像 发表于 05-08 10:33 247次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>库</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>使用<b class='flag-5'>AGT</b><b class='flag-5'>进行</b>脉冲宽度测量模式<b class='flag-5'>实验</b>

    e2studio(1)----芯片搭建FSP环境

    视频教学 样品申请 请勿添加外链 e2studio软件 e2studio是的集成开发环境,FSP 提供了众多可提高效率的工具,用于开发
    发表于 09-30 15:28

    RA-Eco-RA4M2开发板评测】+VS Code 下 RA4M2 开发环境搭建与 GPIO 点灯实验教程

    软件烧录芯片程序——RA系列FSP开发
    发表于 04-15 15:12

    RA4系列开发板体验】开发环境搭建和新手点灯指南

    RA4系列开发板体验】开发环境搭建和新手点灯指南
    发表于 11-24 22:54

    RA4系列开发板体验】10. 我的试用总结

    KEIL下UART实现printf与scanf重定向【RA4系列开发板体验】4. PWM
    发表于 12-10 22:34

    RA4系列开发板体验】体验过程

    拿到板子之后,做了几个实验过程,过程如下:1、在好奇心驱动下,逐步接触;参照网上的实例,学习开发环境一、开箱验货二、搭建环境参考“ 【
    发表于 12-18 16:20

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

    本篇文章主要介绍如何使用e2studio对单片机进行定时器AGT配置PWM输出
    的头像 发表于 11-15 11:31 2809次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>e2studio(13)----定时器<b class='flag-5'>AGT</b>配置<b class='flag-5'>PWM</b><b class='flag-5'>输出</b>

    【有奖直播预报名】电子RA系列产品开发工具FSP4.0.0新特性介绍

    为使用电子RA系列ARM微控制器的嵌入式系统设计提供简单易用且可扩展的高质量软件。 直播主题
    的头像 发表于 11-22 12:20 1739次阅读

    e2studio----定时器AGT配置PWM输出

    本篇文章主要介绍如何使用e2studio对单片机进行定时器AGT配置PWM输出
    的头像 发表于 11-11 18:37 2796次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>e2studio----定时器<b class='flag-5'>AGT</b>配置<b class='flag-5'>PWM</b><b class='flag-5'>输出</b>

    使用e² studio FSP基于RA2E1定时器配置PWM输出

    使用e² studio FSP基于RA2E1定时器配置PWM输出
    的头像 发表于 08-01 00:13 2286次阅读
    使用<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>e² studio <b class='flag-5'>FSP</b>基于<b class='flag-5'>RA</b>2E1定时器配置<b class='flag-5'>PWM</b><b class='flag-5'>输出</b>

    电子RA系列微控制器的可扩展性强的配置软件包 (FSP)安装下载与使用指南

    电子RA系列微控制器的可扩展性强的配置软件包 (FSP)安装下载与使用指南
    的头像 发表于 06-11 17:21 2298次阅读

    RA系列FSP开发实战指南使用GPT进行PWM输出实验

    本次实验需要使用到LED灯来展示定时的效果,LED灯具体的电路讲解请读者参考本教程:8.4.实验:使用寄存器点亮LED灯。
    的头像 发表于 04-24 10:45 259次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>库</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>使用GPT<b class='flag-5'>进行</b><b class='flag-5'>PWM</b><b class='flag-5'>输出</b><b class='flag-5'>实验</b>

    RA系列FSP开发实战指南使用AGT基本定时功能实验

    实验内容适用于野火启明6M5、启明4M2、启明2L1开发板。本实验较为简单,我们将使用AGT定时器进行定时并触发中断请求产生中断,然后通过
    的头像 发表于 05-08 10:26 121次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>库</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>使用<b class='flag-5'>AGT</b>基本定时功能<b class='flag-5'>实验</b>