基于TLV320AIC23和TMS320VC5416的语音系统设计

[10-10 20:36:41]   来源:http://www.88dzw.com  电子制作   阅读:8552

文章摘要:2.2硬件接口设计VC5416有3个McBSP,可以方便地利用其中2个McBSP完成对AIC23的控制和通信,其中VC5416的McBSP0与AIC23的数据口相连,McBSP1与AIC23的控制口相连。AIC23芯片是一个可编程芯片,内部有11个16位寄存器,控制接口具有SPI和I2C工作方式,这两种工作方式由MODE引脚来选择,即:MODE=0为I2C模式;MODE=1为SPI模式。AIC23与VC5416的接口电路见图2。图2 AIC23与VC5416的接口电路VC5416的2个多通道缓冲串口McBSP分别配置为I2C模式和SPI模式。McBSP0作为数据的发送和接收端口;McBSP1对

基于TLV320AIC23和TMS320VC5416的语音系统设计,标签:电子小制作,http://www.88dzw.com

2.2硬件接口设计

VC5416有3个McBSP,可以方便地利用其中2个McBSP完成对AIC23的控制和通信,其中VC5416的McBSP0与AIC23的数据口相连,McBSP1与AIC23的控制口相连。

AIC23芯片是一个可编程芯片,内部有11个16位寄存器,控制接口具有SPI和I2C工作方式,这两种工作方式由MODE引脚来选择,即:MODE=0为I2C模式;MODE=1为SPI模式。

AIC23与VC5416的接口电路见图2。

图2 AIC23与VC5416的接口电路

VC5416的2个多通道缓冲串口McBSP分别配置为I2C模式和SPI模式。McBSP0作为数据的发送和接收端口;McBSP1对CODEC写控制字,作为控制端口;AIC23作为从设备,因此设置为Slave模式,而VC5416则设置为Master模式,Codec采样率设置为8kHz。

2.3 BOOTLOADER设计

VC5416片内ROM中有固化的自加载程序(BOOTLOADER),但它对被加载程序的大小有限制。在使用8bit Flash的情况下,只能加载小于16KWord的内容。而三个速率的SELP算法程序区和数据区的总数据量远远超过16KWord,显然只使用片内的BOOTLOADER是不能满足需要的。所以必须自己写加载程序。首先由VC5416片内的BOOTLOADER把自己写的加载程序加载到片内RAM,然后执行这段加载程序,加载其它部分。这里需要解决的一个主要问题就是Flash数据和片内地址空间的映射关系。由于SELP算法的程序数据总量很大,所以必须用到片内扩展的程序区,也就是说MP/MC标志位需要设为0。从此时的Memory Map中可以看出,VC5416可以访问的每块连续片外地址空间只有32K,所以Flash数据只能按照每页32K的方式分页映射到片内地址空间。使用FPGA可以很方便地控制哪页Flash数据映射到片内中,这部分的原理框图如图3所示。

图3 BOOTLOADER原理

3接口软件设计

本系统的软件采用C语言和汇编语言混合编写。由于是利用VC5416的McBSP口来控制AIC23芯片,且2个McBSP口设置成不同的工作方式,所以必须把McBSP初始化为符合AIC23芯片的控制命令时序和要求的工作模式。由于篇幅本文只列出对VC5416及AIC23芯片初始化设置时的部分代码。

3.1 TMS320VC5416初始化

SWWSR=0x7fff;/程序、数据、I/O空间

SWCR=0x0001;/等待周期为7×2=14

BSCR=0x8006;/按32KW分区,HD[7:0],D[15:0]Hold

CLKMD=PLL_DIV_INIT;

Waitloop(0x0400);

CLKMD=PLL_LOCK_INIT_X(5);

Waitloop(0x0400);

PMST=0x0168;/中断向量表定位在0X100,MP/MC=1

OVLY=1,DROM=1;

3.2 TLV320AIC23初始化

为使AIC23正常工作并产生预期的音频效果,必须对其相应的寄存器进行配置。首先对VC5416的I2C模块初始化,将AIC23总线上的地址写入从机地址寄存器ICSAR;再把相应的AIC23内部映射寄存器的地址和待写数据合并为16bit控制字,逐次写入ICDXR,并通过I2C总线发送给AIC23,即可完成对AIC23的初始化配置。

AIC23初始化的部分源代码:

Unsigned int codec_buf[9]={OX1e00,OXOc00,OxO81a,OxOaO4,OxOe01,0x1020,0x1021,0x0117,OxO5f9};

Port_sub_address=(unsigned int*)MCBSP_SPSA_ADDR(1);

Port_sub_index_reg=(unsigned int*)MCBSP_SPAD_ADDR(1);

上一页  [1] [2] [3]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作

《基于TLV320AIC23和TMS320VC5416的语音系统设计》相关文章