利用CW32驱动MAX4466放大器模块的应用实践:音频信号增强与数据采集的解决方案探讨
eetrendMcu 2023-11-24


一、简介

1.MAX4466是一款低噪声、高增益的放大器模块。该模块采用了集成放大器芯片,能够在低电压下提供高增益。它的输入阻抗较高,能够与多种信号源(例如麦克风、传感器)实现良好的匹配。同时,MAX4466还具备很低的噪声水平,能够有效地提取和放大微弱的信号,提高系统的灵敏度。MAX4466模块的应用场景包括但不限于以下几个方面:

音频处理:可以作为音频信号的前置放大器,将低电平的音频信号放大到适合后续处理的水平,如音乐播放、语音识别、语音通信等。声音检测与分析:结合麦克风等音频传感器,可以实现声音的检测、分析和识别,如声音传感器、语音识别设备等。无线通信:可以用于接收无线通信模块的输入信号,对其进行放大,以提高通信距离和信号质量。

二、所需物料

本实验使用到了CW32f030c8小蓝板、MAX4466模块、LED交通信号灯模块、0.96寸OLED显示屏、Keil5开发环境及VOFA+上位机软件。

1.png

CW32F030C8小蓝板

2.png

MAX4466模块

3.png

实物(俯视)

4.png

实物(正视)

【单片机与MAX4466连线】:3.3V---VCC

GND---GND

PA0---OUT

【单片机与OLED屏连线】: GND---GND

3.3V--VDD

PB8--SCK

PB9--SDA

【单片机与LED灯连线】:  GND--GND

PC15--R

PC14--Y

PC13--G

三、核心代码

ADC.c:
#include "ADC.h"
#include "main.h"
#include "delay.h"

void ADC_Configuration(void) 
{   
    ADC_SingleChTypeDef ADC_SingleInitStruct; 
     
    __RCC_ADC_CLK_ENABLE();    // ADC时钟使能  
    __RCC_GPIOA_CLK_ENABLE();  //GPIOA使能  
    PA00_ANALOG_ENABLE();  
    ADC_SingleInitStruct.ADC_Chmux = ADC_ExInputCH0;                //PA00 通道0  
    ADC_SingleInitStruct.ADC_InitStruct.ADC_AccEn = ADC_AccDisable;   //转换结果累加不使能  
    ADC_SingleInitStruct.ADC_InitStruct.ADC_Align = ADC_AlignRight;   //ADC转换结果右对齐  
    ADC_SingleInitStruct.ADC_InitStruct.ADC_ClkDiv = ADC_Clk_Div16;   //PCLK    
    ADC_SingleInitStruct.ADC_InitStruct.ADC_DMAEn = ADC_DmaDisable;   //关闭DMA传输  
    ADC_SingleInitStruct.ADC_InitStruct.ADC_InBufEn = ADC_BufEnable;  //开启跟随器  
    ADC_SingleInitStruct.ADC_InitStruct.ADC_OpMode = ADC_SingleChOneMode;//单通道单次转换模式     
    ADC_SingleInitStruct.ADC_InitStruct.ADC_SampleTime = ADC_SampTime10Clk; //10个ADC时钟周期  
    ADC_SingleInitStruct.ADC_InitStruct.ADC_TsEn = ADC_TsDisable;    //内置温度传感器禁用  
    ADC_SingleInitStruct.ADC_InitStruct.ADC_VrefSel = ADC_Vref_VDDA; //VDDA参考电压 
   
   ADC_SingleChOneModeCfg(&ADC_SingleInitStruct);                  //开始转换  
   ADC_Enable();                                                   // 使能ADC   
   
   ADC_SoftwareStartConvCmd(ENABLE);                                //转换使能
}

uint16_t Get_Data(void) //ADC数据采集
{  
    unsigned int temp_dat_adc = 0;   
    
    ADC_SoftwareStartConvCmd(ENABLE);       //开始转换  
    while(ADC_GetITStatus(ADC_IT_EOC))  
    {    
        ADC_ClearITPendingBit(ADC_IT_EOC);    //清除标志位        
        temp_dat_adc=ADC_GetConversionValue();//电压采集      
    }  
    return   temp_dat_adc;}

uint16_t Cal_Average_Data(void)
{  
    float dat;  
    uint8_t i=0;  
    for(i=0;i<50;i++)   //连续采集50次ADC的值  
    {    
        dat+=Get_Data();  //累加    
        Delay_ms(1);  
    }  
    return dat/50;      //返回平均值
}
main.c:
int main()  
{  
    uint16_t temp;  
    LED_Init();  //LED灯初始化  
    OLED_Init(); //OELD屏初始化  
    UART_Init(); //串口初始化  
    ADC_Configuration(); //ADC配置  
    OLED_ShowString(1,1,"present:");   //提示字符串  
    OLED_ShowString(2,1,"record_max:");  
    while(1)  
    {    
        temp=Cal_Average_Data();  //获取ADC数值累加后的平均值    
        printf("%d\n",temp);   //通过串口借助VOFA+软件打印波形图    
        LED_Indicator(temp);    //LED灯指示    
        Delay_ms(100);     
    }
}

四、VOFA+软件简易使用说明

5.png

6.png

7.png

①配置协议与连接:数据引擎选择”FireWater”,(注意:在程序中使用printf函数时,必须在%d后面加上\n才能在FireWater模式下被上位机正确识别),数据接口选择”串口”,正确选择端口号和配置波特率;

②在控件中找到波形图,拖拽到主窗口中,选择整窗口填充;

8.png

9.png

④右击窗口选择Y轴中的All打开Y轴数据显示;

⑤在图形种类中(默认)选择波形图;

10.png

⑥点击左上角灰黑色圆圈打开串口进行通信,看到圆圈变蓝并且闪烁代表通信正常,之后可以像调节示波器显示一样通过鼠标滚轮手动将波形调整到合适的显示范围,也可以点击Auto一键调整波形显示范围。

软件官网下载地址:https://www.vofa.plus/downloads/

五、效果演示

11.png

正常音量 12.png

正常音量波形图

13.png

较大音量

14.png 较大音量波形图

15.png

过大音量
16.png

过大音量波形图


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 对话周祖成教授 - 清华大学与西门子EDA的合作之旅


  • 相关技术文库
  • 模拟
  • 模电
  • 运放
  • 放大
  • 如何理解运放平衡电阻

    平衡电阻的目的是为了减小运放输入偏置电流在电阻上形成的静态输入电压而带来误差详细看书。

    前天
  • 如何使用二极管并联LDO

    使用二极管并联LDO首先来看通过二极管并联LDO的电路图。

    前天
  • 运算放大器和比较器的区别

    运算放大器和电压比较器在原理符号上确实是一样的,都有5个引脚,其中两个引脚为电源+和电源-,还有两个引脚为同相输入端(+)和反向输入端(-),最后一个引脚是输出端。

    前天
  • AD采样的内部结构

    AD采样实现原理

    前天
  • 分析几个三极管镜像恒流源电路

    在改进型差动放大器中,用恒流源取代射极电阻RE,既为差动放大电路设置了合适的静态工作电流,又大大增强了共模负反

    前天
  • 实际项目中,如何选择运算放大器?

    当然,性能越好的运放,价格也越高,根据不同使用场合选用不同的运放,确保最佳的性价比也是作为一个工程师的必备技能。

    前天
  • 信号继电器有哪些作用?

    继电器是一种电控制器件,在很多电路中都有继电器的使用。为增进大家对继电器的认识,本文将对继电器的原理、作用,以及信号继电器的分类予以介绍。如果你对继电器、信号继电器具有兴趣,不妨和小编一起继续往下阅...

    02-21
  • 电容界的强强联手:电解与薄膜的完美搭配

    电容是常用电子器件之一,针对不同用途,市场上推出了各式电容。为增进大家对电容的了解,本文将对电解电容和薄膜电容的搭配问题予以介绍。如果你对电容相关知识具有兴趣,不妨继续往下阅读哦。 在一个电器...

    02-21
  • IMX386揭秘:让您的照片跃出屏幕,惊艳世界!

    IMX386是一个对角线6.294毫米(1/2.86型)12兆像素CMOS有源像素型叠加型图像传感器与方形像素阵列。采用Exmor RS技术实现高速图像采集。通过柱状并行A/D转换电路和高灵敏度低噪声图像(与传统CMOS图像传感器相比),...

    02-21
  • 收藏!19个常用的5V转3.3V技巧

    必看的19个5V转3.3V技巧

    02-21
  • 低端运放电流检测方法

    低端运放电流检测方法分析下原理:运用运放的虚短特性,既得到了:V+ = V-; 运用运放的虚断特性,既

    02-21
  • 解锁电子世界的秘密武器:揭秘运算放大器的魔力

    什么是运算放大器?运算放大器是具有很高放大倍数的电路单元,具有带载能力强、低输出电阻特点。运算放大器的种类繁多,应用非常广泛。接下来简单给大家介绍一下运算放大器的应用及种类。 运算放大器的应用 1.电流源...

    02-21
下载排行榜
更多
评测报告
更多
广告