详解STM32的DMA功能

发布时间:2024-01-17  

本文将介绍STM32的DMA功能;

①DMA介绍

②STM32F4-DMA功能框图及详解

③DMA的增量设置、模式、中断

①DMA介绍

DMA是direct memory access的缩写,即直接存储器访问;DMA是通过硬件在RAM和IO设备之间开辟一条通道,使得采集到的数据直接存到RAM,使得数据的传输不需要经过CPU读数据再将数据放入RAM、这样极大提高了CPU的效率。

②STM32F4-DMA功能框图及详解

wKgZomRHMaKAQh-vAAFYKSnFrwM368.jpg

外设通道:

wKgaomRHMaOAX9sxAACx8iuP1NQ353.jpg

STM32F4具有2个DMA控制器,每个DMA控制器有8个数据流,每个数据流可以从8个外设请求中选择一个作为该数据流的外设通道;外设通道就是数据流的源地址或者目标地址;外设通道的选择可以通过DMA数据流x的配置寄存器DMA_SxCR的CHSEL[2:0]位配置;

以下是DMA1的外设通道表:

wKgZomRHMaOAQ6E4AAIHP_-spxg373.jpg

数据流仲裁:当同时存在多个数据流在工作时,需要数据流仲裁器管理判断数据流的优先传输;数据流传输的优先级可以通过配置控制寄存器DMA_SxCR的PL[1:0]位,来选择优先级为非常高、高、中、低;当多个数据流的优先级相同时,数据流的编号越低、优先级越高;

数据FIFO:

每个数据流都有一个4字(16字节、4个32位寄存器)FIFO(先进先出存储器缓冲区),DMA的传输具有FIFO模式和直接模式;

直接模式:当出现DMA请求时,会进行数据的传输到存储器;若DMA的请求配置设置为存储器到外设模式传输数据时,DMA会将数据从存储器预加载到FIFO中、当外设触发DMA请求时数据立即传输给外设;

FIFO模式:当数据量达到一定数量时,进行数据的传输;可以通过配置DMA_SxFCR的FTH[1:0]位来设置FIFO的阈值级别为FIFO的1/4 、2/4 、3/4。如果数据量达到阈值则FIFO中的数据将被传输到目标地址;

4-5、外设端口、存储器端口:

wKgaomRHMaSAA87jAAHRHPAYMLE136.jpg

DMA1的控制器的存储器端口接在AHB总线上,外设端口接在APB1外设上;所以DMA1可以控制数据在外设与存储器之间传输,但不能实现数据在存储器与存储器之间传输;

DMA2的控制器的存储器端口和外设端口都有接到AHB总线上说以与DMA1相比,DMA2比DMA1多一个数据在存储器与存储器之间传输的模式;

③DMA的增量设置、模式、中断

DMA的传输模式:DMA的传输模式有外设与外设之间的传输、外设与存储器之间的传输、存储器与存储器之间的传输;模式的选择可以通过DMA_SxCR寄存器的DIR[1:0]位控制;

DMA传输的源、目的、长度:

外设寄存器地址在DMA_SxPA寄存器中设置;

存储器地址在DMA_SxM0AR寄存器中设置;

数据的传输量在寄存器DMA_CNDTRx中设置

传输数据的位宽在DMA_SxCR寄存器的PSIZE MSIZE位设置(尽量设置为一致)

DMA的增量设置:

通过设置DMA_SxCR寄存器中的PINC MINC位的状态,可以使得外设和存储器在每次数据传输后地址递增或地址不变;当选择为递增模式后,地址的增量就是数据的位宽

循环模式:循环模式用于循环处理缓存区和连续的数据传输(ADC的扫描模式),可以通过DMA_SxCR寄存器中的CIRC位来选择为循环模式;循环模式下当一轮数据传输完成后,下一次开始的地址和上一次的数据传输地址一样;

DMA的单次传输和突发传输:

DMA有单次传输和突发传输,DMA控制器可以产生4、8、16个节拍的增量突发传输(原本一次传输一个数据位宽,4个节拍就是4个数据位宽一次性一起传输);突发传输的大小通过DMA_SxCR寄存器中的MBURST[1:0]和PBURST[1:0]位对两个AHB端口独立配置;

在突发传输下、AHB的总线仲裁器会一直授权给DMA主总线AHB的传输会锁定其它总线暂时使用不了,使得突发传输不可被打断从而保证了数据的一致性;

每个DMA数据流在传输的时候可以触发以下中断:

wKgZomRHMaSAD6olAADkFwmQoDA028.jpg

在DMA_xISR中可以设置、查看状态;


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>