引言
语音记录芯片有很多种,但美国ISD公司的ISD系列芯片倍受广大用户的青睐,它采用直接模拟存储专利技术,把语音信号以原始的模拟形式直接存储在片内的EEPROM存储器中,无需进行A/D转换和压缩处理,没有大多数固态数字化声音存储技术对声音质量的影响,从而减少了失真,大大提高了录放音质量,并具有抗断电、音质好、使用方便、可反复录放,无需专用的语音开发工具,能随意更改内容和耗电省等优点,很适合于现场录放音系统。
ISD系列语音记录芯片广泛应用于自动化通信系统、移动电话、智能仪器及其他需要语音提示的各种电子产品中。本文介绍了ISD33180在一种可以进行心音记录的电子听诊器中的应用。
图1 ISD33000系列封装图
ISD33000的介绍
ISD33120/150/180/240系列是采用3伏电源供电的单片语音录/放设备,可存储2.0、2.5、3.0至4分钟的语音信息。四种型号的不同录放时间是靠不同的输入采样率来实现的,他们分别是8.0、6.4、5.3、4.0kHz。该CMOS工艺芯片包含一个内部时钟振荡器、抗混迭滤波器、平滑滤波器、自动选择器、音频放大器和高密度多层存储阵列。ISD33000系列的EEPROM的容量都为960K,可存储800行语音信息。
ISD33000系列具有TSOP和DIP/SOIC两种封装形式,如图1所示。
SS 片选信号(低电平允许芯片工作);
MOSI 串行数据输入端;
MISO 串行数据输出端;
SCLK 串行时钟信号;
VCCA、VCCD模拟和数字电路电源端;
VSSA、VSSD模拟地和数字地;
AUD OUT 音频信号输出端,可驱动5kΩ负载;
AM CAP 自动静噪控制端;
ANA IN-、ANA IN+ 模拟信号输入端,模拟信号可以采用单端输入和差分输入两种方式;
RAC 行寻址时钟,当达到存储器每一行的末尾时该引脚保持137.5ms的高电平和12.5ms的低电平,可用于信息管理;
INT 中断端(低电平有效);
XCLK 外部时钟输入端。
一组四线(SCLK,MOSI,MISO,SS)SPI接口提供了ISD33000系列的控制和寻址功能。ISD33000系列产品的构成就如在操作一个基于微控制器SPI总线接口的外围设备。对于所有的内部记录器的读写允许操作都是通过SPI接口实现的。数据转换方面的约定是,微控制器的SPI转换锁存器在SCLK的下降沿处锁定,对于ISD33000设备,MOSI引脚上的数据在SCLK的上升沿处被锁定,内部数据在SCLK的下降沿处被锁定输出到MISO引脚上。中断信号(INT)和内部的只读状态记录器是为了提供握手信号的目的。控制位和地址位的分布如下:〈5位控制位〉和〈11位地址位〉。需要说明的是ISD33120/150/180/240设备只需要10位地址位,但为了录音时间更长产品的需要保留了第11位。对于每一个以EOM和OVF结束的操作,包括信息检索周期,都将产生一个中断。这个中断将在下一个SPI周期有效时被清除。
表1 控制位摘要
应用举例
所设计的电子听诊器对拾取心音的操作与普通的录音机相似,可以播放、记录,还可以在各段记录间搜索。这里采用89C51型单片机作为语音芯片的控制器,用户的意图通过按键来表达。
各指令与控制位的关系如表1所示。ISD33000设备启动要经过TPUD时间后才可进行操作(对于采样频率位8kHz的产品来说,约为25ms)。用户在发出操作命令之前要等待TPUD的时间。以播放操作为例,从地址address开始的播放操作应按下述的步骤进行:
发出POWERUP命令;
等待TPUD时间(启动延迟时间);
发出从地址address的SETPLAY命令;
发出PLAY命令。
当发现EOM标记时产生一个中断,然后停止播放操作。
该应用中单片机的P1端口设计为人机接口,P2端口为单片机与语音芯片的通讯口。P1口的按键依次为:K1键为播放记录选择键(P/R);K2键为开始键(START);K3键为停止键(STOP);K4键为前倒键(PRE);K5键为后倒键(NEXT),其中K1键为拨动开关,其余各键均为不可自锁的按键,发出脉冲信号。P2口依次连接33180的SCLK、MOSI、MISO、SS和RAC引脚,在记录操作期间,存储的信息达到存储阵列的每一行末尾时,RAC端会发出长度一定的高脉冲,单片机此时将地址变量加一,记录语音芯片的地址信息。在每段语音信息的末尾,语音芯片会发出一个中断,将该中断信号送入单片机外部中断0的输入端。
在没有要求单片机工作之前,单片机处于循环查询状态,一旦P1端口的K2、K4、K5、K6键有信号发出,指针表会跳转至各自子程序执行相应的操作。以播放操作子程序为例,先后向语音芯片发出POWERUP命令,SETPLAY命令和PLAY命令,然后进入等待状态查询P1.2端口STOP键是否有触发,如有触发则终止播放操作,进入循环查询部分。播放操作的正常结束是通过外部中断0的中断子程序。
播放子程序清单:
PLAY: MOV OISTO1, #20H
LCALL TRANS ;发出POWERUP命令
MOV TMOD , #01H
MOV DPTR ,#25536
MOV TH0, DPH
MOV TL0, DPL
SETB TR0
JNB TF0,$ ;等待TPUD40ms时间
MOV OISTO, PFROM
MOV OISTO1, PFROM1
;读取播放记录的首地址
ANL OISTO1, #07H
ORL OISTO1, #0E0H
LCALL TRANS ;发出SETPLAY命令
ORL OISTO1, #0F0H
LCALL TRANS ;发出PLAY命令
MOV IE, #81H
HERE: JB P1.2, OVER ;如果要求中止则结束
SJMP HERE
OVER: MOV OISTO1, #10H
LCALL TRANS;发出STOPPWRDN命令
LJMP SELECT
INTX0: MOV IE, #0
LJMP OVER ;播放结束返回
RETI
注:
TRANS 为单片机与语音芯片的通讯子程
OISTO和OISTO1为存储控制位和地址的寄存器
SELECT 为循环查询子程
INTX0为中断子程
其他记录子程序,前倒子程序和后倒子程序与播放的程序相似,在此不再赘述。
ISD33000使用中应注意的几个问题
·ISD器件的音频信号输出功率很小,并不能直接驱动扬声器,需要加音频功放,如LM386。同时ISD送出的信号需通过电容耦合,隔离直流分量,以免其饱和。
·应注意RAC端口,每完成一行的录音、放音及搜索操作,该端口输出一个正脉冲。单片机检测到此正脉冲,对应当前的行地址,可用于对录放信息的精确定位。
·当中断数据从ISD33000设备的MISO引脚移出时,控制位和地址位同时移入MOSI引脚。所以应注意传送的数据是否符合当前系统的操作。