分享免费的编程资源和教程

网站首页 > 技术教程 正文

单片机的DMA的要点难点概括

goqiw 2024-09-09 06:33:49 技术教程 14 ℃ 0 评论

DMA控制器

1 stm32的dma控制器有两组 DMA1,DMA2;

2 dma的运行也就是传输数据不通过内核,直接进行传输也就是cpu不干涉

3 DMA的数据传输方向 外设到储存器 储存器到外设 储存器到储存器

4 dma1有7个通道,dma2有5个通道 一个通道连接多个外设

5 DMA的优先级通过dma仲裁器来协调

DMA主要特性

1 dma的优先级通过软件编程设置,具有四种优先级别 很高 高 中 低 当优先级相同时由硬件决定。

2 源和目标数据必须对齐 两边同时为 半字 字 字节

3 每个通道具有三个中断标志 DMA半传输、 DMA传输完成和DMA传输出错

4 传输数据最大长度 65535

DMA框图

请注意图片下面的三句话

1 DMA2仅存在与大容量产品和互联网型产品

2 SPI/I2S3、 UART4、 TIM5、 TIM6、 TIM7和DAC的DMA请求仅存在于大容量产品和互联型产品

3 ADC3、 SDIO和TIM8的DMA请求仅存在于大容量产品

当cpu与DMA同时获取存储器或外设的数据时dma会暂时暂停,等待cpu若干个时钟周期。

DMA处理

在发生一个事件后,外设向DMA控制器发送一个请求信号。 DMA控制器根据通道的优先权处理请求。当DMA控制器开始访问发出请求的外设时, DMA控制器立即发送给它一个应答信号。当从DMA控制器得到应答信号时,外设立即释放它的请求。一旦外设释放了这个请求, DMA控制器同时撤销应答信号。如果有更多的请求时,外设可以启动下一个周期。总之,每次DMA传送由3个操作组成。

从外设数据寄存器或者从当前外设/存储器地址寄存器指示的存储器地址取数据,第一次传

输时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储器单元。

存数据到外设数据寄存器或者当前外设/存储器地址寄存器指示的存储器地址,第一次传输

时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储器单元。

执行一次DMA_CNDTRx寄存器的递减操作,该寄存器包含未完成的操作数目。、

DMA中断

每个DMA通道都可以在DMA传输过半、传输完成和传输错误时产生中断。为应用的灵活性考

虑,通过设置寄存器的不同位来打开这些中断。

DMA1设备

DMA2

通道配置过程(软件初始化通道)

下面是配置DMA通道x的过程(x代表通道号):

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

是数据传输的源或目标。

2. 在DMA_CMARx寄存器中设置数据存储器的地址。发生外设数据传输请求时,传输的数

据将从这个地址读出或写入这个地址。

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

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

5. 在DMA_CCRx寄存器中设置数据传输的方向、循环模式、外设和存储器的增量模式、外

设和存储器的数据宽度、传输一半产生中断或传输完成产生中断。

6. 设置DMA_CCRx寄存器的ENABLE位,启动该通道。

一旦启动了DMA通道,它既可响应连到该通道上的外设的DMA请求。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表