详解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中可以设置、查看状态;


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

相关文章

    是ADC的参考基准吗?它有什么用? 答:STM32片内的Vrefint电压不是ADC模块的参考基准,STM32片内ADC的参考基准可以是Vref,或VDDA【多数时候VDDA跟VDD是接在一起的】,有些......
    说一定你要过来上手实践,看实践能力,看你的工作能力。那些题有什么用?没有什么大用处。所以别太在意那些题,咱们要招的是能做点活的(员工)。” ▲相关报道截图 其实,仔细分析这份试卷就会发现,前面......
    STM32F4系列的DMA请求与DMA传输通道的映射关系;STM32家族中的有些系列,比如STM32G0/STM32G4/STM32L4+/STM32H7等系列都内置了DMAMUX模块,它是干什么用......
    STM32F1 _DMA_USART(2024-07-30)
    STM32F1 _DMA_USART;前言 今天总结“STM32F103DMA_USART”,DMA学习过计算机人都明白它是什么意思,就是直接存储器存取(Direct Memory Access......
    行业首个)。值得一提的是,此前这三块屏幕便已经获得德国莱茵T?V颁发的硬件级低蓝光产品认证。 ●莱茵TUV无频闪认证是什么有什么用?    莱茵无频闪认证(TUV Rheinland......
    进入临界有什么用?STM32单片机怎么实现?;有一次我在给内部学员直播的时候,有几个小伙伴问我,为什么要进入临界,临界有什么用? 当时一时半会没想到好的解释,今天举几个例子来解答下。 如果......
    PLC常用基本指令控制系统设计;PLC是一项技能,需要进行不断的练习和实践,作为一个新手小白,要怎么学呢?从哪方面入手? 其实在学习PLC之前,是先了解自己学习需求,比如PLC是个什么产品?你学会了有什么用......
    功放的视频输出有什么用 功放机功率越大音质越好吗?;功放的视频输出有什么用 功放的视频输出并不常见,因为功放主要用于放大音频信号而非视频信号。然而,一些特定的功放可能提供视频输出端口,通常......
    机器视觉中的表面缺陷检测有什么用?;在工业制造的过程中,不可避免会出现各种各样的生产缺陷。 在过去,大部分产品是通过人工肉眼检查,随着机器视觉技术的不断发展,用机器代替人眼已经成为趋势。 表面......
    串激电机上的电容有什么用_串激电机转子好坏怎么测量;  串激电机上的电容有什么用   串激电机上的电容一般被用作抑制电刷产生的火花和电磁干扰,提高电机的运行可靠性和减少噪音。具体来说,串激......

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

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

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

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

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

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

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