基于DSPIC30F6014A单片机的智能家居音频信号分析仪的设计 (1)
与非网 2022-11-22

目前,大多数音频信号处理仪不但体积大而且价格贵,在一些特殊方面难以普及使用,而嵌入式系统分析仪具有小巧可靠的特点,所以开发基于特殊功能单片机的音频分析仪器是语音识别的基础,具有很好的现实意义。信号分析原理是将信号从时间域转换成频率域,使原始信号中不明显特性变得明显,便于分析处理。对于音频信号来说,其主要特征参数为幅度谱、功率谱。该音频信号分析仪的工作过程为:对音频信号限幅放大、模数转换、快速傅里叶变换(FFT,时域到频域的转换)、特征值提取;从到音频信号的幅度谱,进而得到音频信号的功率谱。

  1 硬件设计

  “智能家居”(SmartHome)也称智能住宅。家居网络智能控制系统就是利用先进的计算机技术、通讯技术和嵌入式技术,将家中的各种设备通过家庭网络连接成系统。整个智能家居系统的构成如图1所示。在该系统中,对于某些家用电器设备的监测与控制需要进行音频信号的分析。

  本设计选用Microchip公司的



  (1)经过采样、A/D转换完成后,清除A/D使能标志,得到离散化的数字信号。

  (2)调用周期判定函数,实现对信号周期性的分析。

  (3)调用FFT变换函数,对离散信号的快速傅里叶变换,实现时域到频域的变换。

  (4)显示输入信号的频谱。

  (5)计算信号的功率谱及计算最大功率。

  (6)显示信号的功率谱及最大功率。

 2.1 A/D采样

  理论分析:因12位的A/D模块,故量化单位为1/212,因频率分辨率△f=100 Hz、FFT的子样本点数N=512,故采样频率fs=51 200 Hz(fs≤N△f)、采样周期Ts=1/51 200 s(采样周期一采样时间+转换时间)。因振荡频率为7.37 MHz,故指令周期TCY=(1/7.37)×4=O.5μs。

  实际控制:转换时间为14个TAD(为正确A/D转换,TAD=333.33 ns)。所以,配置A/D自动采样时间为6个TAD,A/D转换时钟为16TCY,则A/D转换总时间为0.092 ms,采样频率为10.87 kHz。

  A/D模块工作在系统时钟源、自动转换模式,每完成一次转换进入一次中断。在程序中应该定义一个采样点数的结构体,用于存放A/D采集到的数据,每个结构体内包括一个实部和一个虚部。在中断服务子程序中,由A/D模块采集到的数字量存储到结构体的实部,共进行采样点数次转换,中断服务子程序的流程如图4所示。

2.2 周期判定

  音频信号的频率分量不但多,而且不具周期性。测量周期可以在时域也可以在频域,但是由于频域测量周期性时要求某些频率点具有由规律的零点或接近零点出现,所以对于较为复杂的、频率分量较多且功率分布较均匀且低的信号就无法正确地分析其周期性。因此,对于信号的周期性判定,应该在对信号进行FFT变换之前,直接调用周期判断函数。周期性判定子程序流程图如图5所示。


  2.3 FFT变换

  由于直接傅里叶变换的计算量与子样本点数N的平方成正比,在N较大时,计算量太大,不适合在资源有限的嵌入式系统中实现。所以最常用基2 FFT算法,其主要思想是将N点直接傅里叶变换分解成多个较短的直接傅里叶变换,再利用旋转因子的周期性、对称性,在很大程度上节省了系统资源。

  MPLAB C30 C编译器内部提供了几乎全部的数字信号处理软件工具,通过
DSPIC30F系列微处理器,只需调用Microchip公司提供的库函数,即可方便的实现数字信号处理。对于基2 FFT变换来说,其软件流程图如图6所示。

  2.4 特征值提取

  对频域分析起决定作用的量包括采样频率、采样点数。通过FFT变换,得到离散化的幅度谱X(k),先将离散化的幅度值平方,再除于子样本点数N,就可得到该频率点对应的功率值(功率=X(k)*X(k)/N)。

 3 结 语

  系统的主要性能指标为:输入阻抗50 Ω;输入信号电压范围(峰-峰值)100 mV~5 V;输入信号包含的频率成分范围为200 Hz~10 kHz;频率分辨力为100Hz(可正确测量被测信号中,频差不小于100 Hz的频率分量的功率值);输入信号的总功率和各频率分量的功率,检测出的各频率分量的功率之和不小于总功率值的95%;各频率分量功率测量的相对误差的绝对值小于10%,总功率测量的相对误差的绝对值小于5%;以5 s周期刷新分析数据,信号各频率分量应按功率大小依次存储并可回放显示,同时实时显示信号总功率和至少前两个频率分量的频率值和功率值,并设暂停键保持显示的数据。基于DSP单片机技术的音频信号分析具有性能稳定、电路简单、速度快、成本低、体积小的特点,适用于需要音频信号分析的嵌入式系统中,可以在更多领域进一步推广和应用,如环境监测、语音识别、智能系统的控制等。


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 基于STC89C52MCU的无线测温系统

    本51项目基于STC89C52MCU,温度传感器为DS18B20,显示模块用的是LCD1602,无线模块用的是Nodemcu。项目用到的编程语言:C,C++,L

    12小时前
  • 单片机系统的扩展和配置原则

    一个单片机硬件系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求

    12小时前
  • 深入linux内核架构 Linux内核架构分析解读

      概述  通常地,Linux操作系统如下图所示,由四大子系统组成:    用户应用层:特定Linux系统上使用的应用程序集会有所不同,具体取决于计算机系统的用

    昨天
  • 一文详解Linux的内存管理机制

    在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方面,区别于Win

    昨天
  • 详细介绍Linux文件I/O的基本情况

    文件描述符(FileDescriptor)asmall,nonnegativeintegerforuseinsubsequentsystemcalls(read

    昨天
  • STM32主存储块擦除编程操作的一些疑问

    说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装芯片配置、芯片ID、自举程序等等。当然,FL

    昨天
  • 理解 stm32 SPI 接口

    SPI是一种高速的,全双工同步的通信总线,在芯片管脚上占用了四根线,节约了芯片的管脚,同时为PCB的布局节省了空间,提供了方便,因此越来越多的芯片集成了这种通信

    昨天
  • 单片机ISP下载线设计

    本文首先介绍了在线编程技术,然后给出了基于两种下载线设计电路,最后阐述了的性能特点。实践表明:本设计具有低成本、高灵活性,对单片机爱好者,尤其是初学者,具有很强

    昨天
  • ARM Cortex-M3的六个知识点

    1.不再像别的ARM7那样从thumb状态和ARM状态来回切换Thumb-2指令集横空出世,Cortex-M3不支持ARM指令集2.BKP备份寄存器(42个16

    昨天
  • stm32 SPI 内部结构及配置过程

    SPI(SerialPeripheralinterface),顾名思义就是串行外围设备接口。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用

    昨天
  • 如何使用硬件浮点单元以及相关数学运算

    一.前言有工程师反应说Keil下无法使用STM32F4xx硬件浮点单元,导致当运算浮点时运算时间过长,还有一些人反应不知如何使用芯片芯片内部的复杂数学运算,比如

    昨天
  • 使用FSMC可能遇到的问题

    本文将就使用FSMC可能遇到的问题进行说明。希望能对大家的学习有所帮助。一、端口配置1、由于FSMC写NOR时序与8080接口的时序十分相识,因此我们采用模拟8

    昨天
下载排行榜
更多
广告