DMA结合McBSP在数据采集系统中的应用设计
DMS位和DMD位用来选择源数据和目的数据所存的空间,可选择成程序空间(=00b)、数据空间(=01b)、I/O空间(=10b)或保留(11b)。
此外,DMA的6个通道还受通道优先级和使能控制寄存器DMPREC控制。在这个寄存器中相应的DPRC位置1选择相应的通道为高优先级,相应的DE位置1选通相应的通道为使能通道并开始工作。
3. 接口设计
在这个系统中,使用的A/D数据转换芯片是语音信号编码解码芯片TLC320AD50。它是TI公司生产的一个16位、音频范围、内含抗混叠滤波器和重构滤波器的串行模拟接口芯片
。它完成语音信号的数字化采样,并将转换完的数据传给DSP进行后续处理。
C5402提供两个高速、全双工、多通道缓冲串行口McBSP。它依靠三个信号实现发送数据和接收数据:数据线D(R/X)、帧同步线FS(R/X)和移位时钟线CLK(R/X)。DX和DR引脚完成与外部设备进行通信时数据的发送和接收,由CLKX、CLKR、FSX、FSR实现时钟和帧同步的控制。发送数据时,CPU将要发送的数据写到发送数据寄存器DXR,在FSX和CLKX作用下,由DX引脚输出。接收数据时,来自DR引脚的数据在FSR和CLKR作用下,从数据寄存器DRR中读出数据。CLKX、CLKR、FSX、FSR既可以由内部采样率发生器产生,也可以由外部设备驱动。
设置DMA1通道与McBSP1通道结合来读取TLC320AD50转换完的数据。选择McBSP1通道的接收寄存器DRR11(41h)为DMA传送数据的首地址,并选择源地址工作在访问后不调整方式,选择DMA通道同步事件McBSP1接收事件为DMA同步事件,来实现DMA和McBSP的结合。TLC320AD50转换完的数据按McBSP1的设置被送到C5402内部接收寄存器DRR11中,再由DMA将DRR11中的数读到指定数据存储区来完成数据采集。DMA在传送外部来的数据时不会影响CPU的正常运行,当DMA采集完一组规定个数的数据后产生一个DMA中断事件中断CPU,来通知CPU对其进行相应的处理,此时DMA可以按照设定继续采集下一组数据,实现了数据采集与CPU处理的并行操作。图1为系统硬件接口设计。
4. 软件设计
本系统软件由C5402初始化程序、McBSP1初始化程序、TLC320AD50初始化程序、DMA1通道初始化程序和数据处理程序构成。图2为本系统软件流程图。
C5402初始化程序完成DSP堆栈、CPU时钟和运行状态的设置。
McBSP1初始化程序设置McBSP1的工作状态:运行在时钟自由运行状态下,接收/发送帧同步信号和移位时钟信号都由外界驱动,每帧一字,每字16位,接收数据和发送数据都无延时。
TLC320AD50初始化程序完成TLC320AD50相关寄存器的设置:选择INP/INM为模拟信号输入端,15+1位ADC和15+1位DAC模式,工作在主机模式,不带从机,采样频率为10.67KHz,模拟信号输入和输出放大增益均为0dB。
DMA1通道初始化程序初始化DMA1,具体程序如下:
……
stm #0005h, 55h ;选择DMA1通道
stm #0041h, 56h ;设置McBSP1接收端为DMA事件的源地址
stm #0200h, 56h ;设置DMA事件的目的地址
stm #0100h-1,56h ;设置直接传送数据个数为0100h个
stm #5000h, 56h ;设置McBSP1接收同步模式,一帧接收一个字
stm #404dh, 56h ;设置DMA工作在多帧模式,源地址不