stm32 ADC采集音频信号

文章讲述了在STM32F103平台上使用ADC进行音频信号采集的过程,包括ADC功能介绍、GPIO和DMA的配置,以及遇到的问题——串口显示的波形异常。作者提到LCD屏显示正常,但通过串口打印时只有上升数据,需进一步排查原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:最近在做一个关于采集音频信号的小项目,在这里做下记录和总结

1、实现的功能

最终我们需要的功能是:通过ADC模块对音频信号进行采集,利用DMA进行数据的搬运,TIMER定时器触发ADC采集,最终在LCD屏幕上展示出采集信号的波形。
**ADC模块**

最终效果就是这种。
在这里插入图片描述
文章中我没有用到TIMER定时器触发采集,用的是软件触发的方式,屏显我选择了VOFA+软件进行代替。

2、ADC简介

ADC是Analog to Digital Convert的简称。翻译过来也就是模数转换器,它可以将模拟信号转换为数字信号。
什么是模拟信号呢?
模拟信号是指用连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,或在一段连续的时间间隔内,其代表信息的特征量可以在任意瞬间呈现为任意数值的信号。日常生活中,我们常见的模拟信号有,如电压、温度、压力、电压、电流等等。
什么是数字信号呢?
数字信号,是指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示。在计算机中,数字信号的大小常用有限位的二进制数表示。
STM32F103 系列芯片拥有 3 个 ADC(C8T6 只有 2 个),这些 ADC 可以独立使用,其中ADC1 和 ADC2 还可以组成双重模式(提高采样率)。STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有 18 个通道,可测量 16 个外部和 2 个内部信号源,其中 ADC3 根据 CPU 引脚的不同其通道数也不同,一般有 8 个外部通道。ADC 中的各个通道的 A/D 转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以以左对齐或者右对齐存储在 16 位数据寄存器中。
STM32F103 的 ADC 主要特性我们可以总结为以下几条:
1、12 位分辨率;
2、转换结束、注入转换结束和发生模拟看门狗事件时产生中断
3、单次和连续转换模式
4、自校准
5、带内嵌数据一致性的数据对齐
6、采样间隔可以按通道分别编程
7、规则转换和注入转换均有外部触发选项
8、间断模式
9、双重模式(带 2 个或以上 ADC 的器件)
10、ADC 转换时间:时钟为 72MHz 为 1.17us
11、ADC 供电要求:2.4V 到 3.6V
12、ADC 输入范围:VREF–≤VIN≤VREF+
13、规则通道转换期间有 DMA 请求产生
下面这张图是ADC通道表,不同的通道对应不同的IO口,配置ADC的时候需要注意。
在这里插入图片描述

3、直接上代码了

3.1 GPIO初始化(配置PC1为模拟信号输入口)

void ADCx_GPIO_Config(void)
{
   
    GPIO_InitTypeDef GPIO_InitStructure;
    
   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); // 打开 ADC IO端口时钟    
    // 配置 ADC IO 引脚模式
    GPIO_InitStructure.GPIO_P
STM32是一款常用的嵌入式微控制器,适用于各种应用场景,包括音频信号采集。要实现STM32音频信号采集,需要设计一个相应的电路。 首先,需要选择一个合适的麦克风进行声音采集。常见的麦克风有动圈式麦克风、电容式麦克风和MEMS麦克风等。其中,MEMS麦克风是一种小型化、功耗低的麦克风,适合在STM32微控制器中使用。 接下来,需要将麦克风的输出信号转换为STM32能够处理的电平。为此,可以采用一个阻容耦合电路来将麦克风的低电平信号放大,并通过一个耦合电容将信号传递给STM32的引脚。 在接收到音频信号后,STM32可以通过内部的ADC(模数转换器)将模拟信号转换为数字信号。采样率的选择要根据具体应用场景进行考虑,一般常用的采样率为8kHz、16kHz或者48kHz。 此外,为了提高音频信号的质量,可以在电路中加入滤波器进行滤波处理,以去除不必要的噪音和频率干扰。 最后,通过STM32的GPIO口或者串口等方式,将数字信号传输到其他设备进行后续处理,比如进行数据存储或者实时音频分析等。 总之,实现STM32音频信号采集需要选择合适的麦克风、进行电平转换、使用ADC进行模拟到数字转换、加入滤波器进行信号处理,并通过GPIO口或串口进行信号传输。以上是一个简单的描述,具体的电路设计需要根据实际需求来确定。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值