【ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍】

文章目录

    • STM Register summary
      • STM DMA 相关的寄存器
      • DMA Transfer
        • Burst request
        • Single and burst request

STM Register summary

STM 的寄存器主要可以分为以下几类:

  • STM DMA 相关的;
  • STM HW Trigger 相关的;
  • 系统控制及状态寄存器;
  • 只读寄存器。

STM DMA 相关的寄存器

【ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍】_第1张图片
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发起请求的水位寄存器;

【ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍】_第2张图片

图 1-1 STM 功能框图

【ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍】_第3张图片

图 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

【ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍】_第4张图片

图 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

你可能感兴趣的:(#,ARM,Coresight,系列,arm开发,STM,DMA,STM,drtype,datype)