没有合适的资源?快使用搜索试试~ 我知道了~
首页使用STM32F2和STM32F4 DMA控制器
本应用笔记对如何使用STM32F2xx 和STM32F4xx 系列直接存储器访问控制器(DMA)进行了说明。STM32F2xx/F4xx DMA 控制器所具有的系统架构、多层总线矩阵和存储系统等,使其能够为应用提供很高的数据带宽,让用户可以开发出响应迅速的应用软件。 本应用笔记还提供了一些使用DMA的技巧,以便开发者能够充分利用STM32F2和STM32F4 DMA 的特性来为不同的外设和子系统的DMA 请求保证足够快的响应时间。 本文档中,使用"STM32F2/F4 设备" 代替STM32F2xx 和STM32F4xx,使用“DMA” 代替DMA 控制器。
资源详情
资源评论
资源推荐

2015 年 2 月 DocID022648 Rev 1 1/36
AN4031
应用笔记
使用 STM32F2 和 STM32F4 DMA 控制器
前言
本应用笔记对如何使用 STM32F2xx 和 STM32F4xx 系列直接存储器访问控制器 (DMA)进
行了说明。 STM32F2xx/F4xx DMA 控制器所具有的系统架构、多层总线矩阵和存储系统等,
使其能够为应用提供很高的数据带宽,让用户可以开发出响应迅速的应用软件。
本应用笔记还提供了一些使用DMA的技巧,以便开发者能够充分利用STM32F2和 STM32F4
DMA 的特性来为不同的外设和子系统的 DMA 请求保证足够快的响应时间。
本文档中,使用 "STM32F2/F4 设备 " 代替 STM32F2xx 和 STM32F4xx,使用 “DMA” 代替
DMA 控制器。
本应用笔记适用于
表
1 中所列产品。
本应用笔记应与 STM32F2/F4 参考手册 (RM0031、 RM0090 和 RM0368)共同阅读使用。
表 1. 适用产品
类型 产品料号
微控制器
STM32F2xx (STM32F205, STM32F207, STM32F215, STM32F217)
STM32F4xx (STM32F401, STM32F405, STM32F407, STM32F415,
STM32F417, STM32F427, STM32F429, STM32F437, STM32F439)
www.st.com

目录 AN4031
6/36 DocID022648 Rev 1
目录
1DMA控制器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1 DMA 传输特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.1 DMA 数据流 / 通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.2 数据流优先级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.3 源和目标地址 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.4 传输模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.5 传输数据量大小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.6 递增源 / 目标地址 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.7 源和目标数据宽度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.8 传输类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.9 DMA FIFO 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.10 源和目标突发大小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.11 双缓冲区模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.12 流量控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2 设置 DMA 传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 系统性能考虑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1 多层总线矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.1 定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.2 循环调度优先级方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.3 进行总线矩阵仲裁,而 DMA 传输延时变差的情形 . . . . . . . . . . . . . . . . . 20
2.2 DMA 传输路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.1 双 DMA 端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2 DMA 传输状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.3 DMA 请求仲裁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 AHB-to-APB 桥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.1 双 AHB-to-APB 端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3 AHB-to-APB 桥仲裁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3 如何预估 DMA 延时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1 DMA 传输时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1 默认 DMA 传输时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.2 并发存取时对应的 DMA 传输时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

DocID022648 Rev 1 7/36
AN4031 目录
7
3.2.1 ADC-to-SRAM DMA 传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.2 SPI 全双工 DMA 传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4 对 DMA 控制器进行编程时的一些技巧和忠告 . . . . . . . . . . . . . . . . . . . . . . 32
5 结论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6 修订历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

表格索引 AN4031
6/36 DocID022648 Rev 1
表格索引
表 1. 可用产品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
表 2. DMA1 请求映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
表 3. DMA2 请求映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
表 4. STM32F401 产品的 DMA1 请求映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
表 5. STM32F401 产品的 DMA2 请求映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
表 6. 可能的突发配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
表 7. 使用不同的 DMA 路径,其对应的外设端口访问 / 传输时间 . . . . . . . . . . . . . . . . . . . . . . . . 28
表 8. 存储器端口访问 / 传输时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
表 9. DMA 外设 (ADC)端口传输延时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
表 10. DMA 存储器 (SRAM)端口传输延时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
表 11. 文档修订历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

图片索引 AN4031
6/36 DocID022648 Rev 1
图片索引
图 1. DMA 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
图 2. 通道选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
图 3. DMA 源地址和目标地址递增 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
图 4. FIFO 结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
图 5. DMA 突发传输. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
图 6. 双缓冲区模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
图 7. 系统架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
图 8. CPU 和 DMA1 请求访问 SRAM1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
图 9. 五个主设备请求访问 SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
图 10. 中断发起的 CPU 传输带来的 DMA 传输延时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
图 11. DMA 双端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
图 12. 外设到存储器传输状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
图 13. 存储器到外设传输状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
图 14. DMA 请求仲裁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
图 15. AHB-to-APB1 桥上同时发生了 CPU 和 DMA1 访问请求. . . . . . . . . . . . . . . . . . . . . . . . . . . 26
图 16. SPI 全双工 DMA 传输时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
剩余35页未读,继续阅读



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0