基于瑞萨RA2L1的波形生成系统设计:DTC、AGT与DAC的协同应用
2026-04-09
这是一个空的段落。
在开发与测试中,稳定、精确的测试生成是一项常见且关键的需求。传统方法依赖于实时计算并搬运数据,这会持续占用资源,增加系统功耗,并可能影响主程序的实时性。为解决这一问题,本文介绍一种利用RA2L1()的、DTC和AGT三个外设模块协同工作的解决方案。该方案能够以极低的CPU参与度,高效生成正弦波、三角波等多种标准波形,为需要信号输出的应用提供了一种高性能、低功耗的设计范例。
核心模块
DTC(数据传输)模块
DTC(Data Transfer Controller)模块根据传输信息进行数据传输,需要先在S区域存储传输信息。DTC被激活时,会读取与向量号相关联的DTC向量,从DTC向量中引用的传输信息存储地址读取传输信息并进行数据传输。
传输模式包括普通传输模式(Normal transfer mode)、重复传输模式(Repeat transfer mode)和块传输模式(Block transfer mode)。DTC在DTC传送源(SAR)中指定传输源地址,在DTC传送目标寄存器(DAR)中指定传输目的地址。在数据传输后,这些寄存器的值可以独立地增减或保持不变。
AGT(低功耗异步通用)模块
AGT(Low Power Asynchronous General Purpose mer)模块是一个灵活的16位定时器,可在低功耗模式下运行。在本设计中,它被配置为周期定时模式,用于产生固定时间间隔的中断。这些中断信号作为“触发源”,定期激活DTC,从而精确控制DAC输出每个数据点的时间间隔,决定了最终输出波形的频率。
DAC()模块
RA2L1提供一个带输出的12位数模转换器(DAC12),由AVCC0和AVSS0提供模拟电源及模拟参考电压源,输出引脚为DA0。DAC12的D/A数据寄存器0(DADR0)适用于存储数模转换数据的16位读/写寄存器,启动模拟输出后,DADR0中的数值会被转换并输出到模拟输出引脚(DA0)中。
系统设计方案
系统架构

图1.系统架构
DAC模块:负责最终的数模转换与电压输出。
AGT模块:作为系统的“节拍器”,产生固定周期的中断来触发数据传输。
DTC模块:作为“数据搬运工”,在每次AGT中断时,自动将LUT中的下一个数据点送至DAC。
波形查找表
波形查找表机制
两种波形的数据都预先计算并存储在查找表(LUT)中。系统运行时,DTC模块按固定时间间隔依次读取表中数据并传输到DAC寄存器,实现波形的周期性输出。这种方式避免了实时计算,大幅降低CPU负载。
正弦波查找表
使用余弦函数计算一个完整周期(T=input_spp)的采样点数据。通过cos(2πi/input_spp)计算每个采样点的瞬时值(i=0,1,˴˴˴,input_spp-1)。由于余弦函数输出范围是[-1,1],需要加1后乘以DAC中间值((DAC_MID_VAL),将其映射到DAC的有效输出范围(0~4095)。采样点数越多,生成的波形越平滑。
正弦波查找表函数
左右滑动查看完整内容
voidgenera_sin(void){ /* Calculate look up table for sin function */ for(int i=0; i< input_spp; ++i) { look_up_table[i] = (uint16_t)


三角波查找表
采用分段线性计算方式。前半周期线性递增,从0上升到最大值;后半周期线性递减,从最大值下降到0,形成对称的三角波形。计算公式基于当前采样点位置与总采样点数的比例关系,通过简单的线性插值即可得到每个点的输出值。
三角波查找表函数


软件流程


图2. 主流程
系统时序

图3.系统时序图
开发环境
表1 开发环境
项目 | 内容 |
所用微控制器 | RA2L1(R7FA2L1AB2) |
工作频率 | HOCO:48MHz,PCLKB:24MHz |
工作电压 | 3.3V(工作电压范围1.6V~5.5V) |
开发板 | CPK-RA2L1 MCU评估板(LQFP64) |
集成开发环境 | e2studio v2025-07(瑞萨电子开发) FSP v6.0.0 LLVM for v18.1.3 |
BSP文件 | Rene.RA_board_ra2l1_cpk.3.7.0.pack |
硬件配置

图4.硬件配置示例
参考例程
为便于读者快速上手,本文提供了一个完整的波形生成参考例程。该例程实现了正弦波和三角波的生成与切换功能,读者可以在此基础上进行测试、二次开发和功能扩展。

例程操作说明
硬件准备
参考例程使用的是瑞萨中国本地推广板CPK-RA2L1 MCU评估板(LQFP64),如图5所示。开发板调试为J11,波形输出(P014)从J2的n 21引出(见图5中红框)。

图5.CPK-RA2L1 MCU评估板(LQFP64)
工程配置
由于例程中使用的开发板为CPK开发板,因此在首次使用时需要导入BSP文件,导入方法见《向FSP中添加CPK评估板的BSP》。导入BSP文件后可选择CPK-RA2L1评估版,请确认configuration.xml中的BSP信息与图6一致。
向FSP中添加CPK评估板的BSP
https://www.renesas.cn/zh/document/gde/fsp-cpk-bsp?r=1596841

图6.参考例程中BSP信息
编译与烧录:
确认BSP信息无误后即可对工程进行编译,烧录到开发板中并运行程序。
交互控制
打开J-Link RTT Viewer,选择连接方式,将“Specify Target Device”设定为“R7FA2L1AB”,“RTT Control Block”选择为“Auto Detection”,点击“OK”后即可连接到开发板。

图7.J-Link RTT Viewer配置信息
成功连接到开发板后可看到如图8的工程信息,包括工程版本、FSP版本、例程说明等等。

图8.J-Link RTT Viewer工程信息显示
如图9所示,用户需要对J-Link RTT Viewer中发送数据的方式进行以下设置。

图9.J-Link RTT Viewer输入设置
参照图8中的提示,用户输入“0”可以选择生成正弦波,输入“1”可以选择生成三角波,首先输入“0”选择正弦波输出,如图10所示。

图10.选择正弦波输出
根据图10中的信息,下一步需要输入期望采样点数,注意输入值需要在2到256之间。

图11.输入期望采样点数
最后需要输入期望输出波形频率,注意波形频率的最大值已根据期望采样点数计算得出,因此输入的期望频率需要小于最大波形频率。

图12.输入期望频率
波形观测
图13为输入“0”后生成采样点为256,频率为100Hz的正弦波输出结果。

图13.正弦波输出结果
图14为输入“1”后生成采样点为256,频率为100Hz的三角波输出结果。

图14.三角波输出结果
代码说明
常量一览
例程中所用常量见表2。
表2 常量说明
常量名称 | 数值 | 说明 |
SPP_MIN_VAL | 2 | 最小采样点数 |
SPP_MAX_VAL | 256 | 最大采样点数 |
DAC_MID_VAL | 2047.5 | 波形放缩系数 |
DADR0 | 0x4005E000 | DADR0 寄存器地址 |
DAC_MAX_ CONVERSION_PERIOD | 30 | DAC最大采样周期 |
变量一览
例程中所用变量见表3。
表3 变量说明
类型 | 变量名称 | 内容 |
uint16_t | look_up_table [SPP_MAX_VAL] | 波形查找表 |
uint16_t | input_spp | 用户期望采样点数 |
uint32_t | input_freq | 用户期望输出波形频率 |
uint32_t | wave_output | 用户期望输出波形类型 |
double | sample_freq | DAC采样频率 |
uint32_t | freq_max_val | 最大输出频率 |
double | dac_max_samp_rate | DAC最大采样率 |
函数一览
例程中所用函数见表4。
表4 函数说明
类型 | 内容 |
R_FSP_VersionGet() | 获取FSP版本 |
R_IOPORT_PinCfg() | 配置引脚设置 |
R_DAC_Open() | 初始化DAC |
R_DAC_Start() | 开启数模转换输出 |
R_DTC_Open() | 启用DTC |
R_DTC_Enable() | 启用传输 |
R_AGT_Open() | 初始化AGT |
R_AGT_Start() | 启动定时器 |
R_DTC_Reconfigure() | 配置DTC |
R_FSP_SystemClockHzGet() | 获取系统频率 |
R_AGT_PeriodSet() | 更新AGT周期 |
generate_sin() | 生成正弦波波形查找表 |
generate_triangle() | 成三角波波形查找表 |
结语
本文详细阐述了基于RA2L1 MCU的硬件协同波形生成方案。通过巧妙运用AGT定时触发、DTC自动搬运、DAC转换输出三者形成的“硬件流水线”,成功将CPU从频繁的数据搬运任务中解放出来,实现了极低的处理器占用与功耗。预存波形查找表的方法不仅保证了输出,也预留了强大的扩展能力,可轻松支持方波、锯齿波或任意自定义波形。
该设计理念突出了利用MCU丰富外设实现功能卸载、优化系统效率的设计思想。读者可基于提供的参考例程,快速进行原型验证,并灵活调整采样率、输出频率及波形种类,以满足各类嵌入式应用中对模拟信号生成的需求。
- 瑞萨电子下一代 R-Car 汽车技术采用 Arteris 片上网络 IP
- 瑞萨电子推出全新GaN充电方案, 为广泛的工业及物联网电子设备带来500W强劲功率
- 瑞萨电子推出首款650V双向GaN开关, 标志着功率转换设计规范的重大变革
- 瑞萨开发多域ECU SoC关键技术 强化芯片组与功能安全
- 瑞萨推出3nm可配置TCAM 面向汽车SoC应用
- 新品!瑞萨RZ/T2H驱控一体单芯、多轴实时控制,助力工业以太网
- 瑞萨电子宣布Renesas 365全面上市
- 瑞萨电子推出RH850/U2C汽车控制器
- 恩智浦/瑞萨/TI集体出手!中央计算架构,开启车载芯片终极决战
- 瑞萨电子推出28纳米RH850/U2C汽车微控制器
- 行业评论 从工具到平台:如何化解跨架构时代的工程开发和管理难题
- 海光双芯“亮剑”:发布“内生安全”技术,冲刺万亿参数大模型训练
- Teledyne e2v 启动面向宇航应用的16GB DDR4X1飞行正片的量产
- 中国芯片研发重要成果!中科院发布香山、如意系统
- AMD 披露 Zen 6 架构细节,强化硬件级 QoS 管控
- 铠侠创新存储方案,释放AI智存新潜力
- 惠普DeskJet 2622打印机拆解:内部芯片与结构详解
- AI时代数据安全的终极答案:海光“内生安全”护航智能体
- MTT AIBOOK:预装“龙虾”,开机即用
- We are given that \(B\) is the midpoint of \(\overline{AC}\) and \(C\) is the midpoint of \(\overline{BD}\). We need to prove that \(AD = 3AB\). ### Proof 1. **Given:** \(B\) is the midpoint of \(\o




