开发板使用stm32f2和stm32f4dma控制器_第1页
开发板使用stm32f2和stm32f4dma控制器_第2页
开发板使用stm32f2和stm32f4dma控制器_第3页
开发板使用stm32f2和stm32f4dma控制器_第4页
开发板使用stm32f2和stm32f4dma控制器_第5页
已阅读5页,还剩31页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

应用笔使用STM32F2STM32F4DMA控制前本应用笔记对如何使用STM32F2xx和STM32F4xx应用笔使用STM32F2STM32F4DMA控制前本应用笔记对如何使用STM32F2xx和STM32F4xx系列直器控制器(DMA)行了说明。STM32F2xx/F4xxDMA控制器所具有的系统架构、多层总线矩阵系统等使其能够为应用提供很高的数据带宽,让用户可以开发出响应迅速的应。本应用笔记还提供了一些使用DMA的技巧,以便开发者能够充分利用STM32F2和STM32F4DMA的特性来为不同的外设和子DMA请求保证足够快的响应时间。本文档中,使"STM32F2/F4代替STM32F2xxSTM32F4xx“DMA”代DMA控制器本应用笔记适用于表1中所列产品1适用产本应用笔记应与STM32F2/F4参考手册(RM0031、RM0090和RM0368)共同阅读使用20152DocID022648Rev类产品料STM32F2xx(STM32F205,STM32F207,STM32F215,STM32F217)STM32F4xx(STM32F401,STM32F405,STM32F407,STM32F415,目目1.............................................DMA传输特 DMA数目目1.............................................DMA传输特 DMA数据流/通 数据流优先 源和目标地 传输模 传输数据量大 递增源/目标地 源和目标数据宽 传输类 DMAFIFO模 源和目标突发大 双缓冲区模 流量控 设置DMA传 2...............................................多层总线矩 定 循环调度优先级方 进行总线矩阵仲裁,而DMA传输延时变差的情 DMA传输路 双DMA端 DMA传输状 DMA请求仲 AHB-to-APB 双AHB-to-APB端 AHB-to-APB桥仲 3如何预估DMA延 DMA传输时 示默认DMA传输时 并发存取时对应的DMA传输时 .....................................................DocID022648Rev目ADC-to-SRAMDMA传 SPI全双目ADC-to-SRAMDMA传 SPI全双工DMA传 4对DMA控制器进行编程时的一些技巧和忠 5结 6修订历 DocID022648Rev表格索表格索表格索表格索可用产 DMA1请DMA2请....................................................................................................................STM32F401产品的DMA1请...................................................................................STM32F401产品的DMA2请可能的突发配 使用不同的DMA路径,其对应的外设端/传输时 器端 /传输时 DMA外设(ADC)端口传输延 器(SRAM)端口传输延 文档修订历 DocID022648Rev索索索索DMA框 通道选 DMA源地址和目标地址递 FIFO结 DMA突发传 双缓冲区模 系统架 CPU和DMA1请 五个主设备请 中断发起的CPU传输带来的DMA传输延 DMA双端 外设 器传输状 器到外设传输状 DMA请求仲 AHB-to-APB1桥上同时发生CPU请 SPI全双工DMA传输时 DocID022648Rev1DMA是一AMBA先进高性能总(AHB)模块,它具有三个AHB1DMA是一AMBA先进高性能总(AHB)模块,它具有三个AHB端口:1编程的从端口和2个允许DMA在从模块之间进行数据传输的主端口(外设DMA使得数据传输进行,而无需Cortex-Mx处理器干预。在数据传输过程中,主处器能够执行其他任务,仅当需要处理一个完整数据块时才会被中断可以在不显著影响系统性能的情况下进行大量数据的传输DA主要用于实现不同外设模的集中数据缓冲 (通常在SRAM中。在分布式方案中,每个外设均需实现其各自的本地数,该解决方案从硅片面积的使用和功耗方面来说是比较便宜的STM32F2/F4DMA控制器充分Cortex-Mx哈佛结构和多层总线系统的优势,保证DMA传输和CPU中断响应的及时性DMA传输属DMA传输的属性如下DMA数据流通道/目标地址递增或非增FIFO模流1DMADocID022648RevDMA框โ䃪〛㑂⼷〛下面的章节对DMA的每个传输属性进行详细描述DMA数据流通STM32F2/F4器件集成了2DMA控制器,提供了共16个数据(每个控制器每个数据流共有多达8个可选通道(请求),可由图2描述了某个特定数据流的通道选择器请求配置,允许多个外设启动DMA请求DMA框โ䃪〛㑂⼷〛下面的章节对DMA的每个传输属性进行详细描述DMA数据流通STM32F2/F4器件集成了2DMA控制器,提供了共16个数据(每个控制器每个数据流共有多达8个可选通道(请求),可由图2描述了某个特定数据流的通道选择器请求配置,允许多个外设启动DMA请求DocID022648Rev''''''''")#ͧ䃪")#ͧ䃪3&2@4533&2@4533&24533&2@4533&2@453 3&2@453 3&@453&".О㷭3&2@4533&2@4533&2453䕆䕿䔵㑂⼷2.通道选0注在一个数据流中,同一时刻仅有一个通道/请求是有效的多个使能的DMA数据流不能为同一个外设DMA请求服务2和3描述了DMA数据流通道对应的外设请(STM32F401之外的所有产品)STM32F401产品的请求配置见4和52.通道选0注在一个数据流中,同一时刻仅有一个通道/请求是有效的多个使能的DMA数据流不能为同一个外设DMA请求服务2和3描述了DMA数据流通道对应的外设请(STM32F401之外的所有产品)STM32F401产品的请求配置见4和5。2.DMA1请1.这些请求仅适用于STM32F42xxSTM32F43xxDocID022648Rev外设请数据流数据流数据流数据流数据流数据流数据流数据流---- ---3.DMA2请这些请求仅适用于STM32F42xx和STM32F43xx4和5描述了STM32F401产品的DMA数据流/通道对应的外设请求4STM32F401产品的DMA1请DocID022648Rev外设请数据流数据流数据流数据流数据流数据流数据流数据流------T-----3.DMA2请这些请求仅适用于STM32F42xx和STM32F43xx4和5描述了STM32F401产品的DMA数据流/通道对应的外设请求4STM32F401产品的DMA1请DocID022648Rev外设请数据流数据流数据流数据流数据流数据流数据流数据流------T----------T------外设请数据流数据流数据流数据流数据流数据流数据流--- ---------5STM32F401产品的DMA2请STM32F2/F4DMA请经过了精心设计应用可以更加灵活地为关联的外设请求置DMA传输通道,并且通过复用相应的DMA数据流和通道可覆盖大部分应用数据流优先每个DMA端口都有一个仲裁器来处理DMA数据流之间的优先级。数据流优先级可配置(共5STM32F401产品的DMA2请STM32F2/F4DMA请经过了精心设计应用可以更加灵活地为关联的外设请求置DMA传输通道,并且通过复用相应的DMA数据流和通道可覆盖大部分应用数据流优先每个DMA端口都有一个仲裁器来处理DMA数据流之间的优先级。数据流优先级可配置(共4 的DMA数据流具有同样优先级别,则使硬件优先(0比数据1优先级高,以此类推)源和目标地DMA传输由源地址和目标地址决定。源和目(地址)均应当在AHB或内,并且与传输宽度保持一致范围传输模DMA能够实3种不同的传输模式外设器器到外设器(仅DMA2能够实现该传输,在这种模式下,禁用循环和直接模式。器DocID022648Rev外设请数据流数据流数据流数据流数据流数据流数据流-------------------------------------传输数据量大仅当DMA数据源到目标传输的数据总量。传输数据量大小DMA_SxNDTR寄存器值和外设端的数据传输宽度决定。随着已接收的请(批量传输数据量大仅当DMA数据源到目标传输的数据总量。传输数据量大小DMA_SxNDTR寄存器值和外设端的数据传输宽度决定。随着已接收的请(批量或单个的),传输数据总量减少,减少量为已传输数据量。递增源/目标地可以将DMA配置为每次数据传输之后自动递增源和/或目标地址3.DMA源地址和目标地址递源和目标数据宽源和目标数据宽度定义如下●字节(8位)半字(16位(32位●●传输类循环模式:循环模式能够管理循环缓冲区和连续数据流(DMA_SxNDTR寄存器自减0后会自动重载预先设置的值)正常模式:一旦DMA_SxNDTR寄存器自减到零,传输即(DMA_SxCR寄存器EN0)。DMAFIFO模每个数据流都有一个独立的4字(4*32位)FIFO,阈值级别可配置为1/4、1/2、或满。FIFO用于在源数据传输到目标之前临这些数据DMAFIFO可通使能或禁用;禁用时,使用直接模式。如果使能了DMAFIFO,则/拆包以及批量DMAFIFO阈值决定了器端口请求时间DocID022648Rev%."᪜ᢚь 䔾 䔾STM32F2/F4器件上的DMAFIFO能够减少SRAM存取次数,因此可为其他主设总线矩阵提时间而不会有额外并允请求处理批量传输,从而优化传输带宽允许对数据进行打包和拆包,以适应STM32F2/F4器件上的DMAFIFO能够减少SRAM存取次数,因此可为其他主设总线矩阵提时间而不会有额外并允请求处理批量传输,从而优化传输带宽允许对数据进行打包和拆包,以适应源和目标数据宽度的不同,而无需额外DMA存取4.FIFO结DocID022648Rev ⎼喝ႃ Ⱊᴳ喝############### 888 ⎼喝ႃ Ⱊᴳ喝############### ))))))) ⎼喝 Ⱊᴳ喝))))))) 888 ⎼喝 Ⱊᴳ喝ႃ))))))) ####### #######))))))))))))))))8888源和目标大DMAFIFO的实现保证了批量传输(正常进行)5DMA批量传作为对外设批源和目标大DMAFIFO的实现保证了批量传输(正常进行)5DMA批量传作为对外设批量传输请求的响应,DMA读/写批量传输数据量(4x、8x或16x个数据单元,数据单元可以是字、半字或字节)对应的数据单元的数目。DMA外设端口的批量传输数据量大小需根据外设需求/能力来设置。器端口的DMA批量传输数据量大小和FIFO阈值配置必须匹器端口上进行器批量传输数据量、FIFO阈值配置为了保持数据连贯性,批量传输中每次传输是不会把打断的AHB传输锁定,AHB总线矩阵裁器在批量传输过程中不 DMA控制器这个主设备权DocID022648Revโ䃪䄣โ表6.可能的批量传输配MBURST=MBURST=MBURST=FIFO级41次批量传42次批量传81次批量传字43次批量传44次批量传82次批量传161次批量满41次批量传半42次批量传81次批量传满字41满双缓表6.可能的批量传输配MBURST=MBURST=MBURST=FIFO级41次批量传42次批量传81次批量传字43次批量传44次批量传82次批量传161次批量满41次批量传半42次批量传81次批量传满字41满双缓冲区模除了有两器指针之外,双缓冲区数据流的工作方式与常规(单缓冲区)数据流的一样缓冲区模式时,循环模式将自动启用 器指针在传输事务结束启寄存器达到0)时切换器区域的DMA传输还可以填/使用第二这样在处理一器区域6.双缓冲区模DocID022648Rev%."4Y. %."4Y. %."端口的基址(DMA_SxM0AR当DMA_SxCR寄存器的端口的基址(DMA_SxM0AR当DMA_SxCR寄存器的目标 区域0,因区域1(DMA_SxM1AR)的基址可被更新当DMA_SxCR寄存器的CT位等于1DMA传输的储区域0(DMA_SxM0AR)的基址可被更新。目标 区域1,因而流流量控制器是控制数据传输长度的单元,能DMA传输停止。流量控制器可以DMA或外设。使用DMA作为流量控制器这种情况下,使DMA数据流之前DMA_SxNDTR寄存器中定义传输数据量。响DMA请求时,传输数据量值减少,减少量为已传输的(取决于请求类型:突发或当传输数据量值0DMA传输DMA数据流停止使用外设作为流量控制器这种情况下待传输的数据项的数目是未知的。当所传输的是最后的数据时,外设通过硬件DMA控制器发出指示。只有SD/MMC外设支持这种模式设置DMA传可使用下面的过DMA数据流x(这里的x为数据如果使能了数据流,通过复位DMA_SxCR寄存器中EN位将,然此以确认没有正在进行的数据流操作。将此位写0不会立即生效,因为实际上只有所前传输都已完成时才会真正变为0EN位的值0时,才表示可以配置数流了。因此在开始任何数据流配置之前,需要等待EN位清0。应将先前的数据块DocID022648Rev的位清的位清在DMA_SxAR在DMA_SxMA0R寄存(在双缓冲区模式的情况下还有DMA_SxMA1R寄存器) 器地数据或将数据写入器在DMA_SxNDTR寄存器中配置要传输的数据项的总数。每出现一次外设事件或每出现一个节拍的批量传输,该值都会递减。DMA_SxCR寄存器中CHSEL[2:0]DMA(请求)如果外设用作流控制器而且支持此功能DMA_SxCR寄存器中的PFCTRL位1使用DMA_SxCR寄存器中的PL[1:0]位配置数据流优先级FIFO的使用情况(使能,以及发送和接收阈值)在DMA_SxCR寄存器中配置数据传输方向、外设器增量/固定模式、单次或批器数据宽度、循环模式、双缓冲区模式和传输完成一半/或全部传输、外设成,和/或错误中断通过DMA_SxCR寄存器中的EN1使能数据流一旦使能了数据流,即可响应连接到该数据流的外设发出的任何DMA请求DocID022648Rev2STM32F2/F4器件集成了多主/多从架构八个主设备––––––––Cortex™-Mx2STM32F2/F4器件集成了多主/多从架构八个主设备––––––––Cortex™-MxI-busCortex™-MxD-Cortex™-MxS-器端口总器端口总DMA2外设端口总以太 DMA总DMA总八个从设备––––––––FlashICode总FlashDCode总辅SRAM2(16KB)(STM32F401上无)SRAM3(64KB)(仅STM32F42x/F43x器件AHB1(包AHB-to-APB总线桥APB外设AHB2外AHB3(FMC)(STM32F401上无主设备和从设备通过多层总线矩阵相连接,即使在多个高速外设同时工作时也能确保并行存取和高效操作。该结构如下图(适用于SM3F4x/F1xDocID022648Rev7.系统架多层总线矩多层总线矩阵使主设备能够执行并行数据传输,只要其寻7.系统架多层总线矩多层总线矩阵使主设备能够执行并行数据传输,只要其寻址不同的从模块。除了Cortex-Mx哈佛架构和双AHB端口DMA以外,该结构还增强了数据传输并行能力,因此降低了执行时间,优化DMA效率和功耗。定AHB主设备:能够启动读写操作的总线主设备。在一个定义的时间段内,仅有一个主备能够获取总线。AHB败或等待状态信号。AHB仲裁器:总线仲裁器保证在同一时刻仅有一个主设备可以进行读或写操作AHB总线矩阵:多层AHB总线矩阵使每一层的AHB主设备和AHB从设备与其DocID022648Rev114*%$035&9 Б๖ 倄 ࣸ〛 ࣸ〛 .)[ X'16.16 ͧ䃪 ͧ䃪 ͧ䃪 ͧ䃪ͧ䃪'*'0 '*'0 '*'0 '*'0")#")#'- CZU.VMUJ")#ᕧ㏫ⴕ.4循环调度优先级方为确保每个主设从设备时延迟尽量短,在总线矩阵层执行循环调度优先级方案循环调度仲裁循环调度优先级方为确保每个主设从设备时延迟尽量短,在总线矩阵层执行循环调度优先级方案循环调度仲裁策略使总线带宽合理分配限定最大延时循环1x(1次)传输。AHB主设备试图同时同一个AHB从设备时,总线矩阵仲裁器介入以解冲在下面的(8)CPUDMA1均试SRAM1数据8.CPUDMA1请如上述示例总请求同时发生的情况下,就需要总线矩阵仲裁。为了解决这种问题要应用循环调度策略:如果本次最后赢得总线控制权的主设备是CPU,则在下中DMA1将赢得总线控制权并首SRAM1CPU随后方SRAM1这就表明,一个主设备的传输延时取决于请 AHB从设备的其他等待主设备的数量。面的例子(图9),五个主设备同时试SRAM1DocID022648Rev")#"")#"1#4%$035&9 ࣸ〛 '16 ͧ䃪ͧ䃪 '*'0.4㏫ⴕ9.五个主设备请DMA1再次赢得总线矩阵(权) SRAM1的延时(举例)等于其他主设备所有进行总线矩阵仲裁,造成的DMA传输延情DMA主设备端口进行一次数据传输会遭遇9.五个主设备请DMA1再次赢得总线矩阵(权) SRAM1的延时(举例)等于其他主设备所有进行总线矩阵仲裁,造成的DMA传输延情DMA主设备端口进行一次数据传输会遭遇的延时取决于其他主设备的传输类型和长度例如,如SRAMDMA传延时将随着CPU数据传输事务长度而变化如果总首先给予CPU而CPU不是执行单次数据加载SRAM的等时间可能AHB(单次数据加/CPU数据传输事务中数据的数量。时间)延长NAHB周期,这里NCPU锁定AHB总线以保持总线的,减少了多操作过程中的延时及进入中断的延时。这提高了固件的响应能力,但是可能导致DMA数据传输事务的延迟DMA1CPU并SRAM的延时取决于传输类型(上下文保护)发起的CPU传输:8AHB周LDM/STM指令发起的CPU传输:14AHB周期–在多14个寄存器器之间进行传通过配置编译器,将加载时多重指令分解为单个加载指令,可以降低由LDM/STM发起的传输的DocID022648Revͧ䃪ำ䃫䬚ᬢ64# %." ᬢ.4W10.中断发起的CPU传输带来DMA传输延上图详细描述了一个DMA传输被因中断进入而发起的CPU多周期传输延迟的DMA 请求。经过仲裁,AHB总线 储器端口被触发,发问,而由CPU系统总线器端口。可以看到在服务DMA请求之前有一段额外的延时。对于断发起CPU传输来说,延时为10.中断发起的CPU传输带来DMA传输延上图详细描述了一个DMA传输被因中断进入而发起的CPU多周期传输延迟的DMA 请求。经过仲裁,AHB总线 储器端口被触发,发问,而由CPU系统总线器端口。可以看到在服务DMA请求之前有一段额外的延时。对于断发起CPU传输来说,延时为8AHB周期当同时对一个从设备进行寻址且数据传输事务长度不是一个数据单元时,其他主设备(DMA2,USB_HS,Ethernet…)也会碰到同样的情形为了提高DMA对总线矩阵性能,建议避免总线竞争DMA传输路DMA端STM32F2/F4器件集成了2DMA。每个DMA2个端口,一器端口和一个外设口。利用外部总线矩阵DMA路径,不仅DMA级两个端口可以同时工作,还可DMA和系统其它主设备同时工作同时操作优化了DMA效率,降低了响应时间(请求和数据传输之间的等待时间)DocID022648Rev $..F.ะ⤲䄣.4对于通过总线矩阵MEM器端口)能AHB1AHB2SRAM1SRAM2FSMCD-codePeriph(外设端口)能对于通过总线矩阵MEM器端口)能AHB1AHB2SRAM1SRAM2FSMCD-codePeriph(外设端口)能:)AHB1、AHB2、SRAM1、SRAM2、FSMC和–通过总线矩阵(D-code,–通过直接路径(不经过总线矩阵AHB-to-APB2桥对于D-code。器端口)能SRAM1、SRAM2、FSMC、Periph(外设端口)仅能通过直接路径(不经过总线矩阵AHB-to-APB1桥DocID022648Rev114*%$035&9 ࣸ〛 ࣸ〛 .)[ X'16 ͧ䃪 ͧ䃪ͧ䃪'*'0 '*'0")#")#"1#*'-% CZU.VMUJ.4DMA传输状本节介绍DMA在外设端口级 器端口级的传输步骤对于从外设器的传输在这种传输模式下,DMADMA传输状本节介绍DMA在外设端口级 器端口级的传输步骤对于从外设器的传输在这种传输模式下,DMA需要两个总来实现该传输––外设端口 由外设请求触发器端口可由FIFO阈值触发(使用FIFO模式时)或外设读操作之后(使用直接模式时)12外设器传输状对于器到外设的传输在这种传输模式下,DMA需要两个总来实现该传输数据并将–DMA预计外FIFO中,以保证在外,器DMA请求被触发时能够立即进行直接数据传输–当外设请求被触发,在DMA外设端口就产生了数据传输DocID022648Rev.4W᫜'*'0䄣䄣ⅮО ь䒿 ㏿᲋ьႄהஔ ႄโ䃪器到外设传输状DMA请求仲如第1.1.2章节所述,STM32F2/F4DMA集成了一个仲裁器,它能够根器到外设传输状DMA请求仲如第1.1.2章节所述,STM32F2/F4DMA集成了一个仲裁器,它能够根据优先级对每个(两个)AHB主设备端口器和外设端口)8个DMA数据流请求进行管理,并启动外设器序列当超过一DMA请求被激活时DMA控制器需要在激活的请求之间进行仲裁,并决下图描述了由DMA数据流“request1”和DMA数据流“request2”同时触发的两个循环请求(请12可以是任DMA外设请求)。在触DMA请求的AHB时钟周期DMA仲裁器检查激活的等待请求,权限交给拥有最高优先级的“request1”数据流“request1”数据流的最后一个数据传输周期内进行下一个仲裁周期。此时,“request1”被隐藏,仲裁器仅能发现“request2”是被激活的,因此这次 14.DMA请求仲DocID022648Rev 3ጞ㼒ࣽ 3ጞ⓬≧ 3㷗ᅻ㩩 3ጞ⓬≧ 3ጞ㼒ࣽ 3ጞ⓬≧ 3㷗ᅻ㩩 3ጞ⓬≧%."О %."О %."О %."О .4W䄣Ⅾ䄣Ⅾ%."О%."ь.4W᫜'*'0䄣䄣ⅮО ь䒿 ㏿᲋ьโ䃪 ႄႄהஔ一般建议大带宽外设需要分配最高的DMA优先级。这能确保这些外设的数据传输延时一般建议大带宽外设需要分配最高的DMA优先级。这能确保这些外设的数据传输延时尽量小,从而避/欠载状态。在带宽需求相同的情况下,相比工作在主模式(可以控制数据流量)下的外设,建议为工作在从模(不可控制数据传输速度)的外设DMA请求分配更高的优先级。基于总线矩阵多层结构,两个DMA能够并行工作,必要时多个高速外设请求可以在两DMA之间平均分配AHB-to-APBSTM32F2/F4产品集成了两个AHB-to-APB桥,APB1和APB2,它们与外设相连AHB-to-APB端STM32F2/F4AHB-to-APB桥是双端口结构,允许通过两种不同的路径进:从DMA1到APB1或从DMA2到APB2可以形成直接路径(不经过总线矩阵);这种情下不会被总线矩阵的仲裁带来延迟CPUDMA2的共同路径(通过总线矩阵),需要通过总线矩阵仲裁来赢得总线AHB-to-APB桥仲由于这些产品上实现了DMA直接路径,在AHB-to-APB桥级使用仲裁器来解决并请求下图描述了AHB-APB1桥上由CPU(通过总线矩)和DMA1(通过直接路)产生的并请求DocID022648Rev15.AHB-to-APB1桥上同时发生了来CPUDMA1控制器请为了分配总权限,AHB-APB桥采用循环调度策15.AHB-to-APB1桥上同时发生了来CPUDMA1控制器请为了分配总权限,AHB-APB桥采用循环调度策略循环1xAPB传输为调。DMA外设端口的最大延时(1APB传输)只有CPUDMA控制器能够APB1APB2总线的并:,就形成了并APB1,如果CPUDMA1/DMA2同时请。APB2,如果CPUDMA2同时请,就形成并。DocID022648Rev")#14*%$035&9 ࣸ〛.)[ X'16.16ͧ䃪ͧ䃪'*'0.VMUJ")#ᕧ㏫ⴕ.4如何预DMA延3如何预估DMA延基于微控制器设计一个固件程序时,用户必须确保其不会发生欠载/过载,所以必须知道每DMA数据传输的确DMA延时,核系统是否能够维持应用所需的如何预DMA延3如何预估DMA延基于微控制器设计一个固件程序时,用户必须确保其不会发生欠载/过载,所以必须知道每DMA数据传输的确DMA延时,核系统是否能够维持应用所需的数据带宽DMA传输时默认DMA传输时如第2.2.2章节所述,要实现从外设器的DMA传输,需要两次总:一–––是在外设端口,由外设请求触发,它需要进行DMA外设端口请求仲裁从外设 数据到DMAFIFO(DMA源另一是器端口,可由FIFO阈值触发(使用FIFO模式时)或外设读操作后触发(使用直接模式时),它需要进行–––器端口请求仲器地址计SRAM(DMA目标)中写加载数从器传输数据到外设时,也需要两,如2.2.2章节所述第一:DMA预计外,器数据并将FIFO中,以保在DMA外设请求被触发时立即进行直接数据传输。这个操作需要–––器端口请求仲器地址计从器数据到DMAFIFO(DMA源第二:当外设请求被触发,在DMA外设端口就产生了数据传输。这个操作–––DMA外设端口请求仲裁在外设地址(DMA目标)中写加载数一般来说DMA数据流的总传TSTS=TSP(外 /传输时间)+TSM器/TSPDMA外设端和传输的总时间,它等于TSP=tPA+tPAC+tBMA+tEDT+DocID022648Rev如何预DMA延表7.使用DMA路径,对应的外设端传输时对于STM32F401产品tBMA等于0器,需要额外加上一个周期的时间。额外的AHB周期根据外器批量传输的如何预DMA延表7.使用DMA路径,对应的外设端传输时对于STM32F401产品tBMA等于0器,需要额外加上一个周期的时间。额外的AHB周期根据外器批量传输的情况下,有效数据传输时间取决于批量传输长度(INC4tEDT=4个AHB周期)TSM器端和传输的总时间,它等于TSM=tMA+tMAC+tBMA+器端 /传输时1.对于STM32F401产品tBMA等于02.对于连续(期间无其他主并发存取时对应的DMA传输时 同一个从设备时,第3.1.1章节中所述的DMA请求响应时间可能器的最 /传输时间,DMA数据流服务的总延时受下对于外设影响 同一个AHB目标时,DMA延时将受到影响;当总线矩阵仲裁器 权限交给DMA时,才开始进行DMA传输,如第2.1.2章节所述。当多个主设(DMA同一个AHB-to-APB桥时,由于AHB-to-APB桥DMA传输时间会有延迟,如2.3.2章节DocID022648Rev说延 1AHB 1AHBtBMA:总线矩阵仲裁(无并 请求时1AHB周期tSRAM:SRAM1AHB说使用总线矩AHB外APB外1AHB1AHB1AHB周1AHB1AHB1AHB周tBMA:总线矩阵仲裁(无并 请求时1AHB1AHBtEDT1AHB周期(2)2APB2APB周tBS1AHB1AHB周如何预DMA延示ADCSRAMDMA传本示例适用于STM32F2xx、STM32F405、STM32F407、STM32F415、STM32F417、STM32F42xSTM32F43x产品。ADC配置为连续三重交替模式。这种模式下,它以最大ADC速率(36MHz)对一个模拟输入通道进如何预DMA延示ADCSRAMDMA传本示例适用于STM32F2xx、STM32F405、STM32F407、STM32F415、STM32F417、STM32F42xSTM32F43x产品。ADC配置为连续三重交替模式。这种模式下,它以最大ADC速率(36MHz)对一个模拟输入通道进行连续转换。ADC预分频器设为2,采样时间设为1.5周期,交替模式的两次连续ADC采样之间的延时设5个周期。DMA2stream0ADC转换值传输到SRAM缓冲区。DMA2通过直接路径完成对ADC的问;而通过总线矩SRAM9.DMA(ADC)端口传输延DMA2通过直接路ADC:无需总线矩阵仲裁10.器(SRAM)端口传输延DMA多次 为0个周期。该SRAM,则总线矩阵仲裁(时间ADCDMA(ADCEOC)ADCSRAMDMAAHB/APB预19AHBAHB/APB211AHB周期。注使用FIFO时,达到用户配置的FIFO门限时开器端。DocID022648Rev PB2频FAHB72MHz/AHB/APBFAHB144MHz/AHB/APB=2传输时 1AHB1AHB 1AHB1AHBtBMA1AHB周期1AHBtSRAM:SRAM1AHB1AHBTSM: 器端口的DMA传输总时4AHB4AHBAHB/APB2频FAHB72MHz/FAPB2=72MHzAHB/APBFAHB144MHz/FAPB272MHzAHB/APB=2传输时1AHB1AHB1AHB1AHBtBMAtEDT2AHB4AHBtBS1AHB1AHBTSPDMA5AHB7AHB如何预DMA延SPI全双工DMA传本示例适用于STM32F2xx、STM32F405STM32F407STM32F415STM32F417STM32F42xSTM32F43x产品,且使用SPI1外设的情况下配置两DMA请求如何预DMA延SPI全双工DMA传本示例适用于STM32F2xx、STM32F405STM32F407STM32F415STM32F417STM32F42xSTM32F43x产品,且使用SPI1外设的情况下配置两DMA请求接收到的SPI1数据,将这些数据从SPI1_DR寄存器传输到SRAM缓冲区。DMA2_Stream3用于处理SPI1_TX请求:此数据流将数据从SRAM缓冲区传输SPI1_DR寄存器AHB频率等APB2(84MHz)SPI1以最大速(42MHz)运行。DMA2_Stream2(SPI1_RX)先于DMA2_Stream3(SPI1_TX)2AHB周期触发。外设挂APB2总线上,则系统路径如下:DMA2通过直接路CPU通过总线矩APB2(不经过总线矩阵APB1目的是证DMACPUAPB1上的轮询影响。下图简DMA时序,以及每个操作的时序安排:明了发送和接收模式16.SPI全双工DMA传输时DocID022648Rev .4W%."@4USFBN%."@4USFBN%."@4USFBN䄣ⅮU#4 %."@4USFBN䄣Ⅾ")#@$-如何预DMA延本图说明了以下结论如何预DMA延本图说明了以下结论CPUAPB1上的轮询不影响APB2DMA传输延时 SRAM的主设备为DMA2(因此无需重新仲裁)。DMA2_Stream3(SPI1_TX)事务,该数据流SRAMFIFO,然后一经触发,DMA外设端口(目标为SPI1)便开始传输对于DMA2_Stream3,在DMA2_Stream2总线同步周期内执行DMA外设仲裁(1个在当前DMA请求事务结束之前就有另外一个DMA请求时,总是执行这种优化操作数据并将其写DocID022648Rev对DMA控制器进行编程时的一些技巧和忠4对DMA控制器进行编程时的一些技巧和忠DMA序要断开连接到DMA数据流请求的外对DMA控制器进行编程时的一些技巧和忠4对DMA控制器进行编程时的一些技巧和忠DMA序要断开连接到DMA数据流请求的外设,必须断开外设连接的DMA数据流DMA_SxCREN位复(“0”)才能安全外设注在这两种情况下,传输完成中断标志(DMA_LISRDMA_HISRTCIF)1因数据而结束

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论