DMA结合McBSP在数据采集系统中的应用设计_DSP论文
关键词:dsp;dma;mcbsp
1.引 言
通用数字信号处理器(dsp)以其强大的数据处理能力在高速数字信号处理方面得到广泛的应用。美国ti公司是dsp领域影响最大的公司之一,tms320vc5402(以下简称c5402)是该公司tms320c54x系列dsp的代表产品,它以其极高的性价比而成为目前应用最为广泛的dsp芯片之一。
在以c5402 dsp为核心组成的数据采集系统中,用户一般需要在采集完一段数据后对其进行处理。采用查询方式采集数据会占用大量cpu的资源,采用中断方式来采集数据虽可以提高cpu的利用率,但是在采集数据的每个时刻还是由cpu来完成,同时降低了程序的可读性。本文设计的数据采集系统利用c5402的存储器直接存储控制dma与多通道缓冲串行口mcbsp结合来设计系统,使得cpu正常工作与dma数据采集并行进行,提高了dsp的运行效率。
2. c5402 dma的特点
c5402存储器直接存储控制dma能在不占用cpu资源的情况下,实现dsp存储器间数据的自由传送。c5402有6个可独立编程的dma通道,每个dma通道受各自的5个16位寄存器控制:源地址寄存器dmsrc、目的地址寄存器dmdst、单元计数寄存器dmctr、同步事件和帧计数寄存器dmsfc、发送模式控制寄存器dmmcr。
1. 源地址寄存器dmsrc规定dma要传送源数据的首地址。这些地址可以指向dsp内部存储器、外部存储器、片内外设和一些特殊的外部装置。
2. 目的地址寄存器dmdst规定dma要传送数据目的地址的首地址。这些目的地址可以是dsp内部存储器、外部存储器、片内外设和一些特殊的外部装置。
3. 单元计数寄存器dmctr规定dma传送数据的个数为dmctr寄存器的值加1个。
4. 同步事件和帧计数寄存器dmsfc规定dma传送数据的同步事件类型和传送一块数据所含帧信号的个数:
dblw位设置dma工作在单字模式(=0b)或双字模式(=1b)。工作在单字模式时每个数据单元设置为16位,双字模式时每个数据单元设置为32位。
frame count位设置每块数据所含帧信号的个数。
dsyn位设置选择如下方式作为dma同步事件:
0000b:无同步事件。
0001b:mcbsp0接收事件(revt0)。
0010b:mcbsp0发送事件(xevt0)。
0101b:mcbsp1接收事件(revt1)。
0110b:mcbsp1发送事件(xevt1)。
1101b:定时器0中断事件。
1110b:外部中断3(int3)中断事件。
1111b:定时器1中断事件。
其它:保留。
5.传输模式控制寄存器dmmcr规定了dma通道的传输模式:
autoinit位是dma自动初始化设置位,可设置成自动初始化使能(=1b)和自动初始化不使能(=0b)。当dma工作在自动初始化模式时,cpu在一个dma事件完成后自动装载下一个dma初始化设置并继续进行数据传送。
dinm位和imod位设置dma中断产生方式。dinm=0时dma中断被屏蔽,当dinm=1时中断按imod位设置产生。
ctmod位设置发送计数模式控制,dma可工作在多帧模式(=0b)和自动缓冲abu模式(=1b)。
sind位和dind位用来设置源地址和目的地址的自动调整方式,可选择如下方式:不调整(=000b)、访问后自动加1(=001b)、访问后自动减1(=010b)、访问后按照单元地址索引寄存器dmidx0的设置进行调整(=011b)、访问后按照单元地址索引寄存器dmidx1的设置进行调整(=100b)、访问后按照单元地址索引寄存器dmidx0和帧地址索引寄存器dmfri0的设置进行调整(=101b)、访问后按照单元地址索引寄存器dmidx1和帧地址索引寄存器dmfri1的设置进行调整(=110b)、保留(=111b)。
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工作在多帧模式,源地址不调整,目的地址按单元地址索引寄存器dmidx0的值为步长进行调整
stm #20h, 55h
stm #0001h, 57h ;设置单元地址索引寄存器dmidx0的值为1
stm #0282h, 54h ;设置dma1通道为高优先级并使能dma1通道
……
5. 结束语
本文提出的dma结合多通道缓冲串行口mcbsp组成数据采集系统的实现方法,大大减少cpu的工作量,简化软件设计,有效地利用dsp的硬件资源,提高信号采集系统的执行效率,已经在本校信号处理实验室的dsp系统中得到很好的应用。