STM系列学习(2)DMA直接存储区访问
进入正题
DMA(DIrect Memory Access)直接存储器存取是单片机的一个外设,主要用来搬运数据,在AD采集、DA输出、存储器写入等可以不占用CPU。
STM32的DMA控制器包含了DMA1和DMA2,其中DMA1有7个通道,DMA2有5个通道。
DMA通道
不同的DMA控制器的通道对应不同的外设请求,根据软件编程响应对应的请求。
当发生多个DMA通道请求时,由仲裁器响应先后顺序。仲裁器在软件层面可以通过DMA_CCRx寄存器设置响应优先级,如果软件优先级相同,硬件层面根据通道编号顺序响应,编号越低优先级越高。
DMA使用
配置DMA
1.数据从位置1传输到位置2
- 1.1外设到存储器
ADC采集,传感器数据采集等 - 1.2存储器到外设
串口发送数据,DAC转换等 - 1.3存储器到存储器
内部FLASH向内部SRAM复制数据
2.传输数据的单位和大小
源和目标的数据宽度必须一致
外设的数据宽度由DMA_CCR的PSIZE[1:0]配置,可以是8/16/32位,存储器的数据宽度由DMA_CCR的MSIZE[1:0]配置,可以是8/16/32位
3.是一次传输还是循环传输
一次传输想要再传输需要关断DMA使能后再重新配置
循环传输一次传输完成后又恢复第一次传输时的配置DMA_CCR寄存器的CIRC循环模式控制位
最近设计元器件需要使用SPI进行通信,下一章研究一下SPI通讯方式