历史上的今天
返回首页

历史上的今天

今天是:2025年04月01日(星期二)

正在发生

2018年04月01日 | 基于 SPCE061A单片机采集语音信号的设计与实现

2018-04-01 来源:eefocus

    随着单片机集成化程度的不断提高,现代单片机已经具备了数字信号处理功能,使语音信号处理用单片机实现成为可能。台湾凌阳科技公司(SunPlus)推出的一款SPCE061A就是这样的产品。SPCE061A是以μ"nSP TM16位微控制器及信号处理器芯片为内核的16位单片机,采用模块式集成结构,片内集成了2KB RAM、32KB Flash、ADC、DAC、并行I/O等,特别适合语音信号处理。本文介绍如何实现用SPCE061A单片机采集语音信号,并传送到PC机中的方法。


    1 硬件系统结构

    1.1 SPCE061A结构

    SPCE061A的内部结构如图1,其特点如下:

    *16位μ"nSP TM微控制器;

    *工作电压:VDD为2.6~3.6V(CPU),VDDH为VDD~5.5V(I/O);

    *CPU时钟为0.32~49.152MHz;

    *内置存储器:SRAM为2KB,内存Flash为32KB;

    *可编程音频处理;

    *2个16位可编程定时器/计数器;

    *7通道10位ADC(内置麦克风放大和自动增益控制功能);

    *2个10位DAC;

    *32路可编程通用输入输出端口;

    *串行输入输出接口;

    *低电压监测/低电压复位功能;

    *14个中断源可来自定时器、外部时钟输入、键唤醒等;

    *内置在线仿真电路ICE。

    1.2 SPCE061A开发方法

    SPCE061A的开发是通过在线调试器PROBE实现的,如图2所示。它利用了SPCE061A内置的在线仿真电路ICE和凌阳公司的在线串行编程技术。

    1.3 语音采集的硬件电路

    语音采集的硬件电路如图3所示。MIC采用驻极体电容话筒,这种话筒具有灵敏度高、无方向性、重量轻、体积小、频率响应宽、保真度好等优点。

    与PC机的串行通信用SPCE061A的UART接口,用MAX232芯片进行电平转换,即可实现RS232通信。


    2 软件设计与实现

    2.1 语音信号的采集压缩与数据传输

    (1)语音信号的采集压缩

    语音信号处理的基础是对语音信号进行数字化,并采样存储。SRCE061A内置专门用于语音信号采集的自动增益控制放大器(AGC)的麦克风输入通道(MIC_IN)。语音信号经麦克转换成电信号,由隔离电容隔掉直流成分,然后输入至内部前置放大器。SPCE061A内部自动增益控制电路AGC能随时跟踪、监视前置放大器输出的音频信号电平,当输入信号增器时,AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,以便使进入A/D的信号保持在最佳电平,又可使谐波减至最小。

 

    ADC初始化程序如下:

    INT OFF;

    R1=0x0030;

    [P_TimerA_CTRl]=R1;

    //时钟频率为CLKA的fosc/2

    R1=0xfa00;

    [P_TimerA_Data]=R1;

    //采样率为16kHz

    R1=0x003d;

    [P_ADC_Ctrl]=R1; //设置AGC功能

    R1=0x00A8;

    [P_DAC_Ctrl]=R1; //采用自动方式且通过MIC_IN通道输入,通过定时器A的溢出锁存数据,ADC为自动方式

    R1=0x1000;

    [P_INT_Ctrl]=R1; //开中断IRQ1_TM

    INT IRQ;

    采样后的数字语音信号数据量非常大,且由于语音信号采样点幅度分布的非均匀性和样本间的相关性等原因,使语音信号中含有大量的冗余信息。因此,在实际应用中采用各种信源编码技术来消除语音信号的冗余度。语音编码方法主要有波形编码、参数编码和混合编码。

    *波形编码的基本原理是以波形逼近为原则,在时域上把幅度样本分层量化并用代码表示;特点是语音质量高、抗噪性强编码率高,适于语音及高保真音乐。

    *参数编码是基于某种语音产生模型,在编程端分析出该模型参数选择适当的方式进行编码;特点是语音质量差、抗噪抗弱和编码率低。

    *混合编码综合了波形和参数编码之优点。

    凌阳SPCE061A提供了压缩算法库——SACMLIB(见表1),其处理的语音信号范围是200Hz~3.4kHz的电话语音,并将A/D、编/解码、存储及D/A做成相应的模块,对于每个模块都有其应用程序接口API。

    表1 SACM-LIB库中模块及其算法

    (2)语音数据的传输

    SPCE061A的通用异步串口(UART)提供了一个8位全双工标准接口,用于完成SPCE061A与外设之间的串行通信。借助于IOB口的特殊功能和UART IRQ中断,可以同时完成UART接口的接收与发送数据的过程。根据应用需求,把UART设置为中断方式接收数据,以查询方式发送数据。

    UART初始化程序InitUART()见网络补充版(

http://www.dpj.com.cn)。


    2.2 上位机控制和存储模块

    目前,MircoSOFt公司的VC++6.0是基于Windows程序设计的主流开发工具之一。VC++不仅秉承了C++简便、灵活及面向对象等优点,而且提供了功能强大的MFC类库,并能自动生成应用程序框架,提供标准化的程序结构和用户接口。特别需要指出的是,为了今后调用低层的音频处理API函数,对由下位上传的音频数据进一步进行语音识别方面的处理,我们使用VC来编写上位机的控制及存储程序。


    在实验室和工业应用中,RS232串口是常用的计算机与外部串行设备(单片机)之间的数据传输通道,由于串行通信简单易用,所以应用广泛。通常在VC++中有三种方法可以实现串行通信:

    *使用VC++的标准通信函数_inp和_outp来实现串口通信;

    *把串口看成是一个特殊的设备文件,使用有关文件处理的API函数来实现串口通信;

    *使用ActiveX的串行通信控件MSComm来实现串口通信。

    对于本实例来说,主要考虑的因素是实时语音数据存取,以及位机与下位机的配合。因此,采用了串行通信MSComm控件方法来实现串口通信。另外,可以采用二进制流文件Cfile类来存储声音文件。具体步骤见网络补充版。

    结语

    通过以上实例录制的语音数据,可以从PC机下载到SPCE061A中(或者作为资源文件放入工程中),使用SACM_A2000模块的函数播放验证,效果能够满足进一步语音信号处理需要。

    用凌阳SPCE061A处理语音信号有如下独特之处:

    *硬件电路简单,因SPCE061A是一款专门为语音信号处理设计的,麦克和喇叭可直接接入,用户不必外接放大电路等;

    *软件编程容易,有相应的API函数,可直接调用。

    *用ICE和图形界面编译软件,调试方便。

推荐阅读

史海拾趣

Bivar公司的发展小趣事

随着技术的不断发展和市场的日益扩大,Bivar公司意识到国内市场的局限性,开始积极拓展国际市场。公司派遣专业团队前往海外进行市场调研,了解当地需求和竞争态势。通过定制化的产品和灵活的销售策略,Bivar成功打入多个海外市场,并获得了可观的收益。

Allegro公司的发展小趣事

在电子行业的初期,Bivar公司以其创新的技术突破赢得了市场的认可。公司研发出一款新型电阻器,具有高稳定性和长寿命的特点,迅速在行业内引起了关注。凭借这一技术优势,Bivar逐渐在电阻器市场上占据了一席之地,并逐渐扩大生产规模,实现了公司的初步成长。

Goodwork Semiconductor ( GW )公司的发展小趣事
电路中加入了多种保护电路(如反向电流保护、过温保护、过电流保护等),提高了电路的稳定性和可靠性。
Artesyn Embedded Technologies公司的发展小趣事

随着5G技术的商用化,电子行业迎来了新的发展机遇。Artesyn Embedded Technologies敏锐地把握住了这一机遇,积极研发适应5G时代需求的电源和嵌入式计算解决方案。公司推出的新产品不仅满足了5G设备对高效、稳定电源的需求,也为公司在5G时代的发展奠定了坚实的基础。

诚芯微(CXW)公司的发展小趣事

在2020年,诚芯微与BYD、小米、公牛等知名企业建立了战略合作伙伴关系,共同推动电源芯片在汽车电子、智能家居等领域的应用。通过与这些行业巨头的合作,诚芯微不仅拓展了市场渠道,还提升了品牌影响力。同时,公司还加大了对新能源汽车电源管理芯片的研发力度,为新能源汽车产业的发展提供了有力支持。

爱特姆(ATOM)公司的发展小趣事

在快速发展的同时,爱特姆也积极履行企业社会责任。公司始终坚持绿色生产、环保经营的理念,通过采用环保材料和节能技术,降低生产过程中的能耗和排放。此外,爱特姆还积极参与社会公益事业,为社会的可持续发展贡献自己的力量。

这五个故事从不同角度展现了爱特姆(ATOM)在电子行业发展的历程和成就。通过持续创新、市场拓展、人才引进和社会责任等方面的努力,爱特姆逐渐成长为一家具有全球影响力的电子企业。

问答坊 | AI 解惑

大家推荐个射随器芯片

做个电路,把传感器采集进来的信号经过射随器后送入AD,原来使用op07组成一个射随器,老板嫌随度慢,换用op27试了效果也不好,大家推荐一下有什么专用的射随器芯片。我在百度上度了半天也没找到…

查看全部问答>

参加嵌入式系统联谊会嵌入式系统新技术论坛见闻 

     今天下午阿牛哥去北京首享科技大厦参加嵌入式系统联谊会嵌入式系统新技术论坛。何小庆老师主持会议,何立民教授做嵌入式系统致辞。德高望重的何立民教授做嵌入式系统联谊会致辞,轻松话题从苏东坡的“不识庐山真面目,只 ...…

查看全部问答>

求立宇泰2440的原理图

请问哪位兄弟有立宇泰2440的原理图,能否分享一下,谢谢。 Email:chinajszcw@163.com…

查看全部问答>

威睿电通(杭州)招聘

职位描述: WinCE/WinMob RIL 驱动开发工程师 1、计算机或通信专业硕士或以上学历; 2、 两年以上的嵌入式软件开发经验,精通嵌入式实时多任务/线程编程、丰富的嵌入式开发及调试经验; 3、 熟悉C语言、熟悉wince或windows Mobile、熟悉软件工 ...…

查看全部问答>

WINCE 扩展TL15C255O

各位好: 我现在在WINCE 中扩展 TL16C2550 , 现在bootloader 中 对 LSR 读 :uart+++ 14200000 B9E00000 0 test uart B9E00000 m_pData 0xB9E00000 m_pLCR 0xB9E00003 m_pData 0 lcr 0 m_pIER 0 m_pIIR_FCR 2B m_pMCR 0 m_p ...…

查看全部问答>

一个关于Vxworks的实时系统项目

  我以前做工控的,现在有个项目,需要实时系统,本来说基于pc104+IO扩展卡,由于IO数目比较多,PC104可能达不到要求,我现在想基于PC机+PCI或者是PXI,我目前的问题是 1.Vxworks支持哪些CPU,是不是只要是X86架构的都能够运行。 2.哪 ...…

查看全部问答>

详解NXP Cortex-M3 LPC1343 HEX生成BIN文件以大容量存储方式BOOT不起用的解决办法

积分:211派别:等级:------来自:北京详解NXP Cortex-M3 LPC1343 HEX生成BIN文件以大容量存储方式BOOT不起用的解决办法: LPC1343以其独特的BOOT方式确实很方便,但是,直接生成的BIN文件却不能直接运行,为何? 其实这只是文件缺少一个CRC,我们 ...…

查看全部问答>

sw笨笨的STM32笔记之十:工作工作,PWM输出

a)        目的:基础PWM输出,以及中断配合应用。输出选用PB1,配置为TIM3_CH4,是目标板的LED6控制脚。b)        对于简单的PWM输出应用,暂时无需考虑TI ...…

查看全部问答>

第14章 进程间通信

14.1   引言 32014.2   管道 32014.3   popen和pclose函数 32514.4   协同进程 33014.5   FIFO 33314.6   系统V IPC 33514.6.1   标识符和 ...…

查看全部问答>