问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MCU内部组件和DMA 的介绍

创作时间:
作者:
@小白创作中心

MCU内部组件和DMA 的介绍

引用
CSDN
1.
https://blog.csdn.net/wedream23/article/details/140231925

MCU(微控制单元)是嵌入式系统的核心组件,而DMA(直接存储器存取)技术则能显著提升数据传输效率。本文将详细介绍MCU的内部结构以及DMA的工作原理和应用场景,帮助读者更好地理解这些基础技术。

对MCU的介绍

MCU(Microcontroller Unit,微控制单元)内部确实包含多种组件,主要包括以下几个部分:

  1. 处理器(Processor):这是 MCU 的核心部分,负责执行指令和处理数据。通常是一个 CPU(中央处理单元)。

  2. 存储器(Memory)

  • 程序存储器(Flash Memory 或 ROM):用于存储 MCU 程序代码。这部分存储器在断电时也能保存数据。
  • 数据存储器(RAM):用于存储在程序运行过程中需要的数据。RAM 是易失性的,在断电时数据会丢失。
  • EEPROM(如果有):一些 MCU 还包含 EEPROM,用于存储需要在断电时保持的数据,如配置参数等。
  1. 外围设备(Peripherals)
  • 定时器/计数器(Timers/Counters):用于计时、产生周期性事件等。
  • 串行接口(Serial Interfaces):如 UART、SPI、I2C 等,用于与其他设备通信。
  • ADC/DAC(模数转换器/数模转换器):用于模拟信号和数字信号之间的转换。
  • GPIO(通用输入输出口):用于与外部设备进行数字信号的输入输出。
  • PWM(脉宽调制):用于控制电机、LED 调光等应用。
  1. 控制器(Controller):MCU 内部的控制器可以理解为负责管理和协调各个部分的工作,确保系统正常运行。

MCU 集成了上述所有功能,使其成为一个功能强大且高度集成的微型计算机,广泛应用于各种嵌入式系统中,如家用电器、汽车电子、工业控制、智能设备等。

DMA介绍

  1. DMA(Direct Memory Access)直接存储器存取

  2. DMA 可以提供外设和存储器或者存储器和存储器之间的高速数据输出,无须CPU干预,节省了CPU的资源。

  3. 12个独立可配置的通道 : DMA1(7个通道),DMA2(5个通道)

  4. 每个通道都支持软件触发和特定的硬件触发

通道的意思是 从一个地方转移到另一个地方就需要一个通道

STM32F103C8T6 DMA资源: DMA1(7个通道)

(1)想把flash里的一批数据,转运到SRAM里去 ---- 软件触发

(2)外设到dma的转运 ----特定的硬件触发。

(3)转运ADC的数据,需要ADC每个通道AD转换完成后,硬件触发一次DMA ,之后DMA在转运

(4)这里特定的硬件触发你要使用某个外设的硬件触发源,就使用它连接的那个通道,不能任意使用通道

存储器映像

计算机系统的5大组成部分是 :运算器,控制器,存储器,输入和输出设备。

运算器和控制器合在一起叫CPU。

rom 只读存储器,是一种非易失性,掉电不丢失性存储器

ram 随机存储器,是一种掉电丢失性存储器

DMA框图

cpu或者DMA 直接访问Flash,只可以读而不可以写的

然后SRAM是运行内存,可以任意读写,没有问题

DMA基本结构

由于Flash是只读的,所以DMA不可以进行SRAM到Flash,或者Flash 到Flash转运操作。

介绍数据是否自增: ADC 扫描模式,用DMA进行数据转运,外设地址 ADC_DR 寄存器,如果自增下次就跑到别的寄存器中去了
存储器就需要自增

M2M 是memory to memory的软件触发 主要应用在存储器到存储器转运的情况。以最快的速度,连续不断地触发DMA.软件触发和循环模式,不能同时使用。
因为软件触发就是传输计数器清零,循环模式是清零后自动重装。

硬件触发,一般都是与外设有关的转运。
如ADC 转换完成,串口收到数据,定时时间到等等

DMA 开始转运有几个条件

1.开关控制,DMA_Cmd 必须使能

2.传输计数器必须大于0

3.必须有触发信号 ,触发一次,计数器自减一次。

4.当传输计数器等于0,且没有自动重装时,无论是否触发,DMA都不会再转运了。

  1. 此时关闭DMA

  2. 在为传输寄存器写入一个大于0的数

  3. 在开启DMA

注意,写传输计数器时,必须要先关闭DMA, 不能再DMA开启时,写传输计数器

DMA 请求

所以每个通道都支持软件触发和特定的硬件触发

数据宽度与对齐

如果源端宽度和目标宽度不一样,应该怎么处理

顺口溜 : 不够就补0,超了就舍弃高位。

介绍两个例子

数据转运+DMA

怎么设置参数

是否自增------都自增

方向 ------- 外设站点转运到存储器站点

传输计数器-------自减到0,DMA停止,转运完成

ADC扫描模式+DMA

如果ADC是连续扫描,那DMA就可以使用自动重装,在ADC启动下一轮的时候,DMA也启动下一轮的转运。

DMA 转运的时机,需要和ADC 单个通道转运完成同步

ADC扫描模式,在每一个单独的通道转换完成后,没有任何标志位,也不会触发中断。

所以,不太好判断,某一个通道转后完成的时机是什么时候。 但是有单个通道DMA请求。

ADC 扫描模式 和 DMA 的结合最为常见。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号