Edit online

寄存器描述

注:

本节的变量 n=0~3。

本节的变量N为通道号(从0开始)。

0x000 GPDMA_IRQ_EN_SET_STATE_1

重要:
对于本中断寄存器所有位域:
  • 写 1 打开中断
  • 写 0 忽略不作动作
  • 关闭中断参考对应 GPDMA_IRQ_EN_CLR

默认值:0x00000000

GPDMA中断开启与开启状态 1 (GPDMAInterrupt Request Set State 1)

位域

类型

默认值

描述

7+8*n

R/W1S

0x0

ch(n)_axiwt_illegal_irq_set

通道 AXI 写地址非法错误中断使能与标志

6+8*n

R/W1S

0x0

ch(n)_axird_illegal_irq_set

通道 AXI 读地址非法错误中断使能与标志

5+8*n

R/W1S

0x0

ch(n)_ahbwt_illegal_irq_set

通道 AHB 写地址非法错误中断使能与标志

4+8*n

R/W1S

0x0

ch(n)_ahbrd_illegal_irq_set

通道 AHB 读地址非法错误中断使能与标志

3+8*n

R/W1S

0x0

ch(n)_linkcfg_err_irq_set

通道 LINK 地址错误与 LINK ID 错误中断使能与标志

2+8*n

R/W1S

0x0

ch(n)_link_finish_irq_set

通道 n 完成链表(所有任务)中断使能与标志

1+8*n

R/W1S

0x0

ch(n)_task_finish_irq_set

通道 n 完成一个任务中断使能与标志

0+8*n

R/W1S

0x0

ch(n)_task_half_irq_set

通道 n 完成半个任务中断使能与标志

0x004 GPDMA_IRQ_EN_SET_STATE_2

默认值:0x00000000

GPDMA中断开启与开启状态 2(GPDMAInterrupt Request Set State 2)

位域

类型

默认值

描述

7+8*n

R/W1S

0x0

ch(n+4)_axiwt_illegal_irq_set

通道 (n+4) AXI 写地址非法错误中断使能与标志

6+8*n

R/W1S

0x0

ch(n+4)_axird_illegal_irq_set

通道 (n+4) AXI 读地址非法错误中断使能与标志

5+8*n

R/W1S

0x0

ch(n+4)_ahbwt_illegal_irq_set

通道 (n+4) AHB 写地址非法错误中断使能与标志

4+8*n

R/W1S

0x0

ch(n+4)_ahbrd_illegal_irq_set

通道 (n+4) AHB 读地址非法错误中断使能与标志

3+8*n

R/W1S

0x0

ch(n+4)_linkcfg_err_irq_set

通道 (n+4) LINK 地址错误与 ID 错误中断使能与标志

2+8*n

R/W1S

0x0

ch(n+4)_link_finish_irq_set

通道 (n+4)完成链表(所有任务)中断使能与标志

1+8*n

R/W1S

0x0

ch(n+4)_task_finish_irq_set

通道 (n+4)完成一个任务中断使能与标志

0+8*n

R/W1S

0x0

ch(n+4)_task_half_irq_set

通道 (n+4)完成半个任务中断使能与标志

0x008 GPDMA_IRQ_EN_SET_STATE_3

默认值:0x00000000

GPDMA中断开启与开启状态 3(GPDMAInterrupt Request Set State 3)

位域

类型

默认值

描述

7+8*n

R/W1S

0x0

ch(n+8)_axiwt_illegal_irq_set

通道 (n+8) AXI 写地址非法错误中断使能与标志

6+8*n

R/W1S

0x0

ch(n+8)_axird_illegal_irq_set

通道 (n+8) AXI 读地址非法错误中断使能与标志

5+8*n

R/W1S

0x0

ch(n+8)_ahbwt_illegal_irq_set

通道 (n+8) AHB 写地址非法错误中断使能与标志

4+8*n

R/W1S

0x0

ch(n+8)_ahbrd_illegal_irq_set

通道 (n+8) AHB 读地址非法错误中断使能与标志

3+8*n

R/W1S

0x0

ch(n+8)_linkcfg_err_irq_set

通道 (n+8) LINK 地址错误与 ID 错误中断使能与标志

2+8*n

R/W1S

0x0

ch(n+8)_link_finish_irq_set

通道 (n+8)完成链表(所有任务)中断使能与标志

1+8*n

R/W1S

0x0

ch(n+8)_task_finish_irq_set

通道 (n+8)完成一个任务中断使能与标志

0+8*n

R/W1S

0x0

ch(n+8)_task_half_irq_set

通道 (n+8)完成半个任务中断使能与标志

0x00C GPDMA_IRQ_EN_SET_STATE_4

默认值:0x00000000

GPDMA中断开启与开启状态 4(GPDMAInterrupt Request Set State 4)

位域

类型

默认值

描述

7+8*n

R/W1S

0x0

ch(n+12)_axiwt_illegal_irq_set

通道 (n+12) AXI 写地址非法错误中断使能与标志

6+8*n

R/W1S

0x0

ch(n+12)_axird_illegal_irq_set

通道 (n+12) AXI 读地址非法错误中断使能与标志

5+8*n

R/W1S

0x0

ch(n+12)_ahbwt_illegal_irq_set

通道 (n+12) AHB 写地址非法错误中断使能与标志

4+8*n

R/W1S

0x0

ch(n+12)_ahbrd_illegal_irq_set

通道 (n+12) AHB 读地址非法错误中断使能与标志

3+8*n

R/W1S

0x0

ch(n+12)_linkcfg_err_irq_set

通道 (n+12) LINK 地址错误与 ID 错误中断使能与标志

2+8*n

R/W1S

0x0

ch(n+12)_link_finish_irq_set

通道 (n+12)完成链表(所有任务)中断使能与标志

1+8*n

R/W1S

0x0

ch(n+12)_task_finish_irq_set

通道 (n+12)完成一个任务中断使能与标志

0+8*n

R/W1S

0x0

ch(n+12)_task_half_irq_set

通道 (n+12)完成半个任务中断使能与标志

0x020 GPDMA_IRQ_EN_CLR_1

重要:
对于本中断寄存器所有位域:
  • 写 1 关闭中断
  • 写 0 忽略不作动作
  • 打开中断参考对应 GPDMA_IRQ_EN_SET_STATE

默认值:0x00000000

GPDMA中断关闭 1 (GPDMAInterrupt Request Clear 1)

位域

类型

默认值

描述

7+8*n

W1C

0x0

ch(n)_axiwt_illegal_irq_clr

通道 AXI 写地址非法错误中断关闭

6+8*n

W1C

0x0

ch(n)_axird_illegal_irq_clr

通道 AXI 读地址非法错误中断关闭

5+8*n

W1C

0x0

ch(n)_ahbwt_illegal_irq_clr

通道 AHB 写地址非法错误中断关闭

4+8*n

W1C

0x0

ch(n)_ahbrd_illegal_irq_clr

通道 AHB 读地址非法错误中断关闭

3+8*n

W1C

0x0

ch(n)_linkcfg_err_irq_clr

通道 LINK 地址错误与 LINK ID 错误中断关闭

2+8*n

W1C

0x0

ch(n)_link_finish_irq_clr

通道 n 完成链表(所有任务)中断关闭

1+8*n

W1C

0x0

ch(n)_task_finish_irq_clr

通道 n 完成一个任务中断关闭

0+8*n

W1C

0x0

ch(n)_task_half_irq_clr

通道 n 完成半个任务中断关闭

0x024 GPDMA_IRQ_EN_CLR_2

默认值:0x00000000

GPDMA中断关闭 2(GPDMAInterrupt Request Clear 2)

位域

类型

默认值

描述

7+8*n

W1C

0x0

ch(n+4)_axiwt_illegal_irq_clr

通道 (n+4) AXI 写地址非法错误中断关闭

6+8*n

W1C

0x0

ch(n+4)_axird_illegal_irq_clr

通道 (n+4) AXI 读地址非法错误中断关闭

5+8*n

W1C

0x0

ch(n+4)_ahbwt_illegal_irq_clr

通道 (n+4) AHB 写地址非法错误中断关闭

4+8*n

W1C

0x0

ch(n+4)_ahbrd_illegal_irq_clr

通道 (n+4) AHB 读地址非法错误中断关闭

3+8*n

W1C

0x0

ch(n+4)_linkcfg_err_irq_clr

通道 (n+4) LINK 地址错误与 ID 错误中断关闭

2+8*n

W1C

0x0

ch(n+4)_link_finish_irq_clr

通道 (n+4)完成链表(所有任务)中断关闭

1+8*n

W1C

0x0

ch(n+4)_task_finish_irq_clr

通道 (n+4)完成一个任务中断关闭

0+8*n

W1C

0x0

ch(n+4)_task_half_irq_clr

通道 (n+4)完成半个任务中断关闭

0x028 GPDMA_IRQ_EN_CLR_3

默认值:0x00000000

GPDMA中断关闭 3(GPDMAInterrupt Request Clear 3)

位域

类型

默认值

描述

7+8*n

W1C

0x0

ch(n+8)_axiwt_illegal_irq_clr

通道 (n+8) AXI 写地址非法错误中断关闭

6+8*n

W1C

0x0

ch(n+8)_axird_illegal_irq_clr

通道 (n+8) AXI 读地址非法错误中断关闭

5+8*n

W1C

0x0

ch(n+8)_ahbwt_illegal_irq_clr

通道 (n+8) AHB 写地址非法错误中断关闭

4+8*n

W1C

0x0

ch(n+8)_ahbrd_illegal_irq_clr

通道 (n+8) AHB 读地址非法错误中断关闭

3+8*n

W1C

0x0

ch(n+8)_linkcfg_err_irq_clr

通道 (n+8) LINK 地址错误与 ID 错误中断关闭

2+8*n

W1C

0x0

ch(n+8)_link_finish_irq_clr

通道 (n+8)完成链表(所有任务)中断关闭

1+8*n

W1C

0x0

ch(n+8)_task_finish_irq_clr

通道 (n+8)完成一个任务中断关闭

0+8*n

W1C

0x0

ch(n+8)_task_half_irq_clr

通道 (n+8)完成半个任务中断关闭

0x02C GPDMA_IRQ_EN_CLR_4

默认值:0x00000000

GPDMA中断关闭 4(GPDMAInterrupt Request Clear 4)

位域

类型

默认值

描述

7+8*n

W1C

0x0

ch(n+12)_axiwt_illegal_irq_clr

通道 (n+12) AXI 写地址非法错误中断关闭

6+8*n

W1C

0x0

ch(n+12)_axird_illegal_irq_clr

通道 (n+12) AXI 读地址非法错误中断关闭

5+8*n

W1C

0x0

ch(n+12)_ahbwt_illegal_irq_clr

通道 (n+12) AHB 写地址非法错误中断关闭

4+8*n

W1C

0x0

ch(n+12)_ahbrd_illegal_irq_clr

通道 (n+12) AHB 读地址非法错误中断关闭

3+8*n

W1C

0x0

ch(n+12)_linkcfg_err_irq_clr

通道 (n+12) LINK 地址错误与 ID 错误中断关闭

2+8*n

W1C

0x0

ch(n+12)_link_finish_irq_clr

通道 (n+12)完成链表(所有任务)中断关闭

1+8*n

W1C

0x0

ch(n+12)_task_finish_irq_clr

通道 (n+12)完成一个任务中断关闭

0+8*n

W1C

0x0

ch(n+12)_task_half_irq_clr

通道 (n+12)完成半个任务中断关闭

0x040 GPDMA_IRQ_STA_1

默认值:0x00000000

GPDMA中断状态 1(GPDMAInterrupt States 1)

位域

类型

默认值

描述

7+8*n

R/W1C

0x0

ch(n)_axiwt_illegal_sta

通道 AXI 写地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AXI 写指令,接收到对象返回的 ERROR,则产生中断状态。

6+8*n

R/W1C

0x0

ch(n)_axird_illegal_sta

通道 AXI 读地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AXI 读指令,接收到对象返回的 ERROR,则产生中断状态。

5+8*n

R/W1C

0x0

ch(n)_ahbwt_illegal_sta

通道 AHB 写地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AHB 写指令,接收到对象返回的 ERROR,则产生中断状态。

4+8*n

R/W1C

0x0

ch(n)_ahbrd_illegal_sta

通道 AHB 读地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AHB 读指令,接收到对象返回的 ERROR,则产生中断状态。

3+8*n

R/W1C

0x0

ch(n)_linkcfg_err_sta

通道 LINK 地址错误中断与 LINK ID 错误中断状态

0: 无中断

1: 有中断

Task 中,源端地址空间或终端地址空间存在跨 0x1_ffff_ffff 边界,则产生中断状态。

Task 中,设置的 ID 与 GPDMA_LINK_ID_SET 不一致,则产生中断状态。

2+8*n

R/W1C

0x0

ch(n)_link_finish_irq_sta

通道 n 完成链表(所有任务)中断状态

0: 无中断

1: 有中断

完成 LINK 中所有 Task 传输,则产生中断状态。

1+8*n

R/W1C

0x0

ch(n)_task_finish_irq_sta

通道 n 完成一个任务中断状态

0: 无中断

1: 有中断

每完成一个 Task 传输,则产生中断状态。

0+8*n

R/W1C

0x0

ch(n)_task_half_irq_sta

通道 n 完成半个任务中断状态

0: 无中断

1: 有中断

每完成半个 Task(传输剩余字节数 ≤1/2 task_len)传输,则产生中断状态(即每个 Task 期间只产生一次中断)。

0x044 GPDMA_IRQ_STA_2

默认值:0x00000000

GPDMA中断状态 2(GPDMAInterrupt States 2)

位域

类型

默认值

描述

7+8*n

R/W1C

0x0

ch(n+4)_axiwt_illegal_sta

通道 (n+4) AXI 写地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AXI 写指令,接收到对象返回的 ERROR,则产生中断状态

6+8*n

R/W1C

0x0

ch(n+4)_axird_illegal_sta

通道 (n+4) AXI 读地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AXI 读指令,接收到对象返回的 ERROR,则产生中断状态

5+8*n

R/W1C

0x0

ch(n+4)_ahbwt_illegal_sta

通道 (n+4) AHB 写地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AHB 写指令,接收到对象返回的 ERROR,则产生中断状态

4+8*n

R/W1C

0x0

ch(n+4)_ahbrd_illegal_sta

通道 (n+4) AHB 读地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AHB 读指令,接收到对象返回的 ERROR,则产生中断状态

3+8*n

R/W1C

0x0

ch(n+4)_TASKCFG_ERR_STA

通道 (n+4) LINK 地址错误中断与 ID 错误中断状态

0: 无中断

1: 有中断

Task 中,源端地址空间或终端地址空间存在跨 0x1_ffff_ffff 边界,则产生中断状态

Task 中,设置的 ID 与 GPDMA_LINK_ID_SET 不一致,则产生中断状态

2+8*n

R/W1C

0x0

ch(n+4)_link_finish_irq_sta

通道 (n+4)完成链表(所有任务)中断状态

0: 无中断

1: 有中断

完成 LINK 中所有 Task 传输,则产生中断状态

1+8*n

R/W1C

0x0

ch(n+4)_task_finish_irq_sta

通道 (n+4)完成一个任务中断状态

0: 无中断

1: 有中断

每完成一个 Task 传输,则产生中断状态

0+8*n

R/W1C

0x0

ch(n+4)_task_half_irq_sta

通道 (n+4)完成半个任务中断状态

0: 无中断

1: 有中断

每完成半个 Task(传输剩余字节数<=1/2 task_len)传输,则产生中断状态(即每个 Task 期间只产生一次中断)

0x048 GPDMA_IRQ_STA_3

默认值:0x00000000

GPDMA中断状态 3(GPDMAInterrupt States 3)

位域

类型

默认值

描述

7+8*n

R/W1C

0x0

ch(n+8)_axiwt_illegal_sta

通道 (n+8) AXI 写地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AXI 写指令,接收到对象返回的 ERROR,则产生中断状态

6+8*n

R/W1C

0x0

ch(n+8)_axird_illegal_sta

通道 (n+8) AXI 读地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AXI 读指令,接收到对象返回的 ERROR,则产生中断状态

5+8*n

R/W1C

0x0

ch(n+8)_ahbwt_illegal_sta

通道 (n+8) AHB 写地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AHB 写指令,接收到对象返回的 ERROR,则产生中断状态

4+8*n

R/W1C

0x0

ch(n+8)_ahbrd_illegal_sta

通道 (n+8) AHB 读地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AHB 读指令,接收到对象返回的 ERROR,则产生中断状态

3+8*n

R/W1C

0x0

ch(n+8)_TASKCFG_ERR_STA

通道 (n+8) LINK 地址错误中断与 ID 错误中断状态

0: 无中断

1: 有中断

Task 中,源端地址空间或终端地址空间存在跨 0x1_ffff_ffff 边界,则产生中断状态

Task 中,设置的 ID 与 GPDMA_LINK_ID_SET 不一致,则产生中断状态

2+8*n

R/W1C

0x0

ch(n+8)_link_finish_irq_sta

通道 (n+8)完成链表(所有任务)中断状态

0: 无中断

1: 有中断

完成 LINK 中所有 Task 传输,则产生中断状态

1+8*n

R/W1C

0x0

ch(n+8)_task_finish_irq_sta

通道 (n+8)完成一个任务中断状态

0: 无中断

1: 有中断

每完成一个 Task 传输,则产生中断状态

0+8*n

R/W1C

0x0

ch(n+8)_task_half_irq_sta

通道 (n+8)完成半个任务中断状态

0: 无中断

1: 有中断

每完成半个 Task(传输剩余字节数<=1/2 task_len)传输,则产生中断状态(即每个 Task 期间只产生一次中断)

0x04C GPDMA_IRQ_STA_4

默认值:0x00000000

GPDMA中断状态 4(GPDMAInterrupt States 4)

位域

类型

默认值

描述

7+8*n

R/W1C

0x0

ch(n+12)_axiwt_illegal_sta

通道 (n+12) AXI 写地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AXI 写指令,接收到对象返回的 ERROR,则产生中断状态

6+8*n

R/W1C

0x0

ch(n+12)_axird_illegal_sta

通道 (n+12) AXI 读地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AXI 读指令,接收到对象返回的 ERROR,则产生中断状态

5+8*n

R/W1C

0x0

ch(n+12)_ahbwt_illegal_sta

通道 (n+12) AHB 写地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AHB 写指令,接收到对象返回的 ERROR,则产生中断状态

4+8*n

R/W1C

0x0

ch(n+12)_ahbrd_illegal_sta

通道 (n+12) AHB 读地址非法错误中断状态

0: 无中断

1: 有中断

GPDMA发出 AHB 读指令,接收到对象返回的 ERROR,则产生中断状态

3+8*n

R/W1C

0x0

ch(n+12)_TASKCFG_ERR_STA

通道 (n+12) LINK 地址错误中断与 ID 错误中断状态

0: 无中断

1: 有中断

Task 中,源端地址空间或终端地址空间存在跨 0x1_ffff_ffff 边界,则产生中断状态

Task 中,设置的 ID 与 GPDMA_LINK_ID_SET 不一致,则产生中断状态

2+8*n

R/W1C

0x0

ch(n+12)_link_finish_irq_sta

通道 (n+12)完成链表(所有任务)中断状态

0: 无中断

1: 有中断

完成 LINK 中所有 Task 传输,则产生中断状态

1+8*n

R/W1C

0x0

ch(n+12)_task_finish_irq_sta

通道 (n+12)完成一个任务中断状态

0: 无中断

1: 有中断

每完成一个 Task 传输,则产生中断状态

0+8*n

R/W1C

0x0

ch(n+12)_task_half_irq_sta

通道 (n+12)完成半个任务中断状态

0: 无中断

1: 有中断

每完成半个 Task(传输剩余字节数<=1/2 task_len)传输,则产生中断状态(即每个 Task 期间只产生一次中断)

0x080 GPDMA_BUS_CFG

默认值:0x00000040

GPDMA总线配置 (GPDMABUS Config)

位域

类型

默认值

描述

31:7

-

-

-

4

-

-

-

3

R/W

0x0

engine_clr_en

0: Disable

1: Enable

注:
仅Debug使用

2:0

-

-

_

0x088 GPDMA_LINK_ID_SET

默认值:0xa1c86688

GPDMA链表 ID 设置 (GPDMALINK ID SET)

位域

类型

默认值

描述

31:0

R/W

0xa1c86688

link_id_set

链表中 ID 需与此处设置值一致

所有通道task 的LINK ID 需要与此处一致,否则会产生 linkcfg_err_sta,GPDMA无法正常工作

0x090 GPDMA_FIFO_SIZE

默认值:0x80

GPDMAFIFO 大小 (GPDMAFIFO SIZE)

位域

类型

默认值

描述

31:0

R

0x80

fifo_size

GPDMAFIFO 大小 (每个通道独占FIFO 的大小)

0x0A0 GPDMA_ALL_CH_STATE

默认值:0x00000000

GPDMA所有通道状态 (GPDMAAll Channel States)

位域

类型

默认值

描述

31:0

R

0x00000000

ch(n)_state

(每个 bit 分别对应一个通道)

0: 空闲

1: 忙碌

0x0FC VERSION

默认值:0x00000200

版本号 (VERSION)

位域

类型

默认值

描述

31:0

R

0x00000200

Version (模块版本号)

采用 BCD 码显示,V2.0

0x100+N*0x80 GPDMA_CH_CTL_1

默认值:0x00000000

GPDMA通道控制 1(GPDMAChannel Control 1)

位域

类型

默认值

描述

31:5

-

-

-

4

R/WAC

0x0

ch_reen

通道重新使能

0:关闭

1:使能

当 GPDMA正在传输时,使能 ch_reen,控制器会立即丢弃当前正在传输的任务。重新获取Link,开始新的传输,传输完成会自动清 0(通过1个位域实现ch_abandon+ch_en 2个位域的功能,提高实时性,去掉了软件等待ch_abandon执行完成时间)

注:
ch_abandon=0、ch_cur_task_pause=0 且ch_immed_pause=0时,才能操作ch_reen置1

3:1

-

-

-

0

R/WAC

0x0

ch_en(Channel Enable)

通道使能

0: 关闭

1: 打开

注意 GPDMA传输完成后,该位会自动清零,可以通过读取该位表示 GPDMA当前状态

注:
硬件完成自动清0,不支持软件手动清0。软件手动对ch_en置0,会导致GPDMA工作异常

0x104+N*0x80 GPDMA_CH_CTL_2

默认值:0x00000000

GPDMA通道控制 2(GPDMAChannel Control 2)

位域

类型

默认值

描述

31:7

-

-

-

4 RO 0x0 task_busy

0:空闲 1:忙碌

2

R/WAC

0x0

ch_abandon

通道链表丢弃

0:通道链表丢弃完成

1:通道链表丢弃使能

GPDMA立即停止 (不需要等待 Task 完成),并且丢弃所有未完成 Task 传输

GPDMA丢弃完成之后 ,才能关闭其它外设。

注:
与ch_cur_task_pause、ch_immed_pause互斥(ch_cur_task_pause=0 且ch_immed_pause=0时,才能操作ch_abandon置1)。硬件完成自动清0,不支持软件清0。软件手动对ch_abandon置0,会导致GPDMA工作异常

1

R/W

0x0

ch_cur_task_pause

通道当前任务暂停

0: 继续

1: 通道当前任务暂停使能

软件置1之后,GPDMA不会立即暂停。GPDMA完成当前 Task 之后,才会停下传输

注:
与ch_abandon、ch_immed_pause互斥(ch_abandon=0 且ch_immed_pause=0时,才能操作ch_cur_task_pause置1)。需软件手动清0

0

R/W

0x0

ch_immed_pause

通道立即暂停

0: 继续

1: 通道立即暂停使能

GPDMA立即暂停 (不需要等待 Task 完成)

注:
与ch_cur_task_pause、ch_abandon互斥(ch_cur_task_pause=0 且ch_abandon=0时,才能操作ch_immed_pause置1)。需软件手动清0

0x108+N*0x80 GPDMA_TASK_ADDR_1

默认值:0x00000000

GPDMA通道任务地址 1(GPDMAChannel Task Addr 1)

位域

类型

默认值

描述

31:0

R/W

0x0

task_addr(Task Address)

任务低 32bit 地址

task_addr_update_en=0:task_addr 与 task_h8bits_addr保持为软件设置的值

task_addr_update_en=1: task_addr 与 task_h8bits_addr 硬件会自动更新为当前正在执行task 的地址

注:
task_h8bits_addr 与task_addr拼接一个完整的40bit地址。 task_addr 必须4Bytes对齐

0x10C+N*0x80 GPDMA_TASK_ADDR_2

默认值:0x00000000

GPDMA通道任务地址 2(GPDMAChannel Task Addr 2 )

位域

类型

默认值

描述

7:0

R/W

0x0

task_h8bits_addr(Task High 8bits Address)

GPDMA任务高 8 位地址

与task_addr构成40bit地址

0x110+N*0x80 GPDMA_CH_CTL_3

默认值:0x00000000

GPDMA通道控制 3(GPDMAChannel Control 3)

位域

类型

默认值

描述

31:24

_

_

_

15

-

-

-

14:13

R/W

0x0

task_rem_bytes_sel(Task Remain Byte Select)

GPDMA剩余待传输字节数模式

0x0:task_rem_bytes=终端剩余待传输字节数

0x1:task_rem_bytes=源端剩余待传输字节数

11:10

_

_

_

4

R/W

0x0

(ch_wb_en)CH Write Back Enable

GPDMA通道回写使能

0: disable

1: enable

需要配合 task_wb_en,只有同时有效,回写才会执行。

GPDMA每完成一个 Task 传输之后,获取源端(回写)的数据,写到终端(回写)。总共2个数据。数据位宽4Bytes

源端(回写)有两种模式选择,参考wb_src_sel

终端(回写)有两种模式选择,参考wb_dst_sel

0x118+N*0x80 GPDMA_MEM_SET_VAL

默认值:0x76543210

GPDMA内存设置值 (GPDMAMemory Set Value)

位域

类型

默认值

描述

31:0

R/W

0x76543210

mem_set_val(Memory Set Value)

内置设置值

当 Type=memoryset,GPDMA会直接把该寄存器的值,写入到终端地址空间,而不需要从源端读取。

0x11C+N*0x80 GPDMA_TASK_BCNT

默认值:0x00000000

GPDMA剩余传输字节数 (GPDMATask Byte Counter )

位域

类型

默认值

描述

31:25

-

-

-

24:0

R

0x0

task_rem_bytes(Task Remain Bytes)

GPDMA任务的终端(或源端)剩余待传输字节数

终端或源端的选择由 task_rem_bytes_sel 进行决定

task_rem_bytes_sel =0:终端剩余待传输字节数

task_rem_bytes_sel =1:源端剩余待传输字节数

0x120+N*0x80 GPDMA_LINK_ID

默认值:0x00000000

GPDMA链表 ID(GPDMALink ID)

位域

类型

默认值

描述

31:0

R/W

0x0

LINK ID

链表ID

0x124+N*0x80 GPDMA_TASK_CFG_1

默认值:0x00000000

GPDMA任务配置 (GPDMATask Config 1)

位域

类型

默认值

描述

30:28

R/W

0x0

dst_data_width(Destination Data Width)

GPDMA终端数据位宽 (总线上有效数据的位宽)

  • 0x0: 8 位
  • 0x1: 16 位
  • 0x2: 32 位
  • 0x3: 64 位
  • 0x4: 128 位

根据 设备重要配置信息进行选择。

27:25

R/W

0x0

dst_type(Destination Type)

  • 0x0: io_single (需要握手)
  • 0x1: io_multi (需要握手)
  • 0x2: memory (不需要握手)
  • 0x3:memoryset (不需要握手)
  • 0x4:io_fast (需要握手)

使用 memoryset 时,task 中源端任务链表参数描述必须配置与终端一样。

外设根据其 spec 规格来选择 io_single,io_multi 或 io_fast

关于不同设备的具体传输类型配置,可查看设备源端和终端传输类型

24:23

R/W

0x0

dst_burst(Destination Burst)

GPDMA终端突发数

  • 0x0: 1
  • 0x1: 4
  • 0x2: 8
  • 0x3: 16

Burst 推荐为 16

22:16

R/W

0x0

dst_id(Destination ID)

GPDMA终端 ID

根据 设备重要配置信息进行选择。

14:12

R/W

0x0

src_data_width(Source Data Width)

GPDMA源端数据位宽 (总线上有效数据的位宽)

0x0: 8 位

0x1: 16 位

0x2: 32 位

0x3: 64 位

0x4: 128 位

根据 设备重要配置信息进行选择。

11:9

R/W

0x0

src_type(Source Type)

0x0:io_single (需要握手)

0x1:io_multi (需要握手)

0x2:memory (不需要握手)

0x3:memoryset (不需要握手)

0x4:io_fast(需要握手)

使用 memoryset 时,task 中源端任务链表参数描述必须配置与终端一样。

外设根据其 spec 规格来选择 io_single,io_multi 或 io_fast

关于不同设备的具体传输类型配置,可查看设备源端和终端传输类型

8:7

R/W

0x0

src_burst(Source Burst)

GPDMA源端突发数

0x0: 1

0x1: 4

0x2: 8

0x3: 16

Burst 推荐为 16

6:0

R/W

0x0

src_id(Source ID)

GPDMA源端 ID

根据 设备重要配置信息进行选择。

0x128+N*0x80 GPDMA_BLOCK_LEN

默认值:0x00000000

GPDMA块长度 (GPDMABlock Length)

位域

类型

默认值

描述

31:16 - - -

15:0

R/W

0x0

block_len(Block Length)

块长度,单位 Byte

1.常规传输阶段:当 FIFO 内数据量达到配置的 block_len 时,GPDMA启动将这批数据一次性写入终端。

2.最后传输阶段(当 task_len % block_len != 0 时):由于剩余待传输数据量本身就不足一个 block_len,此时触发阈值会自动适配为剩余量:只要 FIFO 内攒完了这最后 task_len % block_len 字节的剩余数据,GPDMA就直接启动写传输,无需再等待凑满 block_len。( 寄存器block_len的值保持软件设置的值,而非task_len % block_len )

  • 当存储器到存储器传输时,推荐:block_len = GPDMA_FIFO_SIZE
  • 当存储器到外设或外设到存储器传输时:
  • 当 Type = io_multi 或io_fast 时,block_len = 外设GPDMA通路对应的FIFO水位

  • 当 Type = io_single 时,必须为(外设data_width/8)的整数倍(推荐:block_len = GPDMA_FIFO_SIZE

    Note:block_len 配置的值一定要小于等于GPDMA_FIFO_SIZE(block_len<=GPDMA_FIFO_SIZE)

    Note:block_len 配置的值一定要为(外设data_width/8)的整数倍(block_len=INT *(外设data_width/8))

当外设到外设传输时:外设与外设传输编程示例

0x12C+N*0x80 GPDMA_SRC_ADDR

默认值:0x00000000

GPDMA源端地址 (GPDMASource Addr)

位域

类型

默认值

描述

31:0

R/W

0x0

src_addr(Source Address)

源端低 32bits地址

使用限制[1:0]=2'b00 (4byte 对齐)

与src_h8_addr构成完整40bits地址

0x130+N*0x80 GPDMA_DST_ADDR

默认值:0x00000000

GPDMA终端地址 (GPDMADestination Addr)

位域

类型

默认值

描述

31:0

R/W

0x0

dst_addr(Destination Address)

终端低32bits地址

[1:0]=2'b00(4byte 对齐)

与dst_h8_addr构成完整40bits地址

0x134+N*0x80 GPDMA_TASK_LEN

默认值:0x00000000

GPDMA任务传输字节长度 (GPDMATASK LENGTH)

位域

类型

默认值

描述

31

R/W

0x0

task_wb_en(Task Write Back Enable)

需要配合 ch_wb_en,只有同时有效,回写才会执行。

GPDMA每完成一个 Task 传输之后,获取源端(回写)的数据,写到终端(回写)。总共2个数据。数据位宽4Bytes

源端(回写)有两种模式选择,参考wb_src_sel

终端(回写)有两种模式选择,参考wb_dst_sel

30

-

-

-

24:0

R/W

0x0

task_len(Task Length)

GPDMA当前 TASK 需要传输的数据长度单位 Bytes

0x138+N*0x80 GPDMA_TASK_CFG_2

默认值:0x00000000

GPDMA已传任务数量 (GPDMATASK CONFIG 2)

位域

类型

默认值

描述

31:28

R/W

0x0

src_ahb_hprot

终端访问总线 HPROT,对应 AHB 接口 HPROT 信号

注:
仅Debug使用

27:24

R/W

0x0

dst_ahb_hprot

源端访问总线 HPROT,对应 AHB 接口 HPROT 信号

注:
仅Debug使用

23:16

R/W

0x0

next_task_h8_addr

Next Task High 8 bits Address

下一任务高8bit地址

与next_task_addr 构成完整的40bits地址

注:
最后一个Task的next_task_h8_addr必须等于0xFF,GPDMA才会自动结束

15:8

R/W

0x0

dst_h8_addr

Destination High 8 bits Address

终端高 8bits 起始地址

与dst_addr 构成完整的40bits地址

7:0

R/W

0x0

src_h8_addr

Source High 8 bits Address

源端高 8bits 起始地址

与src_addr 构成完整的40bits地址

0x13C+N*0x80 GPDMA_NEXT_TASK_ADDR

默认值:0x00000000

GPDMA下一任务地址 (Next Task Addr)

位域

类型

默认值

描述

31:0

R/W

0x0

next_task_addr(Next Task Address)

下一任务低 32 bits 地址

与next_task_h8_addr 构成完整的40bits地址
注:
必须4Bytes对齐

0x140+N*0x80 GPDMA_WB_RADDR1

默认值:0x00000000

GPDMA回写读地址1 (Write Back Read Addr1 )

位域

类型

默认值

描述

31:0

R/W

0x0

wb_raddr1(Write Back Read Addr1 )

回写读地址1

任务完成之后,GPDMA会从对应地址空间,获取回写数据。

注:
必须4Bytes对齐

0x144+N*0x80 GPDMA_WB_RADDR2

默认值:0x00000000

GPDMA回写读地址2 (Write Back Read Addr2 )

位域

类型

默认值

描述

31:0

R/W

0x0

wb_raddr2( Write Back Read Addr2 )

回写读地址2

任务完成之后,GPDMA会从对应地址空间,获取回写数据。

注:
必须4Bytes对齐

0x148+N*0x80 GPDMA_WB_DATA1

默认值:0x00000001

GPDMA源端回写数据1 (Write Back Data1)

位域

类型

默认值

描述

31:0

R/W

0x1

wb_data1(Write Back Data1)

回写的数据1

0x14C+N*0x80 GPDMA_WB_DATA2

默认值:0x00000001

GPDMA回写数据2 (Write Back Data2)

位域

类型

默认值

描述

31:0

R/W

0x1

wb_data2(Write Back Data2)

回写的数据2

0x150+N*0x80 GPDMA_TASK_CNT

默认值:0x00000000

GPDMA当前执行任务数 (GPDMATask Counter )

位域

类型

默认值

描述

31:10

-

-

-

9:0

R

0x0

task_cnt(Task Counter)

GPDMA当前正在执行第几个任务

  • Task 开始时刻,更新 Counter。即 GPDMA每开始一次 Task,Counter+1。

  • 最大值为 1023,达到 1023 后,则保持不变。等下次通道重新使能,才变为 0。

0x154+N*0x80 GPDMA_CFG_SEL

默认值:0x00000000

GPDMA配置选择 (GPDMACONFIG SELECT )

位域

类型

默认值

描述

31:5

-

-

-

4

R/W

0x0

task_addr_update_en

任务地址更新使能

0:关闭 ( TASK_ADDR_1 与 TASK_ADDR_2 保持初始值)

1:使能 ( TASK_ADDR_1 与 TASK_ADDR_2 更新为当前 正在执行task 的地址)

3:2

-

-

-

1

R/W

0x0

link_src_sel(Link Source Selection )

LINK 来源选择

0:GPDMA根据 TASK_ADDR_1 与 TASK_ADDR_2 寄存器中配置的地址,去对应地址空间读取LINK

1:选择从 GPDMA_LINK_ID 、GPDMA_ TASK_CFG_1 、GPDMA_ BLOCK_LEN 、GPDMA_SRC_ADDR 、GPDMA_DST_ADDR 、GPDMA_TASK_LEN 、GPDMA_TASK_CFG_2 与GPDMA_NEXT_TASK_ADDR 寄存器获取LINK

link_src_sel=1时:仅支持单个Task。设置GPDMA_NEXT_TASK_ADDR(寄存器)=GPDMA_LINK_ID (寄存器)的地址实现回环功能。

0

_

_

_