历史上的今天
返回首页

历史上的今天

今天是:2025年08月13日(星期三)

正在发生

2019年08月13日 | STM32-(34):DMA传输控制(理论)

2019-08-13 来源:eefocus

直接存储器传送(Direct Memory Access-DMA)

将外设的数据不经过CPU直接送入内存储器,或者,从内存储器不经过CPU直接送往外部设备
在这里插入图片描述
一次DMA传送只需要执行一个DMA周期(相当于一个总线读/写周期),因而能够满足高速外设数据传输的需要。

Direct Memory Access (存储器直接访问)。这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过 CPU ,也不需要 CPU 干预。整个数据传输操作在一个称为" DMA 控制器"的控制下进行的。

CPU 除了在数据传输开始和结束时做一点处理外,在传输过程中 CPU 可以进行其他的工作。这样,在大部分时间里,CPU 和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。

DMA是在专门的硬件(DMA)控制下,实现高速外设和主存储器之间自动成批交换数据尽量减少CPU干预的输入/输出操作方式。通常有两种方式:①独占总线方式②周期挪用方式

主要特性:

(1) 7个独立的可配置的通道(请求)
(2) 每个通道都直接连接专用的硬件 DMA 请求,每个通道都同样支持软件触发.这些功能通过软件来配置。
(3) 在7个请求间的优先权可以通过软件编程设罝(共有四级:很高,高,中等和低),假如在相等优先权时由硬件决定(请求0优先于请求1,依此类推)。
(4) 独立的源和目标传输宽度(字节,半字,全字),模拟打包和拆包的过程。
(5) 支持循环的缓冲器管理
(6) 每个通道都有3个事件标志( DMA 半传输, DMA 传输完成和 DMA 传输出错),这3个事件标志逻辑或成为一个单独的中断请求。
(7) 存储器和存储器间的传输。
(8) 外设和存储器,存储器和外设的传输。
(9) 闪存, SRAM , 外 设 的 SRAM , APB 1和 APB 2外设均可作为访问的源和目标
(10) 可编程的数据传输数据:最大为65536

DMA控制器

1.DMA控制器
使用DMA方式传输时,需要一个专门的器件来协调外设接口和内存储器的数据传输,这个专门的器件称为DMA控制器,简称DMAC.

DMA的传送过程

1.DMA预处理:
CPU向DMA送命令,如DMA方式,主存地址,传送的字数等,之后CPU执行原来的程序。
2.数据传送:
在DMA控制下自动完成
3.DMA结束处理:
结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU.

DMA的内部寄存器

地址寄存器:存放DMA传输时存储单元地址;
字节计数器:存放DMA传输的字节数;
控制寄存器:存放由CPU设定的DMA传输方式,控制命令等;
状态寄存器:存放DMAC当前的状态,包括有无DMA请求,是否结束等。

DMA的内部结构

在这里插入图片描述
简析:我们可以看到DMAC中有刚刚提到的四种寄存器,首先进行预处理(即CPU把寄存器初始化设置OK),接口数据准备就绪,会向DMAC发出一个请求 DREQ,DMAC会向CPU申请系统总线的使用权,发出HOLD信号,如果CPU处于空闲或者任务处理完成之后,会回复一个 HLDA信号,DMAC得到CPU的回复后,会回复DACK信号给接口,表示可以传输数据,然后接口就会将数据放到总线上进行传输,DAMC通过控制地址与读写,将数据从接口送到内存储器或者将内存储器的数据送到接口。传输完成之后,HOLD就会放开,然后CPU就继续使用系统 总线。

DMA的传输过程

总线请求:DMAC向CPU申请使用总线
总线控制转移:CPU同意DMAC管理总线
数据传输:外设接口和存储器之间传输数据
修改地址和计数器:位下一次传输做准备
结束处理:DMAC放弃对总线的控制权

以上过程完全由硬件电路实现,速度很快。
用DMA方式进行一次数据传输所经历的时间称为“DMA周期”,大体相当于一次总线读写周期的时间。

STM32的DMA框图

在这里插入图片描述
DMA控制器和Cortex-M3核共享系统数据线执行直接存储器数据传输。

**简析:**外设如果有数据或者接受数据完成,会通过 DMA Request 发送相应的请求信号,AHB系统总线进入 AHB Stave,根据仲裁器和通道号进行相应的操作。DMA的通道,这里能看到的是7个(Ch1-Ch7) ,通道连接到下方图表中,DMA请求映像。
在这里插入图片描述
**简析:**这个图里的的请求映像其实相当于上图中的DMA Request,这7个通道是划分的,比如 ADC1/TIM2_CH3/TIM4_CH1他们的触发信号归类为通道1,这些都是 HW REQUEST 1为硬件的触发信号,另外还有 SW TRIGGER 为软件触发信号,一般是内存到内存,这里就与外设无关,这里通道优先级由上到下(1到7),每个通道可以单独打开与关闭,比如Channel 1 EN bit,每个通道都对应多个外设。

DMA 通道分配对照表

在这里插入图片描述

DMA通道配置过程

  1. 在DMA_CPARx寄存器中设置外设寄存器的地址,发生外设数据传输请求时,这个地
    址将是据传输的源或目标。

  2. 在DMA_CMARx寄存器中设置数据存储器的地址.发生外设数据传输请求时,传输的
    数据将从这个地址读出或写入这个地址。

  3. 在DMA_CNDTRx寄存器中设置要传输的数据量。在毎个数据传输后,这个数值递减。

  4. 在DMA_CCRx寄存器的PL[1:0】位中设置通道的优先级,

  5. 在DMA_CCRx寄存器中设置数据传输的方向、循环模式、外设和存储器的增量模式、
    外设和存储器的数据宽度、传输一半产生中断或传输完成产生中断。

  6. 设置DMA_CCRx寄存器的ENABLE位,启动该通道。
    —旦启动了DMA通道,它既可响应联到该通道上的外设的DMA请求。
    当传输一半的数据后,半传输标志(HTIF)被置1 , 当 设置了允许半传输中断位(HTIE)时,将产
    生一个中断请求,在数据传输结束后,传输完成标志(TCIF)被置1 , 当 设置了允许传输完成中断位(TCIE)时,将产生一个中断请求。

几种常用的模式

1、正常缓存模式
2、循环缓存模式
循环模式用于处理循环缓冲区和连续的数据传输(如ADC的扫描模式)。在DMA_CCRx寄存器中的CIRC位用于开启这一功能。当启动了循环模式,数据传输的数目变为0时,将会自动地恢复成配置通道时设置的初值,DMA操作将会继续进行。

数据流向
1、外设到内存、内存到外设模式
2、内存到内存模式
当DMA通道的操作可以在没有外设请求的情况下进行,这种操作就是存储器到存储器模式。
当设置了DMA_CCRx寄存器中的 MEM2MEN位后,在软件设置了MA_CCRx寄存器中的EN位启动DMA通道时,DMA传输将马上开始,当DMA_CNDTRx寄存器变为0时,DMA传输结束。存储器到存储器模式不能与循环模式同时使用。

DMA的寄存器

在这里插入图片描述
具体寄存器各个位的配置请参照手册


推荐阅读

史海拾趣

GTM公司的发展小趣事

关于电源反馈控制电路,网友们可能会提出多种问题,这些问题涵盖了其工作原理、设计、应用、故障排查及优化等方面。以下是一些常见问题及其简要回答:

  1. 问题:什么是电源反馈控制电路,它的主要作用是什么?
    回答:电源反馈控制电路是一种通过监测电源输出电压或电流,并将其与设定值进行比较,然后调整电源输出以维持设定值的电路。它的主要作用是确保电源输出的稳定性和准确性,无论负载如何变化,都能保持输出电压或电流在预定范围内。

  2. 问题:电源反馈控制电路有哪些常见的拓扑结构?
    回答:常见的电源反馈控制电路拓扑包括电压模式控制(Voltage Mode Control, VMC)和电流模式控制(Current Mode Control, CMC)。电压模式控制主要关注输出电压的稳定性,而电流模式控制则在电压控制的基础上增加了对输出电流的直接控制,以提高瞬态响应和稳定性。

  3. 问题:如何设计有效的电源反馈控制电路?
    回答:设计有效的电源反馈控制电路需要考虑多个因素,包括选择合适的反馈元件(如电阻、电容、电感)、放大器类型(运算放大器、比较器等)、补偿网络设计(以改善稳定性和响应速度)、以及选择合适的控制策略(如PID控制)。此外,还需要进行仿真和实验验证,以确保设计的电路能够满足性能指标。

  4. 问题:电源反馈控制电路中遇到稳定性问题时应该如何解决?
    回答:遇到稳定性问题时,首先需要检查反馈回路中的元件是否匹配良好,特别是补偿网络的设计是否合理。可以通过调整补偿网络的参数(如增加相位裕度)来改善稳定性。此外,检查控制策略是否适合当前的应用场景,必要时可以更换控制策略或调整控制参数。

  5. 问题:电源反馈控制电路中的噪声问题如何解决?
    回答:噪声问题通常来源于电源本身、外部环境或电路内部元件。解决噪声问题的方法包括使用低噪声的电源元件、增加滤波电路(如LC滤波器)、优化PCB布局以减少电磁干扰、以及采用差分放大器等噪声抑制技术。

  6. 问题:电源反馈控制电路在哪些领域有广泛应用?
    回答:电源反馈控制电路在电子设备的各个领域都有广泛应用,包括但不限于计算机电源、通信设备、工业控制、汽车电子、医疗设备、LED照明等。这些领域对电源的稳定性和效率要求很高,因此电源反馈控制电路成为不可或缺的一部分。

高创科技(gotrend)公司的发展小趣事

聚辰(Giantec)公司电子行业发展的五个故事

故事一:技术传承与独立运营

聚辰半导体股份有限公司(Giantec Semiconductor Corporation)的故事始于2009年,由美国ISSI公司与其高管共同出资成立。这家公司继承了ISSI在EEPROM和智能卡芯片技术上的专利和研发团队,为后续的快速发展奠定了坚实基础。随着ISSI公司股权的变动,聚辰半导体逐渐由国资企业接手并开始独立运营。这一转变不仅让聚辰获得了更大的自主权,也为其在存储芯片领域的深耕细作提供了有力支持。

故事二:全球布局与市场拓展

自成立以来,聚辰半导体便致力于全球化布局,不仅在上海设立总部,还在美国硅谷、韩国、中国香港、中国台湾、深圳、南京、苏州等地设立了子公司、办事处或销售机构。这一战略布局使得聚辰能够更好地服务全球客户,迅速响应市场需求。同时,聚辰的产品线不断扩展,从最初的EEPROM存储芯片,逐步延伸到NOR Flash、音圈马达驱动芯片和智能卡芯片等多个领域,广泛应用于智能手机、汽车电子、工业控制等多个行业。

故事三:技术突破与产品创新

在技术创新方面,聚辰半导体始终走在行业前列。2012年,聚辰推出的EEPROM存储芯片成功进入三星、OPPO等手机品牌的摄像头模组供应链,标志着公司在全球EEPROM存储芯片市场的地位逐渐稳固。此后,聚辰不断推出新产品,如音圈马达驱动芯片与EEPROM二合一产品,进一步提升了其在手机摄像头模组中的竞争力。同时,聚辰还积极布局汽车电子市场,多款车规级存储芯片获得市场认可,为公司带来了新的增长点。

故事四:资本市场助力与品牌提升

2019年,聚辰半导体在上海证券交易所科创板成功上市,为公司的发展注入了强劲动力。资本市场的助力不仅让聚辰获得了更多的资金支持,还显著提升了公司的品牌影响力和市场认知度。上市以来,聚辰持续加大研发投入,优化产品结构,提升产品性能,进一步巩固了其在存储芯片领域的市场地位。

故事五:荣誉加身与行业认可

近年来,聚辰半导体凭借其出色的业绩和技术实力赢得了多项荣誉和行业认可。公司多次入选中国物联网企业百强榜单、上海硬核科技企业TOP100榜单等权威榜单,彰显了其在行业内的领先地位。同时,聚辰还积极履行社会责任,参与公益事业,如向中国科学技术大学捐赠资金用于支持人工智能创新中心建设等,进一步提升了公司的社会形象和品牌价值。这些荣誉和认可不仅是对聚辰过去努力的肯定,也是对其未来发展的期待和鼓舞。

GS Yuasa Battery Sales UK Ltd.公司的发展小趣事

对于基本二阶段低通滤波器电路,网友可能会有多方面的问题。以下是一些常见问题及其详细回答:

1. 基本二阶段低通滤波器电路的结构是怎样的?

回答:基本二阶段低通滤波器电路通常由两个一阶低通滤波器级联而成,每个一阶低通滤波器包含一个电阻和一个电容。具体来说,电路由两个电阻(R1, R2)和两个电容(C1, C2)组成。输入信号首先经过R1和C1组成的一阶低通滤波器,然后其输出再经过R2和C2组成的第二个一阶低通滤波器。这种结构可以有效滤除输入信号中的高频分量,只保留低频部分。

2. 如何计算二阶段低通滤波器的截止频率?

回答:二阶段低通滤波器的截止频率并非简单地将两个一阶滤波器的截止频率相加或平均。实际上,其截止频率与两个电阻和两个电容的值都有关。对于RC滤波器,单个一阶低通滤波器的截止频率为f_c1 = 1/(2πR1C1)和f_c2 = 1/(2πR2C2)。然而,对于二阶RC低通滤波器,其总截止频率通常使用以下公式计算:

f_c = \frac{1}{2\pi\sqrt{R_1R_2C_1C_2}} \] 这个公式考虑了两个滤波阶段的相互作用。 ### 3. 二阶段低通滤波器相比一阶滤波器有哪些优势? **回答**:二阶段低通滤波器相比一阶滤波器在滤波效果上有显著优势。具体来说,二阶段滤波器在通带内的增益更为平坦,而在阻带内的衰减速度更快(通常为-40dB/dec,比一阶滤波器的-20dB/dec快)。这意味着二阶段滤波器能更好地滤除高频噪声,保留低频信号,从而改善信号的纯度和信噪比。 ### 4. Sallen-Key结构和多路反馈结构(MFB)有什么区别? **回答**:Sallen-Key结构和多路反馈结构(MFB)是二阶低通滤波器的两种常见拓扑结构。Sallen-Key结构通常用于单位增益、高增益精度和低Q值的应用中,其电路结构相对简单,且对运算放大器的性能依赖性较小。而多路反馈结构(MFB)则适用于需要高Q值和高增益的应用场景。MFB结构通过引入额外的反馈路径来实现更高的Q值和更灵活的增益控制,但相应地,其电路复杂度也更高。 ### 5. 在实际应用中,如何选择合适的二阶段低通滤波器参数? **回答**:在选择二阶段低通滤波器的参数时,需要根据具体的应用需求来确定。首先,需要明确滤波器的截止频率,这取决于需要滤除的高频噪声的频率范围。其次,需要考虑滤波器的增益和相位特性,以确保信号在通过滤波器后能够保持所需的幅度和相位关系。最后,还需要考虑滤波器的稳定性和实现复杂度,以确保滤波器在实际应用中能够稳定可靠地工作。 在实际设计过程中,可能需要通过仿真软件来验证所选参数的效果,并根据仿真结果进行调整和优化。此外,还需要注意选择高质量的元件来构建滤波器电路,以确保滤波器的性能和稳定性。
Applied Micro Circuits (MACOM)公司的发展小趣事

Applied Micro Circuits(MACOM)公司的历史可以追溯到其创立之初。MACOM最初名为Microwave Associates,成立于上世纪某个时期,以磁控管作为首创产品,主要应用于微波雷达领域。随着技术的不断进步,公司逐步扩展产品线,推出了包括真空管、高功率PIN二极管/晶体管和移相器等一系列产品。然而,上世纪九十年代,由于经营不善,MACOM被AMP公司收购,随后又经过多次转手,最终成为Tyco旗下的一部分。

CDIL[Continental Device India Pvt. Ltd.]公司的发展小趣事

随着市场竞争的加剧和技术的不断进步,CDIL在15年前作出了重要决策——退出晶圆制造,转而专注于IC封装和电子制造服务。这一转型不仅使CDIL能够更好地适应市场需求,也为其带来了更广阔的发展空间。如今,CDIL的IC封装技术已达到国际先进水平,为全球众多知名电子企业提供优质服务。

Data Device Corporation公司的发展小趣事

随着电子技术的不断发展,DDC也积极投入研发,寻求技术突破。在数据接口技术方面,DDC不断推陈出新,研发出了一系列高性能、高可靠性的产品。同时,DDC还拓展了业务领域,将产品应用于更广泛的领域,如地面保障、高速串行通信等。这些举措使得DDC的产品线更加丰富,市场竞争力也得到了进一步提升。

问答坊 | AI 解惑

欧姆龙PLC中断问题

欧姆龙PLC如何实现中断,从那里进入及退出,请高人指点!…

查看全部问答>

[求助]关于直接通过I/O接口访问硬盘数据的可能性及思路的探索。

这个问题大概是这样的:     在OS里要访问硬盘上的数据要经过文件系统,现在我想不经过文件系统,直接对硬盘上的数据进行读写。     我的思路来自于市场上的硬盘播放器(就是可以直接播放硬盘里的多媒体文件的设备)。查了一 ...…

查看全部问答>

请问在wince里怎样用wifi发送特定数据

请问在wince里怎样用wifi发送特定数据 有人说就是socket编程,我没想明白,难道系统会自动调用wifi? 还请各位前辈指点迷津!…

查看全部问答>

学习AD0809,所以做一个数字电压表!

想学习一下AD,打算仿真做一个数字电压表,测量0~5V输出0~255,通过数码管显示,AD用的0809,模拟输入采用一个1K滑动变阻器连接到IN0(不知道这种做法是否可行?)现在的问题是,改变滑动变阻器的值,数码管的值有变化,但是并不是有规律地增大或 ...…

查看全部问答>

ST选型

请问谁清楚ST的哪个8位机有2个PWM,3个定时器,10路ADC,34个I/O(含10个AD口) ,是用来做电源的。wendellyang@163.com…

查看全部问答>

热电堆 信号选择

小弟最近想做一个用于微波炉的温度测量的红外探测模块。由于以前都没有做过项目,所以经验非常少,现在我苦于热电堆型号的挑选。         网上看了看有这些:SC0067、SC0070、10TP583T、OTP系列(如OTP-537F2、OTP- ...…

查看全部问答>

关于硬盘无刷电机的驱动

小弟在研究硬盘电机的驱动,我曾试过用小功率管9013,8050,8550等等来搭成达林顿管子,但是驱动电机的时候发热严重,而且明显有气无力...虽然能转...在网上找了很久,想用场效管IRF540N来驱动,但是不知道电路如何搭建...求各位高手,走过路过的能 ...…

查看全部问答>

差分放大器低通滤波器设计

有没谁用差分放大器做个低通滤波器的?请指点小弟一下,谢了...…

查看全部问答>

大三学生方向分流,求好心人指点

大三嵌入式又要分方向了, ARM 、 PCL、 单片机,感觉吧....就是没感觉,有没有前辈给这三个方向的发展,优缺点,就业情况分析一下啊? 小弟先谢谢了....!!!   …

查看全部问答>

针对beaglebone 扩展板,进行Linux驱动的调试!

好久没有发帖子了!今天来分享一下针对beaglebone 扩展板,进行Linux驱动的调试吧! 第二次修正beaglebone板子的外围电路还是比较顺利的! 具体编译内核的过程就不在介绍了!论坛里有很多人写了这方面的教程,Ti官方的文档也提供了较为全面的编译 ...…

查看全部问答>