AD50和DSP的硬件连接有多种方法,但使用多的是DSP的缓冲串口和AD50连接方法。这种连接方法可使一个缓冲串口与多个AD50芯片连接(一个缓冲串口多与3个AD50芯片连接)。
DSP为主设备、AD50为从设备的连接方法如图1所示。图中AD50的时钟信号由C5409的定时器0的输出提供,时钟频率可以通过修改定时器0的设置而改变。AD50的FC引脚连接到C5409的XF(通用I/O引脚),用于控制第二次串行通信。AD50的DIN(数据输人引脚)和D0UT(数据输出引脚)分别接C5409缓冲串口0的DX0和DR0引脚。AD50的SCLK(移位时钟输出)连接C5409的CLKR0(缓冲串口0的接收时钟引脚),帧同步信号FS连接C5409缓冲串口0的FRX0。
图1 AD50和一个DSP的连接
DSP带两个AD50,其中一个AD50为主设备,一个AD50为从设备的连接方法如图2所示。
图2 两个AD50和DSP的连接
DSP一般不能同时连接两个都是从设备的AD50芯片,但如果使用了PLD(逻辑器件)就可以实现连接两个从设备的AD50,具体的连接方法如图3所示。
图3 两个从AD50和DSP的连接
语音数据传输到DSP的MCBSP。MCBSP和CPU的通信有3种方式。
(1)每收到或发送一个单元,置标志位,CPU轮询此标志位。
(2)每收到或发送一个单元,给CPU发送中断。
(3)通过DMA收到或发送完一组单元,再给CPU中断。
采用DMA的方式,即串口每发送或接受到一个单元,都会自动触发DMA将其搬送到一个内部的缓冲区(Buffer),等Buffer满了再通过中断方式告诉CPU处理。这时DMA采用自动缓冲(ABU,Auto Buffering)模式,在这种模式下,DMA会在两个Buffer(其实是一个大Buffer的前一半和后一半)之间自动切换,每个Buffer满了(接收)或空了(发送)都会给CPU发出中断,在CPU处理这个Buffer的时候,DMA会自动去操作另一个Buffer。采用这种方式可以有效防止Buffer中的数据在串口速率较高时被新数据冲掉的问题。
在DMA的中断服务程序中为了可靠可以把这个Buffer的数据再拷贝到另一个待处理的空间,即两级Buffer,然后置标志位,CPU在主程序中查询标志位然后作出相应的处理。DMA操作的Buffer可以通过寄存器配置,Buffer的大小和起始位置应设置正确。在指定Buffer的起始位置时应该注意,起始位置应该为大于Buffer大小的下一个2的整数幂的倍数。例如,在8KB、16bit采样的情况下,以20ms数据为Buffer大小,那么处理的数据是8000×32×0,02=5120bit-320Word。所以,DMA的Buffer应为640Word(两个320Word Buffer)大小,而Buffer的起始地址应该为1024=210>640的整数倍,如0x7000,0x7400……
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。