学海荡舟手机网

主页 > 实用文摘 > 教育文摘_04 > > 详细内容

DMA结合McBSP在数据采集系统中的应用设计_DSP论文

摘  要:本文介绍了tms320vc5402 dsp的存储器直接存储控制dma的特点,给出了一种适用的dma结合多通道缓冲串行口mcbsp组成的数据采集系统的设计方案,该设计具有设计灵活、硬件简单、cpu执行效率高的特点。

    关键词: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系统中得到很好的应用。