基于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.com2.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);
《基于TLV320AIC23和TMS320VC5416的语音系统设计》相关文章
- › 基于TLV320AIC23和TMS320VC5416的语音系统设计
- 在百度中搜索相关文章:基于TLV320AIC23和TMS320VC5416的语音系统设计
- 在谷歌中搜索相关文章:基于TLV320AIC23和TMS320VC5416的语音系统设计
- 在soso中搜索相关文章:基于TLV320AIC23和TMS320VC5416的语音系统设计
- 在搜狗中搜索相关文章:基于TLV320AIC23和TMS320VC5416的语音系统设计