锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

CC2530芯片DMA控制器配置

时间:2023-09-26 18:07:02 m8直头专用连接器

DMA控制器

DMA(Direct Memory Access)控制器是一种独特的外设,可以将数据转移到系统内部,可以被视为一种内部和外部存储器,可以通过一组特殊的总线DMA能力外设连接的控制器。它属于外设,因为它由处理器编程控制 实施传输。

1.DMA控制器结构

一般而言,DMA控制器将包括地址总线、数据总线和控制寄存器。DMA控制器将有能力访问所需的任何资源,而不需要处理器本身的干预,它必须中断。最后,它必须能够在控制器内计算地址。

一个处理器可以包含多个处理器DMA控制器。有多个控制器DMA通道和多个直接与存储站相连的通道(memory bank)与外设连接的总线如图1所示。两种类型集成在许多高性能处理器中DMA控制器。第一类通常称为系统DMA控制器可以访问任何资源(外设和存储器)。对于这种类型的控制器,信号周期统时钟(SCLK)计数,以ADI的Blackfin处理器为 例,最高频率可达133MHz。第二类称为内部存储器DMA控制器(IMDMA),专门用于内部存储器位置之间的相互访问。因为存取发生在内部 (L1-L1、L1-L2,或者L2-L2)周期数的计数为核时钟(CCLK)为了基准,时钟的速度可以超过600MHz。

每个DMA有一组控制器FIFO,起到DMA缓冲器在子系统与外设或存储器之间的作用。MemDMA(Memory DMA)就传输而言,有一组源和目标端FIFO存在。当资源紧张而不能完成数据传输的话,则FIFO为提高性能提供数据的临时存储区。

因为在代码初始化的过程中,你通常是对的DMA配置控制器,内核只需在数据传输完成后响应中断即可。DMA控制编程,让其与内核并行移动数据,同时让内核执行其基本处理任务——那些应该让它专注于完成的工作。

2.DMA控制器的基本功能

DMA控制器是内存与外设之间高速数据传输的硬件控制电路,是实现直接数据传输的专用处理器,必须能够取代程序控制传输CPU软件完成的各种功能;其主要功能是:

(1)DMAC外设之间有一对联系信号线-外设DMA请求信号DREQ以及 DMAC向外设发出DMA响应信号DACK;

(2)DMAC在接收到DREQ后,同CPU还有一对联系信号线——DMAC向CPU 发出总线请求信号(HOLD或BUSRQ),CPU当前总线周期结束后DMAC发出总线响应信号(HLDA或BUSAK),DMAC接管总线控制权,进入DMA操作方式;

(3)可发送地址信息,搜索存储器并修改地址指针,DMAC地址寄存器可以自动加1或减1;

(4)能够确定传输的字节数并判断DMA传输是否结束。DMA内部必须有能自动减1的字计数寄存器,计数结束时产生终止计数信号;

(5)能发出DMA结束信号,释放总线CPU恢复总线控制权;

(6)可以发出读写控制信号,包括存储器访问信号和I/O访问信号。DMAC内部必须有时序和读写控制逻辑。 有些DMAC芯片和模块在这些基本功能的基础上增加了一些新的功能。如:在DMA传输结束时产生中断请求信号;输出一个脉冲信号,记录传输的字节数,为外部提供周期性脉冲序列;在数据块传输后自动输入新的起始地址和字节数,重复传输数据块或链接多个数据块;生成两个存储地址,从而实现存储器和存储器之间的传输可以实现I/O设备寻址,实现I/O设备与I/O在传输过程中,设备之间的传输可以检索特定字节或进行数据检查。

CC2530芯片DMA控制器配置

以美国TI公司CC2430/CC以2530芯片为代表的2530芯片ZigbeeSOC解决方案在国内高校企业掀起了一股热潮Zigbee技术应用热潮。ZigBee是基于IEEE802.15.关于组网、安全和应用软件技术标准的无线标准开发。其特点是近距离、复杂性低、自组织、功耗低、数据速率低、成本低。ZigBee其技术特性决定了它将是无线传感器网络的最佳选择,广泛应用于物联网、自动控制和监控等领域。

(1)但是一些无线通信的发展不需要依赖Zigbee协议,开发者可以在这里开发自己的协议。一般情况下,使用CC2530的RF通过向寄存器发送数据RFD重复赋值可以将内存中的数据写入RF模块的Buffer在里面,通过选通命令启动RF发送数据。在实时要求较高的应用中,使用寄存器赋值的方法远远大于通过DMA处理内存中的数据Buffer花时间。CC2530里的DMA控制器可以大大释放8051CPU内部检查数据的操作可以使CPU在最小干预下,实现内存到ADC或RF模块之间的数据传输。使用DMA根据处理数据的功能CC2530的datasheet

(2)对DMA一系列配置控制器。本文主要研究两个方面,一是基于应用背景下的实践DMA配置控制器,另一个测试DMA解决控制器中主要故障的方法。

1、DMA控制器

CC2530的DMA控制器的特点:5个独立通道,3个优先级,32个触发事件,独立的源地址和目的地址控制,3个传送模式,支持设置变化的发送长度,单字和双字发送模式。对DMA控制器的设置基本上基于上述7个特点。具体配置项有:Sourceaddress、DesTInaTIonAddress、TransferCount、VLENSetTIng、TriggerEvent、SourceandDestinationIncrement、DMATransferMode、DMAPriority、ByteorWordTransfers、InterruptMask、Mode8Setting。

DMA以应用为基础的配置RF以模块传输数据为例(RF模块需要在其中发送和接收数据buffer通过数据传输与内存之间的数据传输DMA来完成)DMA使用控制器包括对DMA中断配置,DMA设置控制器的参数,DMA启动控制器。

2、DMA配置控制器中断

IEN1|=0x01;//开DMA中断

DMAIRQ=0.//清除标志位

(中断标志位的清除不仅要在中断使用前配置,还要在中断触发后的中断服务程序中清除)。

3、DMA设置控制器参数

DMA通过填写数据结构表来设置控制的参数(ConfigurationDataStructure)。数据结构表中的参数包括:SRCADDR[15:8]、SRCADDR[7:0]、DESTADDR[15:8]、DESTADDR[7:0]、VLEN[2:0]、LEN[12:8]、LEN[7:0]、WORDSIZE、TMODE[1:0]、TRIG[4:0]、SRCINC[1:0]、DESTINC[1:0]、IRQMASK、M8、PRIORITY1:0对应上述配置项。CC2530DMA控制器配置的实现是先将数据表包装成结构,配置结构后将其地址传递给结构DMA0CFGH寄存器,这样才能被接受arm启动。CC2530DMA控制器配置的实现是先将数据表包装成结构,配置结构后将其地址传递给结构DMA0CFGH寄存器,这样才能被接受arm启动。CC2530有两个这样的寄存器,另一个是DMA1CFGH。前者对应通道0的配置信息,后者对应剩余通道(1~4通道)。由于RF模块收发数据取决于DMA,因此使用DMA两个控制器通道。0通道负责将数据从内存转移到Buffer,通道负责从数据Buffer携带内存。在DMA在填写配置表时,源地址填写待发数据的第一个地址(以通道0的配置为例,1通道方法相同),目的地址填写Buffer的地址。RF的Buffer分为TXbuffer和RXbuffer,通道0用于发送数据,因此应填写TXbuffer地址,地址在CC2530的ioCC2530.h宏定义已成为宏(##defineX_RFDXREG(0x70D9),取其地址赋值DESTADDR。

DMA传送的第一个字节应是长度字节lengthbyte,DMA在处理数据之前,将检查值,以确定处理一次的字节。字节设置后,可以通过VLEN改变,VLEN决定最终处理值的选项有四个lengthbyte 1,lengthbyte,lengthbyte 2,lengthbyte 3。特别注意这部分的设计程序,特别是在RF应用中。

LEN决定了DMA即使是最大的长度。VLEN长度大于LEN,搬运的长度仍然是LEN。

WORDSIZE单字节的选择。

TMODE在四个选择single、block、singlerepeated、blockrepeated在中间,可以选择0通道,只能选择1通道single或者repeatedsingle。这个选择决定了每次DMA被触发后,DMA处理机制触发一次是处理字节还是整个数据。因为从数据RF模块的RXbuffer搬运到内存,DMA数据处理时间小于RF因此,模块接收数据的时间是RADIO选择触发模式single或者repeatedsingle可以保证RF模块立即收到一个字节DMA将器转移到内存中,以确保接收到的数据完全存储到内存中。

TRIG选择NONE,手动触发。应选择通道1的配置RADIO,即在RXbuffer收到字节,DMA立即将字节转移到内存中。DMA共有31个触发选项,包括定时器,I/0控制器、UART、Flash控制器、ADC、AES、Debuginterface应用广泛的触发源。

SRCINC和DESTINC每次确定源地址和目的地址DMA在不变、增一、增二、减一四个选项中,完成搬运后地址变更的方式,选择增一的方式,SRCINC选择增一的方式,DESTINC选择不变。这是因为目的地址对应RFD寄存器需要依次将数据携带到寄存器中,然后依次将相应的字节写入TXbuffer中。

IRQMASK屏蔽通道中断配置,IRQMASK|=0x03开通道0和1的中断,同时屏蔽其他的通道的中断。

M8选择处理每个字节的位数。选择87位,其中7位是LSB小端。

PRIORITY优先级的选择。优先级与CPU相比之下,该应用程序应该是DMA优先级设置比CPU高。

4、DMA控制器启动

在填好DMA控制器参数表完成后,表的地址(&DMAConfig0)赋值DMA0CFG,在使用前先arm上DMA,然后手动触发,触发后DMA启动中断服务程序RF发送。

DMAARM|=0x01;//对通道0arm

如果触发模式选择手动触发

DMAREQ |=0x01;//手动触发DMA控制

后才能触发DMA;若是RADIO触发则是收到一个数据会自动触发DMA。

5、DMA控制器测试中主要故障的解决方案

按照CC2530的datasheet对DMA控制器进行按需配置,测试过程中发现一个问题:如果在使用了DMA后,修改DMA参数中源地址SRCADDR的值,在没有将该结构体参数表的地址&DMAConfig[0]重新赋值给DMA0CFG情况下arm后触发DMA,DMA控制器的执行会出现故障,可以进入中断,但是搬运的数据并非我们期望的数据。而修改其他参数则斐然。解决方案是在修改了SRCADDR的值后,重新将&DMAConfig[0]赋值给DMA0CFG。

6、总结

DMA的配置需要细致的阅读CC2530的说明文档,按照开发的需要不断的测试。本文以RF模块的应用为背景,以采用DMA的方式将数据从内存搬运到TXbuffer近而实现无线实时数据传输为例,在实践和反复测试后中,给出了DMA在此应用的配置方案和测试中主要故障的解决方案。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章