文章目录
- STM Register summary
- STM DMA 相关的寄存器
- DMA Transfer
- Burst request
- Single and burst request
STM Register summary
STM 的寄存器主要可以分为以下几类:
- STM DMA 相关的;
- STM HW Trigger 相关的;
- 系统控制及状态寄存器;
- 只读寄存器。
STM DMA 相关的寄存器
STM 处理数据的方式有两种:
- 使用 CPU 往对应的 channels(stimulus port) 中写数据;
- 使用 DMA 向 对应的channels(stimulus port) 中搬运数据。
其中 STM 对DMA的使用方式又可以分为两种:
- 调用软件 DMA Driver 的接口,STM destination address 直接填写 STM Stimulus port的地址;
- 在 DMA 中配置好 STM destination address 地址和source address 之后,通过配置 STM DMA相关的寄存器来将memory中的数据搬运到STM 的 stimulus port中。
STMDMASTARTR: 发起DMA 传输;
STMDMASTOPR:结束DMA传输;
STMDMACTLR:控制DMA发起请求的水位寄存器;
图 1-1 STM 功能框图
图 1-2 Request and acknowledge buses on the peripheral request interface
- dr: 外设 request bus.
- da: DMAC acknowledge bus
外设 STM 可以通过 drtype[1:0] 对 DMAC 发起两种请求和一种响应:
- 发起一次 single transfer 请求,
drtype[1:0]=0b00
; - 发起一次 burst transfer 请求;
drtype[1:0]=0b01
; - 响应一次 flush 请求。
外设 STM 通过使用 drlast 信号告诉 DMAC 哪次是最后一次 transfer request在当前的 series 中,drlast 可以和 drtype[1:0]
同时传输。
DMAC 可以使用 datype[1:0] 做两种响应和一种请求:
- 当DMAC 完成一次 single transfer时,
datype[1:0]=1
; - 当 DMAC 完成一次 burst transfer时,
datype[1:0]=1
; - DMAC 发起一次flush request。
DMA Transfer
Burst request
图 1-3 Burst request signaling
- T1 The DMAC detects a request for a burst transfer.
- T3 - T6 The DMAC performs a burst transfer.
- T7 The DMAC sets davalid HIGH and sets datype[1:0] to indicate that the burst
transfer is complete.
当配置STM 寄存器 STMDMASTART.START
bit 为 1 的时候, STM 就会将 其 DMA peripheral request interface 中连接到 DMAC 中的 drtype[1:0] 两信号设置为 0b01
, 这样DMAC 就会检测到外设 STM 发起了一次 burst transfer 请求。
当DMAC 完成了外设 STM 发起的一次 burst transfer时就会将DATYPE[1:0]
两个信号设置为 0b01
来告知 STM 发起的一次 burst transfer 传输已经完成。
STM 不仅可以通过 DMA peripheral request interface 触发 DMAC 从 Memory 中向 STM中搬运数据,可以触发Memory 向 memory中的数据搬运
Single and burst request
TODO