e2studio开发RA4M2.10--定时器AGT输出PWM
- 概述
- 视频教学
- 样品申请
- 硬件准备
- 参考程序
- 源码下载
- 选择计时器
- 新建工程
- 工程模板
- 保存工程路径
- 芯片配置
- 工程模板选择
- 时钟设置
- SWD调试口设置
- GPIO口配置
- AGT定时器
- AGT定时器属性配置
- 初始化AGT
- 启动AGT PWM模块
- AGTIO 和 AGTO
- 演示
概述
AGT模块是RA MCU(微控制单元)系列中的一个定时器外设,提供灵活的计时和事件捕获功能,能够满足多种应用场景中的定时和控制需求。它支持16位和32位定时器,并具有多种工作模式,适用于需要高精度时间控制和事件捕获的应用。 它广泛应用于定时控制、信号测量、PWM 生成等应用,尤其适用于电机控制、LED 调光、PWM 伺服驱动和 ADC 触发等场景。
最近在瑞萨RA的课程,需要样片的可以加qun申请:925643491。
视频教学
https://www.bilibili.com/video/BV1EjNmeKEmL/
e2studio开发RA2E1(10)----定时器AGT输出PWM
样品申请
https://www.wjx.top/vm/rCrkUrz.aspx
硬件准备
首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。
主控为R7FA4M2AD3CFL#AA0
参考程序
https://github.com/CoreMaker-lab/RA4M2
https://gitee.com/CoreMaker/RA4M2
源码下载
选择计时器
RA MCU 有两个定时器外设:通用 PWM 定时器 (GPT) 和异步通用定时器 (AGT)。
新建工程
工程模板
保存工程路径
芯片配置
本文中使用R7FA4M2AD3CFL#AA0来进行演示。
工程模板选择
时钟设置
开发板上的外部高速晶振为12M.
需要修改XTAL为12M。
SWD调试口设置
GPIO口配置
这里配置P100和P500为PWM口。
查看可视化界面可以得知,对应的是AGT0。
AGT定时器
操作 “New Stack > Timers >Timer, Low-Power (r_agt)” 在项目中添加APT定时器的多通道操作功能,特别是用于生成PWM信号或单次脉冲信号。
AGT定时器属性配置
● Pin Output Support:设为 Enabled,允许AGT将PWM信号输出到外部引脚。
● Name:设置为 g_timer0,这是该AGT定时器的唯一标识符,用于在代码中引用此定时器实例。
● Counter Bit Width:设为 AGT 16-bit,表示该定时器为16位定时器,可进行16位计数。
● Channel:设为 0,表示使用定时器通道 0。
● Mode:设为 Periodic,表示定时器工作在周期模式,会周期性地重复计数。
● Period:周期值设置为 1,表示每个周期的时间间隔为 1。
● Period Unit:单位选择为 Kilohertz(千赫兹),表示周期单位为千赫兹。
● Count Source:设为 PCLKB,表示定时器使用 PCLKB 时钟源进行计数。
● Duty Cycle Percent (only applicable in PWM mode):设为 50,表示在PWM模式下,输出的占空比为50%。
● AGTOA Output:设为 Start Level Low,表示 AGTOA 引脚的初始电平为低。
● AGTOB Output:设为 Disabled,表示禁用 AGTOB 输出。
● AGTO Output:设为 Start Level Low,表示 AGTO 引脚的初始电平为低。
● AGTIO00:连接到 P100 引脚,表示定时器的计数信号输出连接到该引脚。
● AGTIO01:未连接。
● AGTIOA0:连接到 P500 引脚,表示定时器的PWM信号输出连接到该引脚。
初始化AGT
R_AGT_Open() 函数用于初始化 AGT 模块实例,它实现了 timer_api_t::open 接口。这个函数为 AGT 定时器配置了参数并启动定时器。
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);
启动AGT PWM模块
R_AGT_Start() 函数用于启动 AGT 模块定时器。它实现了 timer_api_t::start 接口。调用该函数后,定时器开始计时。
/* Start the timer. */(void) R_AGT_Start(&g_timer0_ctrl);
AGTIO 和 AGTO
AGTIO 和 AGTO 是与 AGT(异步通用定时器)相关的输出引脚,主要用于在定时器工作时输出与定时器计数器状态相关的信号。
AGTIO 和 AGTO的输出引脚每次周期结束时会翻转一次。在一次性模式下,输出是通过翻转产生脉冲的。
演示
AGTOA0输出1k占空比50%的PWM。
AGTIO0输出500Hz占空比50%的PWM。