基于CW32的MAX4466放大器模块的应用

例程资料链接如下(群文件也可下载):
BD网盘链接:
链接:https://pan.baidu.com/s/1TsDHhXUvooMH_eLBH0h08Q
提取码:sfrv
相关视频:基于CW32的MAX4466麦克风模块的应用

一、简介


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

音频处理:可以作为音频信号的前置放大器,将低电平的音频信号放大到适合后续处理的水平,如音乐播放、语音识别、语音通信等。

声音检测与分析:结合麦克风等音频传感器,可以实现声音的检测、分析和识别,如声音传感器、语音识别设备等。

无线通信:可以用于接收无线通信模块的输入信号,对其进行放大,以提高通信距离和信号质量。

二、所需物料

.本实验使用到了CW32f030c8小蓝板、MAX4466模块、LED交通信号灯模块、0.96寸OLED显示屏、Keil5开发环境及VOFA+上位机软件。
在这里插入图片描述
【单片机与MAX4466连线】

3.3V---VCC
3GND---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+软件简易使用说明


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

在这里插入图片描述


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

在这里插入图片描述
在这里插入图片描述


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

在这里插入图片描述


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

在这里插入图片描述


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

在这里插入图片描述
软件官网下载地址:https://www.vofa.plus/downloads/

五、效果演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值