赞
踩
1、DMA(Direct Memory Access)直接存储器存取
2、DMA通道的触发方式
3、STM32存储器组织与映像
计算机系统的五大组成部分是运算器、控制器、存储器、输入设备和输出设备,其中运算器和控制器一般会合在一起叫CPU,所以计算机核心就是CPU和存储器。存储器有两个知识点,一是存储器的内容,另一个是存储器的地址,STM32同理。
1、ROM(只读存储器),是一种非易失性、掉电不丢失的存储器。
2、RAM(随机存储器),是一种易失性、掉电丢失的存储器。
4、DMA框图
如图展现了STM32的Cortex-M3内核,可以将除该内核以外的其他部分都看作存储器。
寄存器是连接软件和硬件的桥梁,软件读写寄存器就相当于在控制硬件的执行。
5、寄存器读写
CPU/DMA直接访问Flash,是可以读不可写
SRAM是运行内存,可以任意读写
外设寄存器:看数据手册(数据寄存器是可以读写的)
6、DMA基本结构
(1) DMA进行数据转运时,首先应该定义两个站点。
(2) 每一个站点拥有三个参数,他们分别是:
(3) 两个站点的使用
(4) 传输计数器
(5) 自动重装器
(6) DMA的触发控制
触发就是决定DMA需要在什么时机进行转运的,由M2M(Memory to Memory)位进行控制,1为软件触发,0为硬件触发
软件触发
以最快的速度,连续不断地触发DMA,争取早日把传输计数清0,完成这一轮转换(和循环模式同时使用,因为软件触发是清0,循环模式是清0后自动重装,同时用,DMA停不下来)
适用于存储器到存储器的转运,因为存储器到存储器的触发时软件启动、不需要时机、并且想尽快完成任务
软件触发和循环模式不能同时使用,因为软件触发就是想把传输计数器清零,循环模式是清零后自动重装,如果同时使用DMA就停不下来了
硬件触发
(7) DMA进行转运的条件
图中右下角还有一个“开关控制”位,它指在编程时使用的DMA_Cmd()函数。
1、开关控制,DMA_Cmd必须使能
2、传输计数器必须大于0
3、触发源必须有触发信号,触发一次转运一次,传输计数器自减一次。当传输计数器等于0,且没有自动重装时,这时无论是否触发,DMA都不会再进行转运了
此时就需要DMA_Cmd给DISABLE,关闭DMA,再为传输计数器写一个大于0的数,在DMA_Cmd给Elable开启DMA,DMA才能继续工作
注意!!!写传输计数器时必须要先关闭DMA再进行,不能在DMA开启时写传输计数器,这是手册里的规定
1、DMA请求
硬件触发时,需要注意每个通道可选择的硬件触发源都是固定的,对每个通道而言,具体选择哪个通道,需要由对应的外设是否开启了DMA输出来决定的,并不由DMA决定。
2、数据传输(数据宽度和对齐要求)
如果低宽度转运到高宽度,在每个目标单位的高位补0;如果高宽度转运到低宽度,原单位的高位数据将丢失(小的写到大的,补0,大的写到小的,高位舍弃掉) 与uint8_t,uint16_t,uint32_t类型的数据相互赋值的规则类似
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。