新闻  |   论坛  |   博客  |   在线研讨会
使用SPCE061A的SIO实现数码录音及播放
yanqin | 2009-06-24 20:52:22    阅读:3362   发布文章

 

作者EMAIL: xiangyan@sunnorth.com.cn

    SPCE061A是台湾凌阳公司生产的一种新型的十六位单片机,该款单片机资源丰富,具有极高的性价比。SPCE061A具有可编程的音频处理功能,同时又具有串口输入输出端口SIO(它提供了一个1位的串行接口,用于与其它设备进行数据通讯),本文就是介绍利用SPCE061A的这两个资源和串行接口的FLASH(SPR1024)来开发数码录音及播放系统。

    本系统只使用5个IO口,还有好多资源没有用到。因此,开发者可以在此基础上扩展系统的功能,比如,使用SPCE061A的通用异步串行接口UART来实现与PC机的通讯,或者使用其他的IO口来外挂USB器件实现与PC机的USB通讯,制作复杂的录、放音系统。

    3.1系统结构

    系统结构框图如图3.7所示,它主要由按键输入、音频录入、音频输出和SPR1024存储扩展这四部分组成。

   

    按键输入部分:它由3个按键组成。

    音频录入部分:主要由MIC、自动增益电路、AD转换电路构成。

    音频输出部分:主要由LM386放大器,喇叭播放器组成。

    SPR1024 FLASH部分:主要用来存储编码后的语音数据。

    3.2硬件设计

    本系统主要采用SPCE061A单片机和SPR1024 FLASH芯片。其中SPR1024也是台湾凌阳科技公司生产的,它是串行接口的FLASH,是40脚DIP封装的IC。它的工作电压范围为2.7V~3.6V,存储容量为128K * 8位,FLASH内部结构以1k字节为一页,共128页。该芯片与SPCE061A的IOB0和IOB1相连的管脚是21pin的SCLK,4pin的ADPAD。

    SPCE061A是性价比极高、资源丰富的一款十六位单片机,使用它可以非常方便的实现语音的录放系统。SPCE061A的A/D转换器有8个通道,其中有1个通道是MIC-IN输入,它专门用于对语音信号进行采样。语音信号经Mic转换成电信号,由隔直电容隔掉直流成分,然后输入至SPCE061A内部前置放大器。SPCE061A内部自动增益控制电路AGC能随时跟踪、监视前置放大器输出的音频信号电平,当输入信号增大时,AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,以便使进入A/D的信号保持在最佳电平,又可使削波减至最小。 2路10位精度的DA,只需要外接功放(LM386)电路即可完成语音的播放。

    系统的硬件连接图如图3.8所示。图中三个按键控制着系统的录音、停止、放音三个过程。按下Record键,采集语音数据,编码后存储语音数据到SPR1024;按下Stop键,停止录音;按下Play键,播放所录语音。

 图3.8硬件连接图

     3.3软件设计

    本系统软件设计流程图如图3.9所示:

    录放音的编解码是靠调用库函数完成,不需要我们设计硬件电路。凌阳公司提供了丰富的库函数,我们只要了解库函数的使用,就能轻松完成语音录放。本系统采用的是凌阳公司提供的音频格式SACM_A2000,它的压缩编码率是16Kbit/s,因此可以计算出1Mbit的存储器可以存放播放1M/16K = 64秒的语音数据。凌阳的音频格式有许多种,由于篇幅关系,不在这里详细讲述,请参考相关资料。

    本系统底层驱动程序包括IO口初始化、SPR1024的读写、擦除使用的是汇编语言编写的。上层程序包括语音的录放采用C语言编写。程序以函数的形式封装对SPR1024芯片的操作,上层程序可以轻松调用这些函数,实现对SPR1024读写、擦除操作。这些主要源于凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用。

    3.4总结

    凌阳公司的十六位单片机SPCE061A 是一种款式新颖,性价比极高的单片机。它具有较高运算速度的16位×16位的乘法运算指令;具有DSP功能的内积运算指令;具有音频处理功能;具有8位机价格、16位单片机性能••••••

    本系统只是实现SPCE061A的一个基本应用,设计者只要对该系统的电路、程序稍加改动,就可以实现语音复读机、跟读机、留言机、以及电话录音仪等功能。

  


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客

Notice: Trying to get property of non-object in /xp/www/www.eepw.com.cn/eepw/rootapp/controllersspace/ArticlesController.php on line 58

Notice: Trying to get property of non-object in /xp/www/www.eepw.com.cn/eepw/rootapp/controllersspace/ArticlesController.php on line 82

Notice: Trying to get property of non-object in /xp/www/www.eepw.com.cn/eepw/rootapp/controllersspace/ArticlesController.php on line 89