微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于SPI实现dsPlC与ISD语音芯片的通信设计

基于SPI实现dsPlC与ISD语音芯片的通信设计

时间:12-14 来源:互联网 点击:

5 lSD4002
ISD4002工作于SPI串行接口。SPI协议是一个同步串行数据传输协议,协议假定微控制器的SPI移位寄存器在SCLK的下降沿动作。对ISD4002而言,在时钟上升沿锁存MOSI引脚数据.存下降沿将数据送至MISO引脚.协议具体内容如下:
①所有串行数据传输开始于SS下降沿;
②SS在传输期间必须保持为低电平,在两条指令之间保持为高电平;
③数据在时钟上升沿移入,在下降沿移出;
④SS变低,输入指令和地址之后,ISD才会开始录放动作;
⑤指令格式是10位地址码加6位控制码;
⑥ISD的任何操作(含快进)如果遇到EOM或OVF则产生一个中断,该中断状态在下一个SPI周期开始时被清除;
⑦使用读指令会使中断状态为移出ISD的MISO引脚时,控制及地址数据也同步从MOSI移入;
⑧所有操作在运行位(RUN)置1时开始,置0时结束;
⑨所有指令都在SS上升沿开始执行。
其时序如图2所示。

对于ISD4002,器件延时TPUD(8kHz采样时,约为25 ms)后才能开始操作;因此,用户发完上电指令后,必须等待TPUD.才能发出一条操作指令。下面是典型的操作。

从00处发音,应遵循如下时序:
发POWERUP命令;
等待TPUD(上电延时);
发地址值为00的SFTPLAY命令;
发PLAY命令。
器件会从00地址开始放音,当出现EOM时,立即中断,停止放音。
如果从00处录音,则按以下时序;
发POWER UP命令;
等待TPUD(上电延时);
发POWER UP命令
等待2倍TPUD;
发地址值为00的SETREC命令;
发REC命令。
器件便从00地址开始录音,一直到出现OVF(存储器末尾)时,录音停止。其工作时序如图3所示。

6 电路设计
本电路采用dsPICC30F6014数字信号控制器,通过3个按键开关控制ISD4002录放音芯片的动作。S1、S2、S3分别接到控制器外部中断INTl、INT2、INT3上。当按下S1时,开始录音,再次按下S1时停止录音。如此反复即可实现多段录音。同理,按下S2时开始放音,再次按下S2是停止放音。如此反复顺序播放多段录音。按下S3关机。

(1)硬件电路设计
电路原理如图4所示。整个电路由语音录放电路、话筒输入电路、按键开关电路及LCD显示电路构成。由于本设计输出直接驱动普通耳机,经实验不需外部功放电路,直接利用ISD4002内部功放输出即可。ISD4002作为从机,其SPI接口的MOSI接控制器的SDO;MISO接控制器的SDI;SCLK接SCK;SS接控制器的SS即可。LCD用于人机交互的界面显示。

(2)软件设计
程序包括主程序以及几个子程序。主程序中,在完成初始化的工作之后,进入一个while循环,等待响应按键触发的中断,若有按键按下,则进入相应的中断服务程序。在按键S1的中断服务程序中,设置一个标志变量,Sl每按下一次,标志变量取反,用来控制录音及停止录音。同理,S2的中断服务程序中也设置一个标志变量,控制开始放音及停止放音。S3的中断服务程序中则发送Power-Down指令关机。程序清单中给出了主程序以及中断服务程序,另外包括LCD驱动程序以及dsPIC的SPI函数库等。(编者注:源程序见本刊网站www.dpi.com.cn。)

7 总 结
该电路易于实现,功能简单实用,可扩展性较好;输出声音清晰、自然。如要增加录音时间,可选用ISD4000系列的其他芯片,程序基本相同。另外,在设计过程中有以下几点事项需要注意:
①在SPI的数据传输中,不同芯片所定义的传输顺序可能不同,因此要注意是先传高位还是先传低位。ISD4002要求先传高位数据,如果与主芯片所定义的顺序相反,则只要把指令码反过来传即可。
②由于ISD4002要求在时钟前半个周期把数据放在传输线上,因此,在使用dsPIC的SPI函数库时需要注意SPI初始化。在本设计中,使用的配置为SPl—CKE—ONCLK_P0L_ACTIVE_HIGH。
以上两点可能会帮助解决一些常见问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top