STM32F103的DAC功能完成波形输出,用示波器观察波形,并用蜂鸣器或手机耳机收听输出声音效果、感受歌曲的音质差异。

一、DAC简介

数模转换器,又称D/A转换器,简称DAC,它是把数字量转变成模拟的器件。D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。模数转换器中一般都要用到数模转换器,模数转换器即A/D转换器,简称ADC,它是把连续的模拟信号转变为离散的数字信号的器件。
采用于百度百科.

二、输出一个周期2khz的正弦波

本文示例程序采用于野火的STM32F103指南者DAC输出正弦波的示例程序

1、修改周期计算

我们可以通过工程里的正弦波点数和定时器配置生成特定频率的正弦波,这里我们需要输出一个周期为2kHz的正弦波,通过计算公式,我们可以得到,一共需要3600个采样点
在这里插入图片描述
在这里插入图片描述
打开修改为:

%用于产生正弦数据表,输出到文件dac_sinWave.c 文件中,复制到c语言数组即可

n = 2*pi/3600 : 2*pi/3600 : 2*pi      %分成3600等份

a = sin(n)+1;                     %求取sin函数值并向上平移一个单位,消除负数值
a = a * 3.3/2;                    %调整幅值,使范围限制为0~3.3   
r = a* (2.^12) /3.3               %求取dac数值,12位dac LSB = 3.3/2.^12 
r = uint16(r);                     %double型数据转化成16位整型数据 

for i = 1:32                        
if r(i) > 4095                      %限制数据最大不超过4095
    r(i) = 4095
end
end 

dlmwrite('dac_sinWave.c',r);      %把数据写入到文件,方便添加到stm32工程中
plot(n,r,'.')                     %把这些点画出来 

打开MATLAB运行此程序,就会将3600个点生成到这个文件。
在这里插入图片描述

2、修改keil程序

进入工程后,我们需要找到存放数据的数组,将我们之前取到的3600个采样点,放进去
在这里插入图片描述
修改main

int main(void)
{
			/*DAC初始化*/
	 while(1)
		{	
			DAC_Mode_Init();

}
  	  
}

2、硬件连接

指南者开发板DAC输出通道为PA4和PA5,所以我们可以使用这两个引脚来观测输出波形
在这里插入图片描述
注意: PA5 引脚连接到 FLASH 芯片的 CLK 引脚中,这可能会干扰 DAC 实验输出的电压信 号,导致得不到正确的波形。所以DAC 和 SPI-FLASH 不能同时使用。

3、效果展示

在这里插入图片描述
在这里插入图片描述
以听到滴滴滴的声音,因为频率太小,所以蜂鸣器发生可能听不清,只有很小的声音

三、将一段数字音频歌曲数据转换为模拟音频波形输出

1、音频剪辑

打开音频剪辑器,选着片段建议时长仅仅5~10秒
在这里插入图片描述
设置采样8khz,量化16bit,单通道
在这里插入图片描述

2、转码

在这里插入图片描述

3、修改keil工程文件

在这里插入图片描述
硬件连线与前面一样。

4、效果展示

在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32F103ZET6是一款常用的ARM Cortex-M3微控制器,具有高性能和低功耗的特点。示波器是一种测量电信号波形的工具,可以用于调试和验证电路设计,其中包括STM32芯片。本文介绍如何使用示波器显示STM32F103ZET6的波形。 首先,需要准备以下材料: - STM32F103ZET6开发板 - 示波器 - 外部信号源 接着,连接外部信号源到STM32开发板的ADC输入引脚。编程时需要确保ADC输入引脚设置正确,以便将采样值发送到示波器。 接下来,在STM32上编写代码来读取ADC输入引脚的模拟值。此处有多个方法,包括使用STM32的内置ADC模块或使用外部ADC芯片。选择哪个方式将取决于具体的应用需求和示波器的采样要求。需要注意的是,要注意时序和采样周期等参数。 一旦STM32可以读取ADC采样值,可以使用串行通信接口(如UART或SPI)将数据传输到示波器。然后,示波器可以将这些采样值解码为波形并显示在屏幕上。 需要注意的是,确保示波器STM32之间的通信接口正确连接和配置,以便正确发送和接收数据。 通过以上步骤,就能够实现将STM32F103ZET6的波形显示在示波器上了。在实际应用中,需要根据具体需求进行细节调整和优化。 ### 回答2: STM32F103ZET6是一种基于ARM Cortex-M3架构的微控制器,它具有高性能、低功耗和丰富的外设资源,特别适用于嵌入式系统设计。使用示波器来显示波形可以有效地调试和测试STM32F103ZET6开发板的各种应用场景。 首先,在配置STM32F103ZET6开发板之前,我们需要安装和配置示波器软件。常用的示波器软件有PC端和单片机端两种类型。PC端软件主要包括Oscilloscope、LabVIEW和Matlab等,单片机端软件主要包括ADC采样和UART通信等方式。在选择示波器软件时,需要根据具体应用场景和需求进行选择。 其次,在进行示波器的连接和配置时,需要注意以下几个方面。首先,需要正确连接开发板和示波器的通信线路,包括地线、信号线和电源线等。其次,需要设置好示波器的采样率和触发方式,根据具体应用场景和波形特征进行选择。最后,需要编写相应的程序代码,将STM32F103ZET6的数据传输到示波器上进行显示。 使用示波器来显示波形可以应用于各种实际应用场景中,如教育、研究、工程设计和产品测试等。对于STM32F103ZET6开发板而言,示波器可以用于检测和调试各种外设资源的工作情况,例如液晶屏、蜂鸣器、LED灯和电机等,并且可以通过波形分析和诊断来找到潜在的故障和问题。 总之,STM32F103ZET6利用示波器显示波形具有重要的应用价值和实用性,可以帮助工程师和技术人员更加容易地开发和调试STM32F103ZET6开发板及相关应用。 ### 回答3: STM32F103ZET6是一款性能强大的ARM Cortex-M3内核微处理器,适合在各种电子设备中使用。示波器是一种电子测试仪器,用于显示信号波形的形状和各种特征,可以检测电路中的信号是否符合设计要求。 想要利用示波器STM32F103ZET6上显示波形,我们需要进行以下几个步骤: 1. 准备示波器:首先需要确定所用示波器的通信协议,常用的通信协议有UART、SPI和I2C等。一般示波器都有提供相应的通信协议,我们需要按照示波器的说明文档连接示波器STM32F103ZET6,并且正确设置通信协议和参数。 2. 配置STM32F103ZET6:在STM32F103ZET6上显示波形,我们还需要进行STM32F103ZET6的配置工作。这里我们需要用到STM32F103ZET6开发板自带的开发环境,例如Keil等。操作步骤如下: (1)在开发环境中创建一个新项目,并选择STM32F103ZET6作为芯片,配置芯片的时钟、GPIO等参数; (2)编写程序,使用相应的通信协议与示波器进行通信,获取示波器采集的波形数据; (3)对波形数据进行处理,调整幅值和时序等参数; 3. 显示波形:当获取处理好波形数据之后,我们可以选择将波形数据通过串口等方式输出,或者使用LCD、OLED等显示屏直接显示,这样我们就可以得到所需的波形图了。 需要注意的是,在这个过程中,由于不同示波器的通信方式和协议不同,所以具体的操作步骤和参数也可能会有所不同,需要仔细阅读示波器的说明文档和数据手册,并按照说明进行操作。同时,在STM32F103ZET6的配置过程中,也需要确保程序的正确性和稳定性,避免出现程序运行错误或崩溃等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值