【24电赛day3】DAC+DMA+TIM产生正弦波

STM32G431的ADC+DAC实战:手把手教你复现周期信号(附完整代码与避坑指南) 本文详细解析了STM32G431微控制器在ADC+DAC信号采集与波形复现中的实战应用。通过硬件设计、STM32CubeMX配置、信号处理算法及DAC输出优化等关键环节的深入讲解,帮助开发者高效实现周期信号的精确复现,特别适合电子设计竞赛和嵌入式开发项目。 阅读详情

#以下所有代码基于STM32G431CBU6和CubeMX联合开发

1.CubeMX配置

1.1打开RCC和SYS

RCC配置为HSE(外部高速时钟)里面的Crystal/Ceramic Resonater(晶振)

时钟树配置

1.2配置TIM2

更改时钟源(clock source)为internal clock,Trigger Event(触发事件)为update Event(更新事件),自动重装载寄存器(ARR)设置为85-1,因为主频170MHZ,170M/85-1+1=2M。选取100个数据点,2M/100为20KHZ的频率

1.3配置DAC和DMA

打开DAC1的OUT1并设置为仅连接到外部引脚,然后在参数设置中将触发(Trigger)改为TIM2输出事件触发,

然后跳转到DMA设置中进行如下配置

注意一定要为循环模式

1.4生成MDK文件或者其他

2.代码编写(写在begin end里面,以防刷新掉)

2.1相关常量宏定义

uint16_t SineWaveTable[100];
#define POINTS 100

2.2生成正弦波数据点函数

void SineWaveGen(uint32_t NPoints, float VMaxRange, uint16_t* SineWaveTable)
{
#ifndef PI
#define PI 3.14159265358979323846
#endif

	int    i       = 0;
	double radian  = 0;  // 弧度
	double setup   = 0;  // 弧度和弧度之间的大小
	double voltage = 0;  // 输出电压

	setup = (2 * PI) / NPoints;  // 两点之间的间距

	while (i < NPoints)
	{
		voltage = VMaxRange / 2.0 * (sin(radian) + 1.0);              // 计算电压
		SineWaveTable[i] = (uint16_t)(voltage * 4096 / 3.3);          // 电压转为DAC数值
		radian += setup;                                              // 下一个点的弧度
		i++;
	}
}

2.3主函数中调用

在while(1)循环前面进行开启操作

//产生20KHz,100mV电压的正弦波
	HAL_TIM_Base_Start(&htim2); 
    HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);
	SineWaveGen(POINTS,1,SineWaveTable);//无分频,重载值85,170M/85=20M,一周期100点20KMHz
	HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1, (uint32_t *)SineWaveTable, POINTS, DAC_ALIGN_12B_R);
//正弦波幅度在函数中进行更改,频率根据时钟树和定时器分频数和自动重装载值进行更改

 

Stm32G431时钟触发的DAC+OPAMP 这是一个卑微电子信息学员的开始 2月18日工作记录 这是学习stm32的第n天 寒假开始了,卑微电子信息学员开始了stm32的学习过程。 重做DAC 我发现在网上使用Stm32G系列的人很少,没有什么参考的例子 基础的DAC 使用的开发板:Stm32G431RB 简单的事物往往只需要简单的** 最简单的DAC // An highlighted block HAL_DAC_Start(&hdac1, DAC_CHANNEL_1); // 一句话完事,或者不设三角波,在使能DAC前设定输出值 HAL 阅读详情

相关推荐

Stm32G431时钟触发DAC+OPAMP实战:从零搭建波形发生器(附完整代码)

本文详细介绍了如何使用Stm32G431的DAC和OPAMP模块,结合时钟触发机制从零搭建波形发生器。通过硬件配置、软件实现到性能优化的完整流程,帮助开发者掌握嵌入式模拟信号处理技术,并提供完整代码示例,适用于信号处理、控制系统等应用场景。

weixin_29171129的博客 269

STM32G431RBT6学习笔记---DAC入门模块及ADC和DAC结合

DAC和ADC

qq_51659249的博客 1510

手把手教你用Stm32G431的DAC生成精密波形:从基础配置到OPAMP调优

本文详细介绍了如何使用Stm32G431的DAC模块生成精密波形,从基础配置到OPAMP调优的全过程。通过硬件准备、DAC通道配置、时钟触发与DMA传输实现动态波形,以及OPAMP的配置与优化技巧,帮助开发者实现高精度的模拟信号输出。适用于音频处理、传感器模拟和工业控制等场景。

weixin_29161785的博客 415

【已解决】STM32F407DAC+TIM触发+DMA进行语音输出,出现DMA下溢错误

STM32F407DAC+TIM触发+DMA进行语音输出,输出语音为四个字(开始和停止)

u013625320的博客 948

STM32G4示波笔设计:DAC+OPAMP高速波形输出实现

数字示波笔是嵌入式系统调试与电子教学中不可或缺的便携信号分析工具,其核心能力依赖于高精度ADC采样、低失真DAC波形生成及实时触发处理。基于STM32G4系列MCU的混合信号架构,可充分利用片内高速DAC与可编程运算放大器(OPAMP)协同工作,构建紧凑、低噪声、带宽达10MHz的模拟输出链路,显著降低BOM成本与PCB面积。该方案规避了外置运放带来的EMI与匹配难题,适用于电池供电的现场验证、传感器信号激励及模数混合原理教学等场景。本文聚焦于STM32G431KB6U平台下DAC1与OPAMP1的硬件连接

weixin_30248619的博客 288

STM32F407使用TIM DMA DAC实现播放FLAH中的WAV音乐

该示例实现从flash读取音频数据,提供DMA搬运DAC输出到扬声器。包括flash读写、DMA、DAC、WAV音频解析、音频文件制作(python生成)、flash烧录固件制作等

qq_18935435的博客 4009

FOC无感控制实战:从PWM配置到转子定位的工程落地指南

FOC(磁场定向控制)是永磁同步电机高效驱动的核心技术,其本质是通过坐标变换实现直流量解耦控制;无感控制则在不依赖编码器的前提下,利用反电动势或高频注入等电气特征实时估算转子位置。该技术的价值在于降低系统成本、提升可靠性,并支持小型化与高防护等级设计。典型应用场景包括电动工具、伺服驱动、新能源汽车电控及医疗设备等对体积、鲁棒性要求严苛的嵌入式系统。实际落地中,滑模观测器(SMO)与高频注入(HFI)的协同策略、PWM死区精度、ADC采样同步性等硬件级细节,往往比数学推导更能决定系统成败——这正是本文聚焦的真

weixin_34122810的博客 467

STM32G431 DAC与运放协同设计

本文深入探讨STM32G431内置DAC与OPAMP的协同应用,涵盖高精度模拟信号生成的关键技术,包括内部直连、输出驱动、触发机制与PCB布局优化,提升工业控制与传感器接口设计的可靠性与集成度。

5b6n7m8的博客 894

【STM32G4-FOC】(2)STM32G431之 TIM+ADC

本文介绍了使用STM32G431定时器触发ADC采样的实现方法。通过配置TIM1定时器产生1kHz触发信号,联动ADC启动转换,并利用DMA传输数据,实现了高精度定时采样。文章详细讲解了CubeMX工程配置步骤,包括时钟树设置、GPIO配置、ADC通道选择及定时器参数计算。重点说明了定时触发采样的硬件机制和时序关系,这种方案能有效提升系统的时间精度和稳定性,适用于电机控制等需要严格时序的应用场景。配置过程涵盖ADC工作模式、触发源选择及定时器参数设定,为嵌入式数据采集系统提供了可靠实现方案。

youcans的博客 2501

保姆级教学,教你在vscode和cursor上调试matlab!!!

保姆级教你如何在vscode或者cursor上面调试matlab

yang_upup的博客 2083

Cadence Allegro 17.4学习记录开始02-原理图Capture CIS 17.4

Allegro的第一方网表与第三方网表有以下几个区别点;Ø 与Allegro实现交互式操作的是第一方网表,第三方网表时不可以实现交互式操作;Ø 第三方网表不能将器件的Value属性导入到PCB中,输出时以封装属性来代替Value属性,第一方网表是可以的;Ø 网表导入到PCB中时,第三方的网表需要指定事先指定好PCB封装库文件,并产生Device文件,才可以将网表导入到PCB中,第一方网表则可以直接导入。

qq_31444421的博客 1万+

【动手学STM32G4】(13)STM32G431之 DAC进阶

本详细介绍了STM32G431RB微控制器的DAC应用开发,从基础到进阶逐步深入。实验内容包括:使用SysTick定时器实现基础DAC输出、定时器中断优化方案、以及DMA+TIM+DAC全硬件高级方案。文章详细讲解了DAC工作原理、配置方法及性能优化技巧,涵盖CubeMX工程配置、时钟设置、GPIO配置等关键步骤,并提供了完整的代码实现和调试方法。通过三个不同层次的实验方案,帮助开发者掌握从简单电压输出到专业级波形生成的DAC应用开发技术。

youcans的博客 1448

Windows Server远程桌面断开后,PyWinAuto/按键精灵脚本失效?试试这个‘会话保持’的终极配置

本文深入解析Windows Server远程桌面断开后导致PyWinAuto/按键精灵脚本失效的问题,提供会话保持的终极配置方案。通过转换到控制台会话(console模式)和调整组策略,确保自动化程序在断开连接后持续稳定运行,适用于Windows Server各版本。

weixin_28738165的博客 227

【动手学STM32G4】(6)STM32G431之DAC输出

本文介绍了STM32G431微控制器的DAC(数模转换器)模块应用实践。主要内容包括:1)硬件配置,通过CubeMX设置DAC1_OUT1通道(PA4引脚);2)软件实现,编写DAC初始化代码,支持数字量到0-3.3V模拟电压的转换;3)波形生成,实现方波、三角波和正弦波三种基本波形输出;4)系统验证,通过示波器直接观测波形质量,并使用ADC进行闭环验证。

youcans的博客 2065

HDR视频技术之七:逆色调映射

HDR 技术说是继 4K 之后视频领域的又一次重大技术突破,不仅提高图像的动态范围,同时也提供了更宽的色域,并提升了画面在高光和暗部的细节信息,带给观看者更加真实的视觉体验。但作为 HDR 产业链的核心,内容短缺的问题仍然是 HDR 普及和成熟的重要限制因素。众多电视厂商将 HDR 技术作为其产品规划中的重要技术,主要是在硬件方面进行提升。而由于 HDR 内容制作对于设备要求较高,对采集、调色、显示等多方面都需要较高的质量要求,内容制作的复杂度和周期长等因素,导致了 HDR 内容的匮乏。

多媒体开发者 2422

手把手学计科--web网页设计

网页的组成:文字、图像和超链接等元素。还可以包括哦音频、视频和动画。分类:静态(固定信息)和动态(与服务器数据库进行实时的数据交换。HTML和CSS 是一种静态网页搭建技术。

Yhvaely的博客 1747

第十三届蓝桥杯嵌入式备赛-STM32G431-进阶模块调试⑥DAC输出

这套教程针对于蓝桥杯嵌入式比赛的底层模块调试,针对于比赛进行每个模块的调试,低层模块调试好,对于赛题的实现就会方便很多,虽然有一些应试教育的意味,不过准备这个比赛对于程序整体实现思维还是有着很大帮助,我也从中受益颇多!

虚心好学的JLUer 1511

K230+canMV开发中常见的数据类型转换参考示例

【代码】K230+canMV开发中常见的数据类型转换参考示例。

weixin_47446386的博客 67

STM32CubeMX | STM32使用DAC+DMA+TIM生成10KHz正弦波

STM32CubeMX | STM32使用DAC+DMA+TIM生成10KHz正弦波 目录STM32CubeMX | STM32使用DAC+DMA+TIM生成10KHz正弦波前言工程配置时钟配置到72M主频:配置DAC配置DMA配置定时器 工程环境: STM32F103RC KEIL MDK 5.20 STM32CubeMX 6.0 前言 开始教程之前先回顾一下初中学过的三角函数相关内容。 正弦波曲线的函数公式是:y=sin(x) y的范围区间是[-1:1] x的取值范围是任意实数

^_^ 1万+

【定位模块项目实战】正态分布变换(NDT)定位及建图(依赖高精度点云地图和三维激光雷达的定位方案)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、正态分布变换(NDT)定位解决的主要问题二、正态分布变换(NDT)定位的核心思想三、NDT算法流程1.多元正态分布概念2.网格化并计算正态分布参数3.变换参数和最大似然四、使用C++实现NDT配准参考资料 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对依赖高精度地图和激光雷达的定位技术–正态分布变换(NDT)定位做个简单的介绍,具体

qq_35635374的博客 4411

TRON 主网节点搭建-2024最新详细版文档

TRON主网节点搭建以前,大概说明一下本次使用的服务器配置,本次从搭建部署到节点完成同步的时间大约为36小时。

J_Lee 4057

【STM32+HAL】DAC+DMA输出波形实现

STM32配置DAC+DMA输出

缺积分下载资源的可以私信我或在评论区留言邮箱号 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记12:DAC数模转换

DAC是将数字量转化成模拟量的器件,我们可以通过编程来实现输出某个特定的电压值,也就是模拟量。STM32G4内部集成了一个DAC模块,我们通过对STM32的编程就可以实现在它的特定的管脚上输出一个特定的电压,当然这个电压是可以通过我们的程序进行变化的,比如我们可以让他输出一个三角波或者正弦波都是可以的,只要在0-3.3V的范围之内就可以。当然,DAC输出也会受限于内部DAC器件的位数和精度。这一节的重点在于要知道DAC的接口PA4、PA5,以及它是12位的右对齐,知道要配置外部引脚输出,还要会写。

weixin_44800059的博客 2138

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

stm32中利用TIM+DMA+DAC产生10kHz正弦波

设置定时器定时周期,时间到了定时器就溢出(称为定时器更新事件),就会立马把一个数据传输到DAC,因此传输一个点的时间为Tupdate,而一个正弦波是由50个点组成,输出50个点需要的时间为Tupdate*50,这个时间就等于。定时周期:Tupdate= T1*(ARR+1) //计数计到ARR+1后溢出。//打开DAC的通道1。选择触发源为更新时间触发(定时器溢出),定时时间到了以后就会输出触发信号。实验可知:32个数据点就可以得到一个完整的波形,这里选择50个;

m0_47106200的博客 1163

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【HAL】stm32F103 DAC+DMA+TIM6查表法产生正弦波

一、平台 二、配置 1、DAC的配置 输出缓冲Output Buffer建议关闭。DAC的输出缓存可以用来减小输出阻抗,无需外部运放即可直接驱动外部负载。但输出不能达到0(会出现底部失真),不推荐开启。具体参考官方手册,缓冲器打开时低端的DAC输出电压大概0.2V(不同型号可能不同,暂未考证) 2、DMA的配置 DMA的工作模式:Circular 3、TIM6的配置 定时器的配置决定了...

qq_21246169的博客 1万+

STM32 触摸式低频信号发生系统(DAC+DMA+TIM配置)(码表配置)#触摸屏识别

该系统在以ARMCortex-M4为处理器的嵌入式芯片STM32开发板下运行。系统通过TFT-LCD电阻触摸屏作为人机交互的方式和信号的输入方式,输入的消息在屏幕上实时可见。基于嵌入式的触摸式低频信号发生系统V1.0能过通过引脚,输出频率从1Hz到200KHz的正弦信号、三角信号、矩形信号。其中,矩形信号能够调节占空比从10%至90%。

m0_55105566的博客 1172
上一篇: 【电赛day1】G题,麦克风IIS协议读取数据
下一篇: 【电赛】第一次电赛省二结束
Linzaii
博客等级 码龄4年 364粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Linzaii

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

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

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

打赏作者

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

抵扣说明:

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

余额充值