嵌入式基础知识-DMA

这篇具有很好参考价值的文章主要介绍了嵌入式基础知识-DMA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇来介绍DMA的一些基础知识。

1 DMA简介

DMA(Direct Memory Access),中文名为直接内存访问,它是一些计算机总线架构提供的功能,能使数据从附加设备(如磁盘驱动器)直接发送到计算机主板的内存上。对应嵌入式处理器来说,DMA可以提供外设和存储器之间,或存储器与存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源。

嵌入式基础知识-DMA,嵌入式系统基础,嵌入式,DMA

1.1 DMA传输的4种情况

DMA涉及的数据传输分为四种情况:

  • 外设到内存
  • 内存到外设
  • 内存到内存
  • 外设到外设

嵌入式基础知识-DMA,嵌入式系统基础,嵌入式,DMA

它们本质上是一样的,都是从内存的某一区域传输到内存的另一区域,外设的数据寄存器本质上就是内存的一个存储单元。

1.2 典型的DMA结构

典型的DMA控制器的结构示意图如下:

嵌入式基础知识-DMA,嵌入式系统基础,嵌入式,DMA

DMA控制器内部包含4中寄存器/计数器:

  • 地址寄存器:包括源地址和目的地址寄存器
  • 状态寄存器:用于寄存DMA传输前后的状态
  • 控制寄存器:用于选择DMA控制器的操作类型、工作方式、传输方向和有关参数
  • 字节计数器:用于控制传输数据块的长度

DMA控制器需要连接包括:

  • 与外设连接:用于接受外设发出的DMA操作请求和在DMA期间对外设进行控制
  • 与CPU连接:用于请求总线的控制权
  • 与三大总线连接:用于进行总线控制

DMA控制器可以像CPU那样获得总线的控制权,因此可以完成外设与存储器之间的数据高速交换。

如下图,当外设需要与存储器之间进行DMA传输时由DMA控制器提出总线请求,从CPU获得总线授权后,由DMA控制器控制数据的传输。

嵌入式基础知识-DMA,嵌入式系统基础,嵌入式,DMA

2 STM32中的DMA

2.1 STM32的DMA资源概述

STM32F103内部有2 个DMA控制器:

  • DMA1有7个通道
  • DMA2有5个通道,仅存大容量产品中

每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。

此外,每个DMA还有一个仲裁器来协调各个请求的优先权。

STM32F103中的DMA有以下一些特性:

  • 独立的源和目标数据区的传输宽度(字节、半字、全字)
  • 每个通道都有3个事件标志(DMA 半传输,DMA 传输完成和 DMA 传输出错)
  • 存储器和存储器间的传输
  • 外设和存储器,存储器和外设的传输
  • 闪存、SRAM、外设的 SRAM、APB1、APB2 和 AHB 外设均可作为访问的源和目标

2.2 STM32的DMA框图

STM32F103的DMA框图如下:

嵌入式基础知识-DMA,嵌入式系统基础,嵌入式,DMA

  • ①代表DMA请求:当外设准备通过DMA传输数据时,需先给DMA控制器发送请求。
  • ②代表DMA通道:DMA1有7 个,DMA2有 5个,虽然每个通道可以接收多个外设的请求,但是同一时间只能接收一个。
  • ③代表总裁器:用于处理当发生多个 DMA 通道请求时的响应顺序。仲裁器管理 DMA 通道请求分为两个阶段:
    • 第一阶段:软件阶段,可以在DMA_CCRx寄存器中设置,有4个等级:非常高,高,中,低
    • 第二阶段:硬件阶段,若两个及以上的DMA通道请求设置的优先级一样,则取决于通道编号,越低优先权越高

3 总结

本篇介绍了DMA的一些基础知识,包括DMA传输的4种情况、典型的DMA结构以及STM32的DMA相关基础介绍。文章来源地址https://www.toymoban.com/news/detail-696647.html

到了这里,关于嵌入式基础知识-DMA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式基础知识-总线带宽

    带宽,最容易想到的是上网用的网络带宽,在嵌入式软件开发中,也会用到带宽,这个带宽的含义就不一样了,区别是什么?本篇就来介绍一下,并通过一些例子来进行带宽的计算。 先来简单看下不同领域的带宽: 显示器中的带宽,单位是MHz,是一个频率的概念 通讯领域的

    2024年02月13日
    浏览(37)
  • 嵌入式入门基础知识有哪些?

    嵌入式系统 是指在特定应用领域内为满足特定要求而设计的计算机系统,通常被嵌入到设备中,具有实时性、可靠性、低功耗等特点。嵌入式系统应用广泛,例如:智能家居、智能手表、汽车控制系统、医疗设备等。 在本篇博客中,我们将讨论嵌入式入门基础知识,包括嵌

    2024年02月15日
    浏览(39)
  • 嵌入式基础知识大杂烩

    u-boot(或称为Das U-Boot)是一种广泛应用于嵌入式系统的开源引导加载程序。它通常存放在嵌入式系统的非易失性存储器中,具体位置可以根据具体的嵌入式系统架构和设计来确定。 以下是几种常见的u-boot存放位置: 1. Flash存储器: 类似于 单片机 的情况,u-boot可以被烧写到

    2024年02月09日
    浏览(34)
  • 嵌入式学习笔记——STM32硬件基础知识

    上一篇中我们重点是讲了一下怎么搭建开发环境以及怎么下载烧录的过程,这都是解决的电脑端的开发环境问题,还没有到实际的开发板上,我们的单片机是都是焊接在开发板上的,PCB上有着它所需的工作电路。并不是直接给供电电压就可以让其工作的,本文主要是简介一下

    2024年01月22日
    浏览(50)
  • 嵌入式学习stm32基础知识(期末复习)

    1. 计算机的体系架构 冯诺依曼架构 ​ 在完整的计算机系统中,包含五个部分,储存器,运算器,控制器输入设备和输出设备。 改进的冯诺依曼架构 改进型架构的各模块的高速数据交换中心利用储存器这个大容量,极大的提高了效率。 哈佛架构 ​ 哈佛结构数据空间和地址

    2024年02月07日
    浏览(49)
  • 嵌入式-stm32重要基础知识(及踩过的坑)

    1、固件库: 固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道, 向上提供用户函数调用的接口(API)。 2、CMSIS标准与固件库的关系 就是对固件库函数的要求。 ARM 公司为了能让不同的芯片公司生产的 Cortex-M3 芯片能在软件上基本兼容,和芯片生产商

    2024年02月04日
    浏览(42)
  • 嵌入式硬件基础知识汇总<附带与硬件密切相关的软件介绍>

    工作知识学习及总结系列文档 本文主要记录学习嵌入式软硬件编程过程中的一些硬件基础知识 嵌入式微控制器MCU ,又称单片机,一般以某微处理器内核为核心,芯片集成多种部件,功能和外设,如8051系列。其最大的特点是单片化,体积大大减小,功耗和成本下降,可靠性提

    2024年02月02日
    浏览(35)
  • 机械女生,双非本985硕,目前学了C 基础知识,转嵌入式还是java更好?

    作为单片机项目开发的卖课佬,个人建议,先转嵌入式单片机开发方向,哈哈。 java我也学过,还学过oracle、mysql数据库,只是当时没做笔记,找不好充分的装逼证据了。 从实习通过业余时间,学到快正式毕业,真的有种呕心沥血的感觉。 当时还是学生,脸皮比较薄,又不是

    2024年03月16日
    浏览(42)
  • 韦东山嵌入式Liunx入门驱动开发一(Hello 驱动编程、GPIO基础知识、LED驱动、总线设备驱动模型)

    本人学习完韦老师的视频,因此来复习巩固,写以笔记记之。 韦老师的课比较难,第一遍不知道在说什么,但是坚持看完一遍,再来复习,基本上就水到渠成了。 看完视频复习的同学观看最佳! 基于 IMX6ULL-PRO 参考视频 Linux快速入门到精通视频 参考资料 :01_嵌入式Linux应用

    2024年04月25日
    浏览(55)
  • 嵌入式系统>嵌入式硬件知识

    AI芯片的特点包括 :新型计算范式AI芯片的关键特征: 1、新型的计算范式 AI 计算既不脱离传统计算,也具有新的计算特质,如处理的内容往往是非结构化数据(视频、图片等)。处理的过程通常需要很大的计算量,基本的计算主要是线性代数运算,而控制流程则相对简单。

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包