首页 > 其他分享 >深入探索STM32F103的DMA技术

深入探索STM32F103的DMA技术

时间:2023-09-10 14:01:19浏览次数:42  
标签:STM32F103 DMA 探索 传输 内存 外设 处理器

标题:深入探索STM32F103的DMA技术

导言:

STM32F103是一款广泛应用于嵌入式系统开发的32位微控制器。其中,DMA(Direct Memory Access)技术是STM32F103系列的重要特性之一,它大幅提高了数据处理性能并降低了处理器的负载。本文将详细介绍STM32F103的DMA技术,让读者更好地了解其原理、应用和优势。

  1. DMA的基本原理:

DMA是一种直接内存访问技术,它允许外设直接与系统内存进行数据交换,而不需要处理器的干预。STM32F103的DMA控制器具有多个通道,每个通道可以连接到不同的外设和内存区域。通过DMA控制器的配置,我们可以实现数据的高速传输,提高系统性能。

  1. DMA的应用场景:

(a)数据传输:DMA广泛用于外设和内存之间的数据传输,如串口通信、SPI通信、I2C通信等。 (b)内存拷贝:DMA可以直接在内存之间执行数据拷贝,避免了处理器的干预。 (c)数据处理:DMA可以直接将外设数据转存到内存进行处理,降低了处理器的负载。

  1. STM32F103的DMA控制器:

STM32F103的DMA控制器拥有多个通道,每个通道都可以配置为不同的传输模式和优先级。DMA传输可以在多种数据宽度(8位、16位或32位)下进行,并支持内存到内存、内存到外设以及外设到内存的数据传输。此外,DMA还支持循环模式、自动请求模式和半自动请求模式等。

  1. DMA的优势:

(a)提高性能:通过使用DMA,可以将数据传输的任务交给DMA控制器,处理器可以专注于其他重要任务,从而提高系统性能。 (b)降低处理器负载:使用DMA减少了处理器与外设之间的数据传输过程,有效减轻了处理器的负载。 (c)灵活性:STM32F103的DMA控制器具有多个通道,并且支持多种传输模式和数据宽度,这使得开发人员能够根据应用需求进行灵活配置。

  1. DMA的配置步骤:

(a)选择通道和外设:首先,我们需要选择一个合适的通道和外设。 (b)配置传输参数:配置传输模式、数据宽度、传输方向等参数。 (c)配置源和目的地址:指定数据的源地址和目的地址。 (d)配置传输完成中断(可选):根据需要选择是否配置传输完成的中断。 (e)使能DMA:使能选择的DMA通道。

DMA的意义

简单描述:

DMA就是一个数据搬运工!!

代替 CPU 搬运数据,为 CPU 减负。

  1. 数据搬运的工作比较耗时间;

  2. 数据搬运工作时效要求高(有数据来就要搬走);

  3. 没啥技术含量(CPU 节约出来的时间可以处理更重要的事)。

搬运什么数据?

存储器、外设

这里的外设指的是spi、usart、iic、adc 等基于APB1 、APB2或AHB时钟的外设,而这里的存储器包括自身的闪存(flash)或者内存(SRAM)以及外设的存储设备都可以作为访问地源或者目的

三种搬运方式:

  • 存储器→存储器(例如:复制某特别大的数据buf)
  • 存储器→外设 (例如:将某数据buf写入串口TDR寄存器)
  • 外设→存储器 (例如:将串口RDR寄存器写入某数据buf)
DMA 控制器

STM32F103有2个 DMA 控制器,DMA1有7个通道,DMA2有5个通道。一个通道每次只能搬运一个外设的数据!! 如果同时有多个外设的 DMA 请求,则按照优先级进行响应。

DMA1有7个通道

DMA****传输方式
  • DMA_Mode_Normal(正常模式)

一次DMA数据传输完后,停止DMA传送 ,也就是只传输一次

  • DMA_Mode_Circular(循环传输模式)

当传输结束时,硬件自动会将传输数据量寄存器进行重装,进行下一轮的数据传输。 也就是多次传输模式

结论:

通过本文,我们对STM32F103的DMA技术有了全面的了解。DMA作为一种直接内存访问技术,可以大幅提高数据处理性能并降低处理器的负载。它在实际应用中广泛用于数据传输、内存拷贝和数据处理等场景。配置STM32F103的DMA需要选择合适的通道和外设,并进行传输参数、地址配置和中断配置等步骤。了解和灵活运用DMA技术,将有助于我们更高效地开发嵌入式系统。

参考文献:

  1. STMicroelectronics. (2021). RM0008. STM32F10xxx Flash programming manual. Retrieved from https://www.st.com/resource/en/reference_manual/cd00171190.pdf

  2. STMicroelectronics. (2021). RM0008. STM32F10xxx reference manual. Retrieved from https://www.st.com/resource/en/reference_manual/cd00171190.pdf

标签:STM32F103,DMA,探索,传输,内存,外设,处理器
From: https://blog.51cto.com/u_16152459/7425058

相关文章

  • JVM调优篇:探索Java性能优化的必备种子面试题
    JVM内存模型首先面试官会询问你在进行JVM调优之前,是否了解JVM内存模型的基础知识。这是一个重要的入门问题。JVM内存模型主要包括程序计数器、堆、本地方法栈、Java栈和方法区(1.7之后更改为元空间,并直接使用系统内存)。正常堆内存又分为年轻代和老年代。在Java虚拟机中,年轻代用于存......
  • 探索计算机的I/O控制方式:了解DMA控制器的作用与优势
    I/O控制方式在前面我们已经了解到,每个设备都配备了一个设备控制器。当CPU向设备控制器发送命令并将其存储在寄存器中时,设备控制器会执行相应的操作。然而,尽管设备控制器会更新状态寄存器的状态,但是如何将这些信息传达给CPU呢?在设备控制器的寄存器中,通常会有一个状态标志位,用于指......
  • 嵌入式基础知识-DMA
    本篇来介绍DMA的一些基础知识。1DMA简介DMA(DirectMemoryAccess),中文名为直接内存访问,它是一些计算机总线架构提供的功能,能使数据从附加设备(如磁盘驱动器)直接发送到计算机主板的内存上。对应嵌入式处理器来说,DMA可以提供外设和存储器之间,或存储器与存储器之间的高速数据传输,无须C......
  • 探索灵活布局:深入了解Flexbox
    介绍:Flexbox是一种用于网页布局的强大工具,它提供了一种灵活且直观的方式来排列和对齐网页元素。在本文中,我们将深入探讨Flexbox的使用,包括基本概念、常用属性和实际应用场景。正文:基本概念和语法Flexbox基于容器和子项的概念进行布局。容器是包含子项的父元素,而子项则是容器的直......
  • KdMapper扩展实现之CrystalMark(winring0x64.sys)
    1.背景  KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考《【转载】利用签名驱动漏洞加载未签名驱动》)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。 2.驱动信息 驱动名称winring0x64.sys 时间戳47......
  • KdMapper扩展实现之CPUID(cpuz141.sys)
    1.背景  KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考《【转载】利用签名驱动漏洞加载未签名驱动》)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。 2.驱动信息 驱动名称cpuz141.sys 时间戳583446......
  • osg场景中的坐标和模型在3dmax的坐标有什么关联
    在OpenSceneGraph(OSG)中的坐标系统与3dsMax(3DStudioMax)中的坐标系统之间存在一些基本的关联,但也有一些重要的差异。以下是它们之间的主要区别和关联:坐标系方向:OSG使用右手坐标系,其中X轴指向右侧,Y轴指向上方,Z轴指向观察者的方向(远离观察者)。3dsMax通常使用左手坐标系,其......
  • RDMA-内核接口-rxe_map_mr_sg
    描述:映射mr的sg调用链:此处多处调用staticintnvme_rdma_map_sg_fr(structnvme_rdma_queue*queue,    structnvme_rdma_request*req,structnvme_command*c,    intcount){   req->mr=ib_mr_pool_get(queue->qp,&queue->qp->rdma_mrs);  /*  ......
  • 构筑下一代数据中心互联的“超级高速公路”,中科驭数正式发布KPU FLEXFLOW®-2100R RDM
    2023服贸会期间,中科驭数重磅推出最新自研的高性能网络“利器”——KPUFLEXFLOW®-2100RRDMA加速DPU卡。这款产品的发布标志着中科驭数在高性能计算和数据中心领域的不断创新,旨在面向高速网络、高性能存储搭建起算力集群内部通信的"超级高速公路”,助力高性能计算领域创新。站在数......
  • P6037 Ryoku 的探索
    题目传送门思路提供首先,我们从题目中可以看到,存在$n$个点$n$条边,所以此题考查的是基环树,那么什么是基环树——基环树是一个$n$个点$n$条边的图,比树多出现一个环。因此,这棵树上是存在一个环的(而且很重要),所以我们要先找出这个环,基环树找环有两种基本的算法,一种是DFS而......