直接存储器访问DMA
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x=0~7
仲裁根据每个stream的优先级决定对哪个stream的DMA 请求进行服务
软件优先级:4个级别@DMA_SxCR 硬件优先级:stream序号越低硬件优先级越高
每个stream连到8个可能的外设请求(channel)
通道选择控制到底哪个外设请求连到某个stream CHSEL[2:0]@DMA_SxCR
突发传输要求对应AHB主端口连接的地址必须支持自加
外设端口上支持突发:必须满足PINC=1 Mem端口上支持突发:必须满足MINC=1
突发传输时的地址指针
必须和传输中字节数对齐 不能跨越1KB进行突发传输,否则AHB报错,非DMA错误标志
与Burst对应的就是Single传输
DMA FIFO Source data width = 32-bit Destination data width = 16-bit 2 transfers are performed from source to DMA FIFO. 4 transfers are performed from DMA FIFO to destination.
19
FIFO模式用途之二:突发Burst传输
突发传输中的每个数据项的传输是不可分割的
AHB上的总线仲裁被锁定
突发传输可配置传输数据项的个数
数据项本身的字节数取决于目标地址的数据宽度 两个AHB主端口上的突发配置是彼此独立的
外设端口上的burst size:PBURST@DMA_SxCR Mem端口上的burst size :MBURST@DMA_SxCR
-OR
SW_Trigger
-OR
SW_Trigger
OR
High Priority Request
DMA2控制器上的请求都来自 APB2和AHB2 DMA2 上的外设
Low Priority Request
15 15
培训内容
DMA新增特性简介和功能框图
双AHB主端口和AHB总线矩阵
DMA控制器的channel、stream和仲裁 FIFO(Vs. Direct模式)
A1 B1 C1 D1
T2 C1 D1 T2
B1
T3 C1 T4 D1 T5 A2 T6 B2 T7 C2 T8 D2 A2 B2 C2 D2 T2
A2 B2 C2 D2
T3 A2 B2
T4
C2 D2
DMA FIFO Source data width = 8-bit Destination data width = 32-bit 8 transfers are performed from source to DMA FIFO. 2 transfers are performed from DMA FIFO to destination.
通用DMA传输过程 循环模式和双缓冲模式(STM32F2新增) 流控(STM32F2新增) 事件、中断和错误管理 DMA stream配置流程 STM32F2和STM32F1的DMA比较
11
DMA的stream和channel
每个DMA控制器有8路stream
REQ_STREAMx
Stream 6 TIM1_CH1/2 /3 -CRYP_IN -SDIO
Stream 7 -DCMI HASH_IN -USART1_T X USART6_T X -TIM8_CH4/_ TRIG/_COM
OR
SW_Trigger
ADC1 -ADC3 SPI1_RX --TIM1_TRIG
Ch1
Ch2
12
Stream和Channel示意图
Channel Stream
13
DMA1上的通道映射
Stream 0
Ch0
Stream 1 ---TIM2_UP TIM2_CH3 USART3_R X -TIM5_CH4 TIM5_TRIG TIM6_UP
Stream 2 SPI3_RX TIM7_UP -I2C3_RX UART4_RX TIM3_CH4 TIM3_UP TIM5_CH1 I2C2_RX
支持双端口不同的数据宽度:pack/unpack 支持突发传输模式
支持循环模式 支持双缓冲模式 5种事件管理
传输完成、完成一半、传输出错、FIFO错误、模式错误
5
DMA功能框图
6
DMA和总线矩阵
DMA访问存储器: Flash,
SRAMs,
FSMC
DMA访问外设: AHB-APB bridges; AHB1和AHB2上的外设 DMA旁路总线矩 阵来快速访问外设
直接存储器访问 DMA
1
培训内容
DMA新增特性简介和功能框图
双AHB主端口和AHB总线矩阵
DMA控制器的channel、stream和仲裁 FIFO(Vs. Direct模式) (STM32F2新增)
数据pack/unpack 突发传输模式
通用DMA传输过程 循环模式和双缓冲模式(STM32F2新增) 流控(STM32F2新增) 事件、中断和错误管理 DMA stream配置流程 STM32F2和STM32F1的DMA比较
不能支持突发传输 不支持Memory to Memory的传输
18
FIFO模式用途之一:数据pack/unpack
传输源头和目的地的数据宽度可以不同:
分别由PSIZE和MSIZE@DMA_SxCR指定 数据的传输次数NDT是相对于PSIZE来说的
宽度不同时在FIFO中进行数据的pack/unpack
Stream 6 -I2C1_TX TIM4_UP TIM2_CH2 TIM2_CH4 USART2_T X -TIM5_UP
Stream 7 SPI3_TX I2C1_TX TIM4_CH3 TIM2_UP TIM2_CH4 UART5_TX TIM3_CH3 -I2C2_TX
SPI3_RX I2C1_RX TIM4_CH1 -UART5_RX -TIM5_CH3 TIM5_UP --
Data Packing Example (8-bit 32-bit)
T1 A1 T2 A1 B1 C1 D1 T1
Data Unpacking Example (32-bit 16-bit)
A1 B1 C1 D1 A2 B2 C2 D2
T1
T1 A1 B1
A1 B1 C1 D1 A2 B2 C2 D2
4
STM32F2的DMA特性简介
集成2个DMA控制器
每个控制器拥有双AHB主端口 每个控制器集成8个stream DMA2上支持存储器之间的传输(DMA1控制器上不行)
通道选择可防止不同外设请求(channel)在通道(stream)上 的冲突 每个stream拥有各自的4*32位FIFO
数据pack/unpack 突发传输模式
通用DMA传输过程 循环模式和双缓冲模式(STM32F2新增) 流控(STM32F2新增) 事件、中断和错误管理 DMA stream配置流程 STM32F2和STM32F1的DMA比较
16
每个DMA的每个stream都有一个FIFO
3
为何设计新DMA控制器
STM32F1的DMA是“Lite” DMA, 只支持直接模 式,并且未对带宽使用作任何优化
STM32F2在DMA上的主要提高
实现双AHB主接口,更好利用总线矩阵和并行传输 为DMA stream增加各自的FIFO,弥补外设没有FIFO
新增Pack/Unpack特性,优化APB/AHB带宽 支持突发模式,进一步优化AHB带宽
7
DMA传输(1)
DMA2:APB2Mem DMA2: APB2AHB1/2和APB1/2
DMA1:APB1Mem DMA1: APB1AHB1/2或APB1/2 Not Possible
来自APB2外设 的DMA请求
一旦DMA控制器就绪,就 响应 APB2的DMA请求
8
DMA传输(2)
Ch3
Ch4
Ch5
USART6_R X
TIM1_CH1
USART6_R X
TIM1_CH2
USART6_T X
TIM1_CH3
Ch6
Ch7
-SW_Trigger
TIM8_UP
OR
SW_Trigger
TIM8_CH1
OR
SW_Trigger
TIM8_CH2
OR
SW_Trigger
TIM8_CH3
OR
SW_Trigger
17
不使用FIFO门限的Direct模式
默认DMA工作在Direct模式下 常用于需要在每次DMA请求后都有立即和Memory 之间单次传输的应用场合
立即:不经过FIFO门限的累积 单次:不是突发传输
Direct模式的传输限制
源地址和目的地址的数据宽度必须一致
由PSIZE@DMA_SxCR控制,无论MSIZE的值
DMDIS
FTH
FIFO门限值
FIFO的使用 从源地址来的数据先放在FIFO中, 达到门限后,再根据目地址的数 据宽度送出 数据放在FIFO,有DMA请求就送 走,和门限值无关
00
FIFO模式 1 01 10 11 Fra Baidu bibliotekirect模式 0
1/4 (4字节)
2/4 (8字节) 3/4 (12字节) 全满 (16字节)
Stream 2 TIM8_CH1/2 /3 ADC2 -SPI1_RX USART1_R X
Stream 3 -ADC2 -SPI1_TX SDIO -TIM1_CH1
Stream 4 ADC1 -----TIM1_CH4/_ TRIG/_COM
Stream 5 --CRYP_OUT SPI1_TX USART1_R X -TIM1_UP
DMA2能实现所有可能的传输 读、写路径都需要经过总线矩阵时,系统带宽减半
尽可能地使用DMA,以减少CPU负载
10
培训内容
DMA新增特性简介和功能框图
双AHB主端口和AHB总线矩阵
DMA控制器的channel、stream和仲裁 FIFO(Vs. Direct模式)
数据pack/unpack 突发传输模式
Stream 3 SPI2_RX -TIM4_CH2 -USART3_T X -TIM5_CH4 TIM5_TRIG I2C2_RX
Stream 4 SPI2_TX TIM7_UP -I2C3_TX UART4_TX TIM3_CH1 TIM3_TRIG TIM5_CH2 USART3_T X
Stream 5 SPI3_TX I2C1_RX -TIM2_CH1 USART2_R X TIM3_CH2 -DAC1
Ch1
Ch2
Ch3
Ch4
Ch5
Ch6
Ch7
DAC2
OR
OR
OR
OR
OR
OR
OR
OR
High Priority Request
DMA1控制器上的请求都来 自APB1上的外设
DMA1
Low Priority Request
14 14
DMA2上的通道映射
Stream 0
Ch0
Stream 1 -DCMI ADC3 ---
FIFO大小:4*4字节 所有传输都要经过FIFO
源地址AHB主端口xFIFOAHB主端口y目的地址 是否使用FIFO门限,区别开FIFO模式和Direct模式
FIFO常用于DMA控制器和Memories之间的缓冲 Memory-to-Memory必须使用FIFO模式
2
培训内容
DMA新增特性简介和功能框图
双AHB主端口和AHB总线矩阵
DMA控制器的channel、stream和仲裁 FIFO(Vs. Direct模式)
数据pack/unpack 突发传输模式
通用DMA传输过程 循环模式和双缓冲模式(STM32F2新增) 流控(STM32F2新增) 事件、中断和错误管理 DMA stream配置流程 STM32F2和STM32F1的DMA比较
DMA2: APB1AHB1/2或APB1/2
9
DMA传输小结
DMA1控制器能实现的传输
DMA1的AHB外设端口没有连到总线矩阵上
DMA1不能访问AHB1/AHB2外设 DMA1只能做APB1和Memory之间的传输
DMA2控制器能实现的传输
DMA2的AHB外设端口和AHB存储器端口都连到总线矩阵上
仲裁根据每个stream的优先级决定对哪个stream的DMA 请求进行服务
软件优先级:4个级别@DMA_SxCR 硬件优先级:stream序号越低硬件优先级越高
每个stream连到8个可能的外设请求(channel)
通道选择控制到底哪个外设请求连到某个stream CHSEL[2:0]@DMA_SxCR
突发传输要求对应AHB主端口连接的地址必须支持自加
外设端口上支持突发:必须满足PINC=1 Mem端口上支持突发:必须满足MINC=1
突发传输时的地址指针
必须和传输中字节数对齐 不能跨越1KB进行突发传输,否则AHB报错,非DMA错误标志
与Burst对应的就是Single传输
DMA FIFO Source data width = 32-bit Destination data width = 16-bit 2 transfers are performed from source to DMA FIFO. 4 transfers are performed from DMA FIFO to destination.
19
FIFO模式用途之二:突发Burst传输
突发传输中的每个数据项的传输是不可分割的
AHB上的总线仲裁被锁定
突发传输可配置传输数据项的个数
数据项本身的字节数取决于目标地址的数据宽度 两个AHB主端口上的突发配置是彼此独立的
外设端口上的burst size:PBURST@DMA_SxCR Mem端口上的burst size :MBURST@DMA_SxCR
-OR
SW_Trigger
-OR
SW_Trigger
OR
High Priority Request
DMA2控制器上的请求都来自 APB2和AHB2 DMA2 上的外设
Low Priority Request
15 15
培训内容
DMA新增特性简介和功能框图
双AHB主端口和AHB总线矩阵
DMA控制器的channel、stream和仲裁 FIFO(Vs. Direct模式)
A1 B1 C1 D1
T2 C1 D1 T2
B1
T3 C1 T4 D1 T5 A2 T6 B2 T7 C2 T8 D2 A2 B2 C2 D2 T2
A2 B2 C2 D2
T3 A2 B2
T4
C2 D2
DMA FIFO Source data width = 8-bit Destination data width = 32-bit 8 transfers are performed from source to DMA FIFO. 2 transfers are performed from DMA FIFO to destination.
通用DMA传输过程 循环模式和双缓冲模式(STM32F2新增) 流控(STM32F2新增) 事件、中断和错误管理 DMA stream配置流程 STM32F2和STM32F1的DMA比较
11
DMA的stream和channel
每个DMA控制器有8路stream
REQ_STREAMx
Stream 6 TIM1_CH1/2 /3 -CRYP_IN -SDIO
Stream 7 -DCMI HASH_IN -USART1_T X USART6_T X -TIM8_CH4/_ TRIG/_COM
OR
SW_Trigger
ADC1 -ADC3 SPI1_RX --TIM1_TRIG
Ch1
Ch2
12
Stream和Channel示意图
Channel Stream
13
DMA1上的通道映射
Stream 0
Ch0
Stream 1 ---TIM2_UP TIM2_CH3 USART3_R X -TIM5_CH4 TIM5_TRIG TIM6_UP
Stream 2 SPI3_RX TIM7_UP -I2C3_RX UART4_RX TIM3_CH4 TIM3_UP TIM5_CH1 I2C2_RX
支持双端口不同的数据宽度:pack/unpack 支持突发传输模式
支持循环模式 支持双缓冲模式 5种事件管理
传输完成、完成一半、传输出错、FIFO错误、模式错误
5
DMA功能框图
6
DMA和总线矩阵
DMA访问存储器: Flash,
SRAMs,
FSMC
DMA访问外设: AHB-APB bridges; AHB1和AHB2上的外设 DMA旁路总线矩 阵来快速访问外设
直接存储器访问 DMA
1
培训内容
DMA新增特性简介和功能框图
双AHB主端口和AHB总线矩阵
DMA控制器的channel、stream和仲裁 FIFO(Vs. Direct模式) (STM32F2新增)
数据pack/unpack 突发传输模式
通用DMA传输过程 循环模式和双缓冲模式(STM32F2新增) 流控(STM32F2新增) 事件、中断和错误管理 DMA stream配置流程 STM32F2和STM32F1的DMA比较
不能支持突发传输 不支持Memory to Memory的传输
18
FIFO模式用途之一:数据pack/unpack
传输源头和目的地的数据宽度可以不同:
分别由PSIZE和MSIZE@DMA_SxCR指定 数据的传输次数NDT是相对于PSIZE来说的
宽度不同时在FIFO中进行数据的pack/unpack
Stream 6 -I2C1_TX TIM4_UP TIM2_CH2 TIM2_CH4 USART2_T X -TIM5_UP
Stream 7 SPI3_TX I2C1_TX TIM4_CH3 TIM2_UP TIM2_CH4 UART5_TX TIM3_CH3 -I2C2_TX
SPI3_RX I2C1_RX TIM4_CH1 -UART5_RX -TIM5_CH3 TIM5_UP --
Data Packing Example (8-bit 32-bit)
T1 A1 T2 A1 B1 C1 D1 T1
Data Unpacking Example (32-bit 16-bit)
A1 B1 C1 D1 A2 B2 C2 D2
T1
T1 A1 B1
A1 B1 C1 D1 A2 B2 C2 D2
4
STM32F2的DMA特性简介
集成2个DMA控制器
每个控制器拥有双AHB主端口 每个控制器集成8个stream DMA2上支持存储器之间的传输(DMA1控制器上不行)
通道选择可防止不同外设请求(channel)在通道(stream)上 的冲突 每个stream拥有各自的4*32位FIFO
数据pack/unpack 突发传输模式
通用DMA传输过程 循环模式和双缓冲模式(STM32F2新增) 流控(STM32F2新增) 事件、中断和错误管理 DMA stream配置流程 STM32F2和STM32F1的DMA比较
16
每个DMA的每个stream都有一个FIFO
3
为何设计新DMA控制器
STM32F1的DMA是“Lite” DMA, 只支持直接模 式,并且未对带宽使用作任何优化
STM32F2在DMA上的主要提高
实现双AHB主接口,更好利用总线矩阵和并行传输 为DMA stream增加各自的FIFO,弥补外设没有FIFO
新增Pack/Unpack特性,优化APB/AHB带宽 支持突发模式,进一步优化AHB带宽
7
DMA传输(1)
DMA2:APB2Mem DMA2: APB2AHB1/2和APB1/2
DMA1:APB1Mem DMA1: APB1AHB1/2或APB1/2 Not Possible
来自APB2外设 的DMA请求
一旦DMA控制器就绪,就 响应 APB2的DMA请求
8
DMA传输(2)
Ch3
Ch4
Ch5
USART6_R X
TIM1_CH1
USART6_R X
TIM1_CH2
USART6_T X
TIM1_CH3
Ch6
Ch7
-SW_Trigger
TIM8_UP
OR
SW_Trigger
TIM8_CH1
OR
SW_Trigger
TIM8_CH2
OR
SW_Trigger
TIM8_CH3
OR
SW_Trigger
17
不使用FIFO门限的Direct模式
默认DMA工作在Direct模式下 常用于需要在每次DMA请求后都有立即和Memory 之间单次传输的应用场合
立即:不经过FIFO门限的累积 单次:不是突发传输
Direct模式的传输限制
源地址和目的地址的数据宽度必须一致
由PSIZE@DMA_SxCR控制,无论MSIZE的值
DMDIS
FTH
FIFO门限值
FIFO的使用 从源地址来的数据先放在FIFO中, 达到门限后,再根据目地址的数 据宽度送出 数据放在FIFO,有DMA请求就送 走,和门限值无关
00
FIFO模式 1 01 10 11 Fra Baidu bibliotekirect模式 0
1/4 (4字节)
2/4 (8字节) 3/4 (12字节) 全满 (16字节)
Stream 2 TIM8_CH1/2 /3 ADC2 -SPI1_RX USART1_R X
Stream 3 -ADC2 -SPI1_TX SDIO -TIM1_CH1
Stream 4 ADC1 -----TIM1_CH4/_ TRIG/_COM
Stream 5 --CRYP_OUT SPI1_TX USART1_R X -TIM1_UP
DMA2能实现所有可能的传输 读、写路径都需要经过总线矩阵时,系统带宽减半
尽可能地使用DMA,以减少CPU负载
10
培训内容
DMA新增特性简介和功能框图
双AHB主端口和AHB总线矩阵
DMA控制器的channel、stream和仲裁 FIFO(Vs. Direct模式)
数据pack/unpack 突发传输模式
Stream 3 SPI2_RX -TIM4_CH2 -USART3_T X -TIM5_CH4 TIM5_TRIG I2C2_RX
Stream 4 SPI2_TX TIM7_UP -I2C3_TX UART4_TX TIM3_CH1 TIM3_TRIG TIM5_CH2 USART3_T X
Stream 5 SPI3_TX I2C1_RX -TIM2_CH1 USART2_R X TIM3_CH2 -DAC1
Ch1
Ch2
Ch3
Ch4
Ch5
Ch6
Ch7
DAC2
OR
OR
OR
OR
OR
OR
OR
OR
High Priority Request
DMA1控制器上的请求都来 自APB1上的外设
DMA1
Low Priority Request
14 14
DMA2上的通道映射
Stream 0
Ch0
Stream 1 -DCMI ADC3 ---
FIFO大小:4*4字节 所有传输都要经过FIFO
源地址AHB主端口xFIFOAHB主端口y目的地址 是否使用FIFO门限,区别开FIFO模式和Direct模式
FIFO常用于DMA控制器和Memories之间的缓冲 Memory-to-Memory必须使用FIFO模式
2
培训内容
DMA新增特性简介和功能框图
双AHB主端口和AHB总线矩阵
DMA控制器的channel、stream和仲裁 FIFO(Vs. Direct模式)
数据pack/unpack 突发传输模式
通用DMA传输过程 循环模式和双缓冲模式(STM32F2新增) 流控(STM32F2新增) 事件、中断和错误管理 DMA stream配置流程 STM32F2和STM32F1的DMA比较
DMA2: APB1AHB1/2或APB1/2
9
DMA传输小结
DMA1控制器能实现的传输
DMA1的AHB外设端口没有连到总线矩阵上
DMA1不能访问AHB1/AHB2外设 DMA1只能做APB1和Memory之间的传输
DMA2控制器能实现的传输
DMA2的AHB外设端口和AHB存储器端口都连到总线矩阵上