历史上的今天
返回首页

历史上的今天

今天是:2024年12月06日(星期五)

正在发生

2021年12月06日 | 正点原子STM32笔记——DMA原理

2021-12-06 来源:eefocus

一、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的一些基础概念和原理。

推荐阅读

史海拾趣

Avalon Photonics公司的发展小趣事

Avalon Photonics始终坚持以客户需求为导向,不断进行产品创新。公司研发团队根据市场反馈,不断优化产品性能,同时推出了一系列定制化服务。某知名科研机构需要一种特殊规格的光子探测器,Avalon团队迅速响应,为其量身定制了解决方案。这一成功案例不仅赢得了客户的赞誉,也为公司带来了更多的定制化订单。

CSB公司的发展小趣事

随着国内市场的饱和,CSB公司开始将目光投向海外市场。公司制定了国际化战略,通过设立海外分支机构、拓展国际市场渠道、加强与国际合作伙伴的合作等方式,逐步实现了全球市场的布局。在国际市场上,CSB公司的产品和服务得到了广泛认可,为公司带来了丰厚的回报。

这些故事虽然是对电子行业企业发展的一般性描述,但可能在一定程度上反映了CSB公司或其他类似企业在电子行业中的发展历程。然而,需要注意的是,每个企业的发展道路都是独特的,具体的故事还需根据企业自身的实际情况来编写。

Aristo-Craft/ L M P Inc公司的发展小趣事

面对未来电子行业的快速发展和变革,Aristo-Craft/L M P Inc制定了明确的战略规划。他们将继续加大在研发和创新方面的投入,推出更多具有创新性和竞争力的产品。同时,公司还将积极拓展新的应用领域和市场,寻求更多的合作机会,以实现更加广泛的发展。

请注意,这些故事仅为概述性的框架,并非具体的事实描述。如果您需要更详细、具体的故事内容,建议查阅Aristo-Craft/L M P Inc公司的官方资料、新闻报道或行业分析报告等,以获取更准确的信息。

鑫雁公司的发展小趣事

随着技术的不断积累和市场需求的扩大,聚洵半导体在产品研发上取得了显著突破。公司不仅继续深化在运算放大器领域的研发,还成功扩展了产品线,涵盖了模拟开关、电压基准、线性稳压器、电平转换器等多种产品。这些产品广泛应用于通讯网络、消费电子、工业控制等多个领域,满足了市场多样化的需求。同时,聚洵还获得了多项技术专利和荣誉,如集成电路布图设计专利和发明专利等,进一步巩固了其在行业中的地位。

Cooper Industries公司的发展小趣事

在电工产品领域,Cooper Industries同样取得了显著的成就。2000年,公司收购了Eagle电气,并将其与已有的接线装置产品系列合并,组建成了一个名为“库柏电工”的新事业部。这一举措不仅丰富了公司的产品线,也使其在电工产品领域的技术实力得到了进一步提升。库柏电工提供了超过10000个高质量装置的产品组合,广泛应用于工业、商业和住宅领域,满足了不同客户的需求。同时,公司还不断投入研发,推出更加先进、高效的电工产品,为行业的发展做出了积极贡献。

CYMBET公司的发展小趣事

随着EnerChip技术的不断完善和市场的认可,CYMBET公司开始积极拓展市场,与全球各地的合作伙伴建立了紧密的合作关系。例如,CYMBET与Digi-Key Corporation签订了全球经销协议,通过Digi-Key的广泛分销网络,EnerChip系列固态可充电薄膜电池及能量采集储能模块得以迅速进入全球市场。此外,CYMBET还与多家知名电子设备制造商建立了长期合作关系,共同开发新产品,推动电子行业的发展。

问答坊 | AI 解惑

射频参数测试新方法(下)

3. 应用例子: 目前吉时利已经将上面所介绍的设计方法成功应用于其最新的S600DC/RF APT系统中,用于实现过程监控。其关键的性能指标包括: 基于吉时利S600 APT带固态转换开关的直流测试系统以及Anritsu VNA技术,高速的射频测量能力实现了1KHz的 ...…

查看全部问答>

某个强人的电子竞赛经验介绍

本帖最后由 paulhyde 于 2014-9-15 09:42 编辑 很值得学习的大赛经验介绍!让你少走弯路!!  …

查看全部问答>

那里有关于视频叠加芯片upd6450的 C 语言程序

那里有关于视频叠加芯片upd6450的 C 语言程序,一个小例子就可以…

查看全部问答>

EVC有没有工具可以监控设备上GDI对象的数目

EVC有没有工具可以监控设备上GDI对象的数目…

查看全部问答>

MMU地址映射

void mem_mapping_linear(void)    {        unsigned long descriptor_index, section_base, sdram_base, sdram_size;        sdram_base=0x30000000;        sdr ...…

查看全部问答>

计算机组成原理 和 计算机体系结构 有什么不同?

已经学了计算机组成原理,下学期有计算机体系结构这门课选,不知道两者有多大的不同?大家给点意见。…

查看全部问答>

电路图的画法规则

电路图的画法规则,为了使看图者能正确方便理解电路图的全部内容,绘制电路图时,,,,... 资源中心下载地址:https://download.eeworld.com.cn/detail/qwqwqw2088/281462 直接下载:电路图的画法规则…

查看全部问答>

【转】推挽输出与开漏输出的区别

Push- Pull输出就是一般所说的推挽输出,在CMOS电路里面应该较CMOS输出更合适,因为在CMOS里面的push-pull输出能力不可能做得双极那么大。输出能力看IC内部输出极N管P管的面积。和开漏输出相比,push-pull的高低电平由IC的电源低定,不能简单的做 ...…

查看全部问答>

【晒样片】+TI改界面后的新体验

本帖最后由 johnrey 于 2014-12-11 23:49 编辑 写在前面的话。参加过两轮Ti样片活动了,慢慢就不再为活动而申请了,实际上,在申请过程中也学到了很多的知识,虽然说这些知识不一定就马上可以用的上,但是对未知世界的好奇心又驱使我开始了这一轮 ...…

查看全部问答>