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.2硬件连接图
3.3软件设计 本系统软件设计流程图如图3.9所示:
录放音的编解码是靠调用库函数完成,不需要我们设计硬件电路。凌阳公司提供了丰富的库函数,我们只要了解库函数的使用,就能轻松完成语音录放。本系统采用的是凌阳公司提供的音频格式SACM_A2000,它的压缩编码率是16Kbit/s,因此可以计算出1Mbit的存储器可以存放播放1M/16K = 64秒的语音数据。凌阳的音频格式有许多种,由于篇幅关系,不在这里详细讲述,请参考相关资料。本系统底层驱动程序包括IO口初始化、SPR1024的读写、擦除使用的是汇编语言编写的。上层程序包括语音的录放采用C语言编写。程序以函数的形式封装对SPR1024芯片的操作,上层程序可以轻松调用这些函数,实现对SPR1024读写、擦除操作。
3.4总结 凌阳公司的十六位单片机SPCE061A 是一种款式新颖,性价比极高的单片机。它具有较高运算速度的16位的乘法运算指令;具有DSP功能的内积运算指令;具有音频处理功能;具有8位机价格、16位单片机性能; 本系统只是实现SPCE061A的一个基本应用,设计者只要对该系统的电路、程序稍加改动,就可以实现语音复读机、跟读机、留言机、以及电话录音仪等功能。