正点原子STM32笔记——DMA原理

一、DMA简介

①DMA 全称Direct Memory Access,即直接存储器访问。

正常情况下(没用DMA),将数据从一个空间复制到另一个空间,需要将数据从一个空间读入CPU,然后写到另一个空间里。

②DMA传输将数据从一个地址空间复制到另一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。这样就大大减轻了CPU的负担。

③DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。

STM32最多有2个DMA控制器(DMA2仅存在大容量产品中),DMA1有7个通道。DMA2有5个通道。每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁起来协调各个DMA请求的优先权。

DMA框图:
DMA框图

图中红色圈出的就是DMA1和DMA2。举个例子,假设传输方向是从外设到存储器,下图是来自APB1和APB2的两个外设的DMA请求。请求通过仲裁器连接到相应的通道,然后可以通过DMA总线访问

在这里插入图片描述

二、STM32DMA特性

①每个通道都直接连接专用的硬件DMA请求,都支持软件触发,这些通过软件来配置。
②在七个请求间的优先权可以通过软件编程设置(共有四级:很高、高、中等和低),假如在相等优先权时由硬件决定(请求0优先于请求1,依此类推) 。
③ 独立的源和目标数据区的传输宽度(字节、半字、全字),模拟打包和拆包的过程。源和目标地址必须按数据传输宽度对齐。
④ 支持循环的缓冲器管理
⑤ 每个通道都有3个事件标志(DMA 半传输,DMA传输完成和DMA传输出错),这3个事件标志逻辑或成为一个单独的中断请求。
⑥ 外设和存储器,存储器和外设的传输 ,存储器和存储器间的传输
⑦ 闪存、SRAM、外设的SRAM、APB1 APB2和AHB外设均可作为访问的源和目标。
⑧ 可编程的数据传输数目:最大为65536

三、DMA原理

1、DMA1控制器和DMA2控制器

在这里插入图片描述
传输方向:外设到存储器,存储器到外设的 ,存储器到存储器间。
通道选好后,可选的外设也就固定了。如上图,如果选择通道1,则可选的外设就有ADC1、、TIM_CH3、TIM4_CH1。
在这里插入图片描述

2、DMA处理

在这里插入图片描述
在这里插入图片描述

比如,我们设置从存储器到外设,外设假定是UART1_RX,存储器假定是内存中某一基地址比如说一个数组。源地址就是存储器,目标地址就是外设。所以我们就将UART1_RX的地址赋给DMA_CPARx,将数组中基地址赋给DMA_CMARx。如果传输100个数据,则DMA_CNDTRx的值就是100,每传输一个数据,DMA_CNDTRx的值就减1。数据的传输方向就在DMA_CCRx寄存器中的DIR位(位4)设置。而从外设传输到存储器方法是一样的。从存储器到存储器传输就不一样了。
在这里插入图片描述

3、仲裁器

DMA1有7个通道,有可能每个通道都有请求,这时候就需要设置优先级,谁的优先级高处理谁。
在这里插入图片描述
配置优先级也是在DMA_CCRx寄存器中配置的。
在这里插入图片描述

4、DMA通道

在这里插入图片描述
DMA传输的数据是可编程的,最大达到65535。存储器数据宽度和外设数据宽度也可以设置,即可以设置读取的数据宽度和写入的数据宽度。当读取的数据宽度和写入的数据宽度相等时,比如说数据宽度都是16位,那么传输数据的时候就一次传输16位。当读取的数据宽度和写入宽度不相等时,可以参考下图:
可编程的数据传输宽度、对齐方式和数据大小端
5、指针增量和循环模式
在这里插入图片描述
在这里插入图片描述

6、存储器到存储器模式
在这里插入图片描述
存储器到存储器传输也是由源地址传到目标地址,而源地址就被送给DMA_CPARx,目标地址就被送给DMA_CMARx。

7、中断
在这里插入图片描述
8、通道配置过程
在这里插入图片描述
这些就是DMA的一些基础概念和原理。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 正点原子STM32F103ZET6是一款性能优异的ARM Cortex-M3内核的单片机,被广泛应用于嵌入式系统领域。其原理图是该单片机的电路设计图,用于描述各个器件之间的连接方式和信号传输路径。 在正点原子STM32F103ZET6原理图中,可以看到各个主要模块的布局和连接方式。其中包括主控芯片STM32F103ZET6、外围电路、存储器等。 主控芯片STM32F103ZET6是整个系统的核心,它集成了ARM Cortex-M3内核、存储器接口、通信接口等重要功能模块。原理图中显示了主控芯片的引脚连接及外设接口,如GPIO、USART、SPI、I2C等。这些接口可以连接各种外部器件,实现与外部设备之间的数据交互。 外围电路主要包括时钟电路、电源管理电路和复位电路等。时钟电路提供给主控芯片和其他外设提供稳定的时钟信号,保证系统的正常运行。电源管理电路则负责提供稳定可靠的电源给系统各个模块,以保证其正常工作。复位电路用于将系统恢复到初始状态,确保系统在启动时的可靠性。 存储器模块用于存储程序代码和数据,其中包括闪存和SRAM。闪存用于存储程序代码,而SRAM用于存储变量等数据。原理图中显示了存储器与主控芯片之间的连接方式,以保证数据的高速读写和准确传输。 总之,正点原子STM32F103ZET6原理图清晰地展示了各个模块之间的连接方式,为硬件工程师提供了设计和调试的参考。这对于开发嵌入式系统,实现各种功能和应用具有重要的指导意义。 ### 回答2: 正点原子STM32F103ZET6是一款基于ARM Cortex-M3内核的微控制器,具有丰富的外设和性能强劲的特点。原理图是一种通过线条、符号等方式将电路中各个元件的连接关系和工作原理展示出来的图纸。 正点原子STM32F103ZET6的原理图是由原理图专业软件绘制的,通过逐个元件的接脚、元件之间的连接、电源线路、时钟电路等等,来描述整个控制器的工作原理和电路连接方式。 在正点原子STM32F103ZET6的原理图中,可以看到该微控制器的各个引脚的接线关系,例如GPIO、USART、SPI、I2C等外设的接口。同时,原理图中还包含了各种电气元件,例如电阻器、电容器、二极管、晶体振荡器等等,这些元件在电路中起到关键作用。 通过仔细研究原理图,可以了解到正点原子STM32F103ZET6的各个外设的接口和工作原理。用户可以根据原理图中的信息,进行硬件设计和电路优化,以满足特定的应用需求。 总之,正点原子STM32F103ZET6的原理图是描述该微控制器电路连接和工作原理的图纸,通过研究原理图,可以深入理解该微控制器的硬件设计和电路连接方式,为特定应用提供重要参考。 ### 回答3: 正点原子STM32F103ZET6是一款高性能的32位ARM Cortex-M3内核的微控制器。原理图是对该微控制器的电路连接和元件布局进行图示的一种图表形式,用于帮助用户理解和设计电路连接。 正点原子STM32F103ZET6的原理图包括了微控制器芯片本身的引脚连接,以及外部的电源、晶体震荡器、外设等的连接方式。原理图详细显示了微控制器的各个引脚与外部元件之间的连接方式,包括电源引脚、复位引脚、晶体震荡器引脚、串口引脚、GPIO引脚等。 通过原理图,可以清晰地了解到STM32F103ZET6的硬件资源分布和各个元件之间的连接方式。在进行电路设计时,可以根据原理图进行元件连接和布局,保证电路的可靠性和稳定性。 此外,原理图还可以帮助用户理解芯片的内部结构和各个功能模块之间的关系,有助于用户在编程和开发过程中更好地理解和使用微控制器的功能。 总之,正点原子STM32F103ZET6的原理图是一份非常重要的设计参考文档,通过它可以清晰地了解微控制器芯片和外部元件的连接方式,有助于用户进行电路设计和开发工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值