news 2026/4/2 23:55:58

基于MCU的波形生成系统设计!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于MCU的波形生成系统设计!

来源 | 瑞萨嵌入式小百科

引言

在嵌入式系统开发与测试中,稳定、精确的测试信号生成是一项常见且关键的需求。传统方法依赖于CPU实时计算并搬运数据,这会持续占用处理器资源,增加系统功耗,并可能影响主程序的实时性。为解决这一问题,

本文介绍一种利用瑞萨RA2L1微控制器(MCU)的DAC、DTCAGT三个外设模块协同工作的解决方案。该方案能够以极低的CPU参与度,高效生成正弦波、三角波等多种标准波形,为需要模拟信号输出的应用提供了一种高性能、低功耗的设计范例。

核心模块

DTC(数据传输控制器)模块

DTC(Data Transfer Controller)模块根据传输信息进行数据传输,需要先在SRAM区域存储传输信息。DTC被激活时,会读取与向量号相关联的DTC向量,从DTC向量中引用的传输信息存储地址读取传输信息并进行数据传输。

传输模式包括普通传输模式(Normal transfer mode)、重复传输模式(Repeat transfer mode)和块传输模式(Block transfer mode)。DTC在DTC传送源寄存器(SAR)中指定传输源地址,在DTC传送目标寄存器(DAR)中指定传输目的地址。在数据传输后,这些寄存器的值可以独立地增减或保持不变。

AGT(低功耗异步通用定时器)模块

AGT(Low Power Asynchronous General Purpose Timer)模块是一个灵活的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)。采样点数越多,生成的波形越平滑。

正弦波查找表函数

左右滑动查看完整内容

voidgenerate_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(R7FA2L1AB2DFM)

工作频率

HOCO:48MHz,PCLKB:24MHz

工作电压

3.3V(工作电压范围1.6V~5.5V)

开发板

CPK-RA2L1 MCU评估板(LQFP64)

集成开发环境

e2studio v2025-07(瑞萨电子开发)

FSP v6.0.0

LLVM for ARM v18.1.3

BSP文件

Renesas.RA_board_ra2l1_cpk.3.7.0.pack

RA2L1 - 48MHz Arm Cortex-M23超低功耗通用微控制器 | Renesas瑞萨电子

https://www.renesas.cn/zh/products/ra2l1?queryID=0135065201ac0d335ce3d718259fb7b4

CPK-RA2L1 - RA2L1 MCU群组中国本地评估板 | Renesas瑞萨电子

https://www.renesas.cn/zh/design-resources/boards-kits/cpk-ra2l1?queryID=7488f1b4dfae70a40b8d81382c878554

e²studio | Renesas瑞萨电子

https://www.renesas.cn/zh/software-tool/e2-studio?queryID=c68ed897f8fb82511bedafe733272066

RA可扩展性强的配置软件包(FSP) | Renesas瑞萨电子

https://www.renesas.cn/zh/software-tool/ra-flexible-software-package-fsp?queryID=a5545772de53314f3a65441b56a71922

硬件配置

图4.硬件配置示例

参考例程

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

dac_cpkcor_ra2l1_ep.zip

https://e.gitee.com/recn-mcu-ae/repos/recn-mcu-ae/dac_cpkcor_ra2l1_ep/sources

gitee下载链接

https://e.gitee.com/recn-mcu-ae/repos/recn-mcu-ae/dac_cpkcor_ra2l1_ep/sources

例程操作说明

硬件准备

参考例程使用的是瑞萨中国本地推广板CPK-RA2L1 MCU评估板(LQFP64),如图5所示。开发板调试接口为J11,波形输出端口(P014)从J2连接器的Pin 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,选择USB连接方式,将“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丰富外设实现功能卸载、优化系统效率的嵌入式设计思想。读者可基于提供的参考例程,快速进行原型验证,并灵活调整采样率、输出频率及波形种类,以满足各类嵌入式应用中对模拟信号生成的需求。

------------END------------

单片机将常量数据放在指定位置的小技巧

卷王?2025年瑞萨RA家族推出了10个系列MCU~

一颗LED也能“翻”出新花样

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/13 7:30:55

假新闻检测数据集_44898条新闻文本数据用于机器学习与自然语言处理研究-训练和评估假新闻检测模型,开发自然语言处理算法,以及构建智能内容审核系统-理解虚假信息的语言特征、传播模式和识别方法

假新闻检测数据集&#xff1a;44898条新闻文本数据用于机器学习与自然语言处理研究 引言与背景 随着数字媒体的快速发展&#xff0c;信息传播的速度和规模前所未有&#xff0c;但同时也带来了虚假信息泛滥的严峻挑战。假新闻检测数据集是一个专门为应对这一挑战而构建的高质量…

作者头像 李华
网站建设 2026/3/12 20:00:41

Flutter艺术探索-Flutter自动化测试:集成测试与Widget测试

Flutter自动化测试&#xff1a;集成测试与Widget测试深度指南 引言&#xff1a;为什么Flutter测试至关重要 如今&#xff0c;Flutter凭借其出色的跨平台能力和高效的开发流程&#xff0c;已经成为移动应用开发的主流选择之一。但随着应用功能变得越来越复杂&#xff0c;团队规模…

作者头像 李华
网站建设 2026/3/31 5:14:33

LangChain4j 踩坑实录:AI 工具调用流式开发,TokenStream 才是正确选择

在基于 LangChain4j Spring Boot 开发AI代码生成平台的过程中&#xff0c;主要想实现Vue项目带工具调用的流式生成能力&#xff0c;比如自动写入项目文件、构建打包&#xff0c;同时通过响应式流向前端推送实时进度。 但是&#xff0c;在前端调试时&#xff0c;出现了以下错误…

作者头像 李华
网站建设 2026/3/31 9:41:44

曹操出行进行配售:募资总额3.9亿港元

雷递网 乐天 2月2日曹操出行&#xff08;02643.HK&#xff09;日前进行配售&#xff0c;配售价32.46港元&#xff0c;拟配售1200万股&#xff0c;预计募资总额3.9亿港元&#xff1b;扣除发行应付费用&#xff0c;募资净额3.83亿港元。最多12,000,000股配售股份相当于本公告日期…

作者头像 李华
网站建设 2026/3/13 5:25:05

软件工程毕业设计最新选题答疑

文章目录&#x1f6a9; 1 前言1.1 选题注意事项1.1.1 难度怎么把控&#xff1f;1.1.2 题目名称怎么取&#xff1f;1.2 选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢&#xff1f;&#x1f6a9;2 选题概览&#x1f6a9; 3 项目概览题目1 : 大数据电商用户行为…

作者头像 李华