TLC320AD50C与DSP接口设计
(2)AD50初始化。该初始化操作过程包括通过TMS320VC5402的同步串口发送两串16位数字信息到AD50。第一串为0000 0000 0000 0001B,最低有效位(bits0)说明下一个要传输的数据字属于二次通信(关于一次通信和二次通信的内容请参阅参考文献[3])。第二个数据值用来对AD50的4个数据寄存器的某一个进行配置。Bits15~11位为0,Bits10~8位为所选寄存器地址值,Bits7~0位为所选中寄存器的编程值。4个用户可编程寄存器的描述如下:R1中包含模拟输入通道选择,硬件 / 软件编程方式选择;R2进行单机 / 从机工作和电话模式(电话模式内容请参阅参考文献[3])选择;R3控制带从机个数选择;R4用来设置模拟信号可编程放大增益和A/D、D/A转换频率。其它两个寄存器R5、R6是厂家留着测试用的,用户不可以对其编程。我们在以下例程中对4个可编程寄存器编程,使AD50C工作在以下状态:选择INP/INM为工作模拟输入,15+1位ADC和15+1位DAC模式,不带从机,采样频率为10.67KHz,模拟信号输入和输出放大增益均为0dB。
(3)用户代码的编写。完成音频信号采集与回放代码的编制。本设计给AD50编程用查询方式,接收A/D转换的D信号和发送D/A转换的D信号用DMA方式。
3.2 软件具体实现
(1) 程序流程图:
(2)部分关键代码:
Ⅰ, TMS320VC5402中断及串口初始化
……
stm #0002h, 48h
stm #0040h, 49h ; 设置DSP串口1工作在每帧一个字,每个字16位模式
……
stm #0006h, 48h
stm #0100h, 49h ; 设置CLKGDV=0,使串口1工作在最大频率
stm #0007h, 48h
stm #0a000h, 49h ;设置CLKSM=1,采样率发生器时钟由DSP内部产生
stm #000eh,48h
stm #0008h,49h ;设置FSXP=1,使帧同步脉冲低电平有效
stm #0080h,imr ;DMA一通道中断使能
rsbx intm ;开放所有可屏蔽中断
……
Ⅱ, AD50初始化
ld #0001h,a ;D0=1,请求第二次交流
stlm a,43h ;向TLC320AD50C写数据
aa: stm #0001h,48h
ldm 49h,a
and #0002h,a
bc aa,aeq ;数据是否被TLC320AD50C接收
ld #0180h,a ;给TLC320AD50C的寄存器1编程,使其复位
stlm a,43h
bb:stm #0001h,48h
ldm 49h,a
and #0002h,a
bc bb,aeq ;编程数据是否被TLC320AD50C接收
……
stm #0100h,a ;TLC320AD50C脱离复位并且设置寄存器1,使INP,INM为输入
……
stm #0200h,a ;设置TLC320AD50C寄存器2,使电话模式无效
……
stm #0460h,a ;设置TLC320AD50C寄存器4,使采样频率为10.667KHz
……
stm #0300h,a ;设置TLC320AD50C寄存器3,使带0个从机
……
Ⅲ, DMA1通道初始化
stm #05h, 55h ;选择DMA1通道
stm #0041h,56h ;设置串口1接收端为DMA事件的源地址
stm #027fh,56h ;设置DMA事件的目的地址
stm #3000h,56h ;设置直接传送数据个数
stm #5000h,56h ;设置串口1同步模