前言
学习永无止境!本篇是嵌入式开发之片上外设DMA,了解基本硬件原理以及工作模式,并结合ADC进行实际应用。
注:本文章为学习笔记,部分图片与文字来源于网络/江协科技课程/手册,如侵权请联系!谢谢!
一、DMA概述
1.1 DMA简介
DMA(Direct Memory Access)直接存储器存取,可以提供外设与存储器或存储器与存储器之间高速数据传输,无需CPU干预,节省CPU资源。拥有12个可配置通道(DMA1有7个通道,DMA2有5个通道),每个通道都支持软件触发和特定硬件触发。
一般如果DMA进行的是存储器到存储器的数据转运,需要使用软件触发,DMA会以最快的速度将数据转运完成,当需要外设到存储器数据转运时,就需要硬件触发。
1.2 存储器相关概念
- ROM:只读存储器,是一种掉电不丢失的存储器;
- RAM:随机存储器,是一种易失性、掉电丢失的存储器;
- 外设寄存器:特殊的SRAM,可以进行读写,其背后连接硬件线路,改变寄存器的值,即可改变硬件线路的走向。
1.3 DMA基本框图
- ①总线矩阵:从整个系统看,无非就是内核与其它存储器,内核作为主动单元通过DCode访问Flash,通过系统总线访问SRAM以及相关外设寄存器,除了内核拥有访问权,DMA也可作为主动单元通过DMA总线访问其它存储器与外设寄存器。各条总线访问拥有各自优先级,总线仲裁器根据优先级分配总线控制权;
- ②DMA内部:DMA既是主动单元也是被动单元,挂在AHB上,CPU可通过AHB控制读写DMA配置寄存器,DMA1内部有7个可配置通道,DMA2有5个,同时为了防止内部通道拥堵,配备仲裁器,根据优先级,分配各个通道转运数据;
- ③以太网私有DMA:一般在使用以太网传输数据时需要用到;
- ④存储器与外设寄存器:FLASH一般只读,要想写入需要配置接口控制器,SRAM可随意读写,外设寄存器的配置需要根据每个外设功能配置;
- ⑤DMA请求:DMA硬件触发源,特殊外设根据其配置享有DMA请求的权利,当需要数据转运时,向DMA发送请求,DMA会以最快的速度将数据送达目的地址。
二、DMA工作原理
2.1 DMA功能结构框图
- 数据转运方向:外设寄存器到存储器,也可以存储器到外设寄存器,也可以存储器到存储器(Flash到SRAM,