当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]C5402 DMA结合MCBSP在数据采集系统中的应用

1前言

       在以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处理的并行操作。 

[!--empirenews.page--]
  4. 软件设计
  本系统软件由C5402初始化程序、McBSP1初始化程序、TLC320AD50初始化程序、DMA1通道初始化程序和数据处理程序构成。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系统中得到很好的应用。
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

《带得走的智能制造》暑期课程圆满落幕 北京2025年7月25日 /美通社/ -- 近日,由国际独立第三方检测、检验和认证机构德国莱茵TÜV大中华区(以下简称"TÜV莱茵")与北京...

关键字: 智能制造 BSP DMA 信息安全

在实时控制系统、高速通信协议处理及高精度数据采集等对时间敏感的应用场景中,中断响应延迟的优化直接决定了系统的可靠性与性能上限。STM32系列微控制器凭借其灵活的嵌套向量中断控制器(NVIC)、多通道直接内存访问(DMA)...

关键字: STM32 DMA

控制寄存器(Control Register)是中央处理器(CPU)中用于管理系统级操作的特殊寄存器,它为操作系统和硬件提供对处理器行为的精细控制。本文从计算机体系结构角度系统阐述控制寄存器的设计原理、功能分类、操作机制...

关键字: 寄存器 处理器

在嵌入式系统、网络通信等对数据传输效率要求极高的场景中,零拷贝技术能够显著减少数据在内存中的拷贝次数,降低CPU负载,提高系统性能。DMA(直接内存访问)环形缓冲区与内存池相结合的双重优化策略,为实现高效的零拷贝数据传输...

关键字: 零拷贝 DMA 嵌入式系统

在嵌入式系统开发中,硬件抽象层(Hardware Abstraction Layer,HAL)起着至关重要的作用。它为上层软件提供了统一的硬件访问接口,隐藏了底层硬件的细节,使得软件具有更好的可移植性和可维护性。C++作...

关键字: 嵌入式C++ HAL 寄存器 封装

采用51单片机最小开发板,由8位自制独立按键控制。单片机芯片为STC89C52RC,晶振为@12.000 mhz。8X8LED点阵屏模块由MAX7219驱动,MAX7219包含一个自动扫描电路。你只需要把要显示的数据发送...

关键字: 51单片机 MAX7219 寄存器

电源管理集成电路(PMIC)有益于简化最终应用并缩小其尺寸,也因此备受青睐。然而,当默认启动时序和输出电压与应用要求不符时,就需要定制上电设置。大多数情况下,电路没有可以存储这些设置的非易失性存储器(NVM)。对此,低功...

关键字: 电源管理 集成电路 寄存器

我从Digilent公司拿出了我的Arty Z7板,并在Vivado/Vitis 2021.2中创建了一个项目来让它工作,你可以在我的上一个项目帖子中阅读,我在QDSP-6061的5位数上显示滚动文本,上面写着“Hell...

关键字: 寄存器 AXI4 QDSP-6061 RTL模块

STM32单片机凭借其高性能、低功耗、丰富的外设资源等优势,在工业控制、消费电子、汽车电子等领域得到了广泛应用。在嵌入式系统开发中,高效的数据处理和传输至关重要。中断技术和DMA技术作为STM32单片机中重要的数据处理和...

关键字: STM32 DMA

在嵌入式系统中,随着数据量的不断增加和实时性要求的提高,传统的CPU直接控制数据传输的方式逐渐暴露出效率低下的问题。为了应对这一挑战,直接内存访问(Direct Memory Access,DMA)技术应运而生,成为实现...

关键字: DMA 嵌入式系统 高速数据传输
关闭