基于TMS320LF2407 DSP控制器语音系统的设计与实现
设接口的特点,在硬件电路设计时考虑到采用的语音处理芯片AD50和2407的时序,配置AD50为主动模式,2407的SPI为从动模式。AD50的基准时序信号MCLK由DSP的系统时钟输出CLKOUT提供,AD50通过内部的PLL分频器将MCLK信号变成SCLK信号,SCLK信号即控制着串行数据流中字符内部位与位之间的定时关系。由于AD50不是标准的串行外设接口,根据 SPICLK端在从动方式下正常工作所需接收的信号波形,将AD50的FS引脚经非门引出,和SCLK相与,它们输出的时序信号和SPI的SPICLK端相连以达到控制两者时序同步的目的。
由于AD50是SPI通信接口的主动器件,为了更好地控制AD50,可将DSP的任意一个没有用到的通用I/O端口作为AD50的使能口,和AD50的PWDOWN端口相连,通过这个通用I/O口来控制AD50的启动和关闭。SPI的使能端SPISTE所要求的使能信号可以由AD50的FSD端口获得,通过对AD50的软件初始化,将FSD输出的使能信号略提前于一次通信的第一位数据的传送时刻,即可以实现在AD50和SPI传输数据的前一时刻将SPI使能。
4.软件设计
当系统要对语音信号进行处理时,首先要正确地初始化SPI和AD50。由于AD50属于DSP的外围器件,且不是标准的通信串口,所以不能象SPI一样通过直接向各寄存器置入初始化值而完成,而必须在AD50的二次通信时将原来置于SPI输出缓冲寄存器里的值,通过串行传输线送入AD50的串行输入端,以完成对AD50的初始化。
SPI初始化如下:
LDP #DP_PF2
LACL MCRB
OR #003CH
;配置SPI各个引脚为特殊功能方式
LDP #DP_PF1
SPLK #000FH,SPICCR
;配置SPI寄存器允许初始化,16位数据输出
SPLK #0003H,SPICTL
;从动方式,时钟方式为无延时的上升沿
SPLK #0002H,SPIBRR
;SPI波特率为10MHz (根据采样率确定波特率)
SPLK #008FH,SPICCR
;初始化结束,并关闭初始化使能位
在初始化AD50过程中,首先向AD50的DIN端口发送0000H,确保第二次向AD50发送字符时,AD50处于一次通信,然后发送一个0001引发二次通信,再分四次把命令字写入AD50,程序如下:
SPLK #0000H,SPIDAT
NOP
XMIT_RDY0:
;确保第二次向AD50发送字符时,AD50处于一次通信
BIT SPISTS,BIT6 ;等待数据
BCND XMIT_RDY1,NTC ;发送完
NOP
LACL SPIRXBUF
NOP
SPLK #0001H,SPIDAT ;开始初始化寄存器2
XMIT_RDY1:
BIT SPISTS,BIT6 ;等待数据
BCND XMIT_RDY1,NTC
;发送完,完成对AD的二次通信请求
NOP
LACL SPIRXBUF
NOP
SPLK #0210H,SPIDAT
;正式初始化寄存器2,(16 BIT ADC MODE )
XMIT_RDY1_1:
BIT SPISTS,BIT6
;等待数据
BCND XMIT_RDY1_1,NTC
;发送完,完成对寄存器2的初始化
NOP
LACL SPIRXBUF
SPI将它要发送的数据放在SPIDAT(一个移位寄存器)内,当SPI的使能引脚SPISTE变低,且SPICLK时钟到来时,SPI便将SPIDAT内的数据通过移位的方式移出该寄存器,同时也以移位的方式将AD50发送的串行数据移入该寄存器。接收完后,SPI将接收到的数据复制到接收缓冲器SPIRXBUF,并将中断标志位置为1。DSP可以通过查询的方式不断查询这个位,当其变为1时,即表明一次数据传输已经结束,此时可以去处理这个数据。
DSP对语音信号进行处理时,可依据需要设计一些滤波器对其进行滤波处理,如FIR、IIR、FFT等。采用以上的硬件电路设计使得滤波器的频率可调,大大扩展了该语音处理模块的应用范围
DSP 控制器 TMS320LF2407 语音模块 相关文章:
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)