再上一篇:5.4 DMA 控制器
上一篇:5.4.2 数据传送
主页
下一篇:5.4.4 应用举例
再下一篇:5.5 系统存贮器接口
文章列表

5.4.3 DMAC 寄存器

嵌入式系统(修订本)——Intel XScale 结构与开发 陈章龙 著

DMAC 一共有114 个寄存器,包括DMA 中断寄存器,每个DMA 通道的控制/状态、描 述器地址、源地址、目的地址、命令寄存器,每个请求源(共有33 个)的通道映象寄存器, 见表5-13。

表 5-13 DMAC 寄存器

地址

名字

描述

0x4000 0000

DCSR0

DMA 通道0 控制/状态寄存器

0x4000 0004

DCSR1

DMA 通道1 控制/状态寄存器

0x4000 0800

DCSR2

DMA 通道2 控制/状态寄存器

0x4000 000C

DCSR3

DMA 通道3 控制/状态寄存器

0x4000 0010

DCSR4

DMA 通道4 控制/状态寄存器

0x4000 0014

DCSR5

DMA 通道5 控制/状态寄存器

0x4000 0018

DCSR6

DMA 通道6 控制/状态寄存器

0x4000 001C

DCSR7

DMA 通道7 控制/状态寄存器

0x4000 0020

DCSR8

DMA 通道8 控制/状态寄存器

0x4000 0024

DCSR9

DMA 通道9 控制/状态寄存器

0x4000 0028

DCSR10

DMA 通道10 控制/状态寄存器

0x4000 002C

DCSR11

DMA 通道11 控制/状态寄存器

0x4000 0030

DCSR12

DMA 通道12 控制/状态寄存器

0x4000 0034

DCSR13

DMA 通道13 控制/状态寄存器

0x4000 0038

DCSR14

DMA 通道14 控制/状态寄存器

0x4000 003C

DCSR15

DMA 通道15 控制/状态寄存器

0x4000 00F0

DINT

DMA 中断寄存器

0x4000 0100

DRCM R0

针对DREQ 0,到通道映象寄存器的请求

(伴随芯片请求0)

0x4000 0104

DRCM R1

针对DREQ 1,到通道映象寄存器的请求

(伴随芯片请求1)

0x4000 0108

DRCM R2

针对I2S 接收,到通道映象寄存器的请求

0x4000 010C

DRCM R3

针对I2S 传送,到通道映象寄存器的请求

0x4000 0110

DRCM R4

针对BTUART 接收,到通道映象寄存器的请求

0x4000 0114

DRCM R5

针对BTUART 发送,到通道映象寄存器的请求

0x4000 0118

DRCM R6

针对FFUART 接收,到通道映象寄存器的请求

0x4000 011C

DRCM R7

针对FFUART 发送,到通道映象寄存器的请求

0x4000 0120

DRCM R8

针对AC97 麦克风接收,到通道映象寄存器的请求

0x4000 0124

DRCM R9

针对AC97 modem 麦克风接收,到通道映象寄存器的请求

0x4000 0128

DRCM R10

针对AC97 modem 麦克风发送,到通道映象寄存器的请求t

0x4000 012C

DRCM R11

针对AC97 audio 接收,到通道映象寄存器的请求

0x4000 0130

DRCM R12

针对AC97 audio 发送,到通道映象寄存器的请求

0x4000 0134

DRCM R13

针对SSP 接收,到通道映象寄存器的请求

0x4000 0138

DRCM R14

针对SSP 发送,到通道映象寄存器的请求

0x4000 013C

DRCMR15

保留

0x4000 0140

DRCM R16

保留

0x4000 0144

DRCM R17

针对FICP 接收,到通道映象寄存器的请求

0x4000 0148

DRCM R18

针对FICP 传送,到通道映象寄存器的请求

0x4000 014C

DRCM R19

针对STUART 接收,到通道映象寄存器的请求

0x4000 0150

DRCM R20

针对STUART 发送,到通道映象寄存器的请求

0x4000 0154

DRCM R21

针对MMC 接收,到通道映象寄存器的请求

0x4000 0158

DRCM R22

针对MMC 发送,到通道映象寄存器的请求

0x4000 015C

DRCM R23

保留

0x4000 0160

DRCM R24

保留

0x4000 0164

DRCM R25

针对USB 端点1,到通道映象寄存器的请求

0x4000 0168

DRCM R26

针对USB 端点2,到通道映象寄存器的请求

0x4000 016C

DRCM R27

针对USB 端点3,到通道映象寄存器的请求

0x4000 0170

DRCM R28

针对USB 端点4,到通道映象寄存器的请求

0x4000 0174

DRCM R29

保留

0x4000 0178

DRCM R30

针对USB 端点16,到通道映象寄存器的请求

0x4000 017C

DRCM R31

针对USB 端点17,到通道映象寄存器的请求

0x4000 0180

DRCM R32

针对USB 端点18,到通道映象寄存器的请求

0x4000 0184

DRCM R33

针对USB 端点9,到通道映象寄存器的请求

0x4000 0188

DRCM R34

保留

0x4000 018C

DRCM R35

针对USB 端点11,到通道映象寄存器的请求

0x4000 0190

DRCM R36

针对USB 端点12,到通道映象寄存器的请求

0x4000 0194

DRCM R37

针对USB 端点13,到通道映象寄存器的请求

0x4000 0198

DRCM R38

针对USB 端点14,到通道映象寄存器的请求

0x4000 019C

DRCM R39

保留

0x4000 0200

DDAD R0

DMA 通道0 描述地址寄存器

0x4000 0204

DSAD R0

DMA 通道0 源地址寄存器

0x4000 0208

DTAD R0

DMA 通道0 目标地址寄存器

0x4000 020C

DCMD0

DMA 通道0 命令地址寄存器

0x4000 0210

DDAD R1

DMA 通道1 描述地址寄存器

0x4000 0214

DSAD R1

DMA 通道1 源地址寄存器

0x4000 0218

DTAD R1

DMA 通道1 目标地址寄存器

0x4000 021C

DCMD1

DMA 通道1 命令地址寄存器

0x4000 0220

DDAD R2

DMA 通道2 描述地址寄存器

0x4000 0224

DSAD R2

DMA 通道2 源地址寄存器

0x4000 0228

DTAD R2

DMA 通道2 目标地址寄存器

0x4000022C

DCMD2

DMA 通道2 命令地址寄存器

0x4000 0230

DDAD R3

DMA 通道3 描述地址寄存器

0x4000 0234

DSAD R3

DMA 通道3 源地址寄存器

0x4000 0238

DTAD R3

DMA 通道3 目标地址寄存器

0x4000 023C

DCMD3

DMA 通道3 命令地址寄存器

0x4000 0240

DDAD R4

DMA 通道4 描述地址寄存器

0x4000 0244

DSAD R4

DMA 通道4 源地址寄存器

0x4000 0248

DTAD R4

DMA 通道4 目标地址寄存器

0x4000 024C

DCMD4

DMA 通道4 命令地址寄存器

0x4000 0250

DDAD R5

DMA 通道5 描述地址寄存器

0x4000 0254

DSAD R5

DMA 通道5 源地址寄存器

0x4000 0258

DTAD R5

DMA 通道5 目标地址寄存器

0x4000 025C

DCMD5

DMA 通道5 命令地址寄存器

0x4000 0260

DDAD R6

DMA 通道6 描述地址寄存器

0x4000 0264

DSAD R6

DMA 通道6 源地址寄存器

0x4000 0268

DTAD R6

DMA 通道6 目标地址寄存器

0x4000 026C

DCMD6

DMA 通道6 命令地址寄存器

0x4000 0270

DDAD R7

DMA 通道7 描述地址寄存器

0x4000 0274

DSAD R7

DMA 通道7 源地址寄存器

0x4000 0278

DTAD R7

DMA 通道7 目标地址寄存器

0x4000 027C

DCMD7

DMA 通道7 命令地址寄存器

0x4000 0280

DDAD R8

DMA 通道8 描述地址寄存器

0x4000 0284

DSAD R8

DMA 通道8 源地址寄存器

0x4000 0288

DTAD R8

DMA 通道8 目标地址寄存器

0x4000 028C

DCMD8

DMA 通道8 命令地址寄存器

0x4000 0290

DDAD R9

DMA 通道9 描述地址寄存器

0x4000 0294

DSAD R9

DMA 通道9 源地址寄存器

0x4000 0298

DTAD R9

DMA 通道9 目标地址寄存器

0x4000 029C

DCMD9

DMA 通道9 命令地址寄存器

0x4000 02A0

DDAD R10

DMA 通道10 描述地址寄存器

0x4000 02A4

DSAD R10

DMA 通道10 源地址寄存器

0x4000 02A8

DTAD R10

DMA 通道10 目标地址寄存器

0x4000 02AC

DCMD10

DMA 通道10 命令地址寄存器

0x4000 02B0

DDAD R11

DMA 通道11 描述地址寄存器

0x4000 02B4

DSAD R11

DMA 通道11 源地址寄存器

0x4000 02B8

DTAD R11

DMA 通道11 目标地址寄存器

0x4000 02BC

DCMD11

DMA 通道11 命令地址寄存器

0x4000 02C0

DDAD R12

DMA 通道12 描述地址寄存器

0x4000 02C4

DSAD R12

DMA 通道12 源地址寄存器

0x4000 02C8

DTAD R12

DMA 通道12 目标地址寄存器

0x4000 02CC

DCMD12

DMA 通道12 命令地址寄存器

0x4000 02D0

DDAD R13

DMA 通道13 描述地址寄存器

0x4000 02D4

DSAD R13

DMA 通道13 源地址寄存器

0x4000 02D8

DTAD R13

DMA 通道13 目标地址寄存器

0x4000 02DC

DCMD13

DMA 通道13 命令地址寄存器

0x4000 02E0

DDAD R14

DMA 通道14 描述地址寄存器

0x4000 02E4

DSAD R14

DMA 通道14 源地址寄存器

0x4000 02E8

DTAD R14

DMA 通道14 目标地址寄存器

0x4000 02EC

DCMD14

DMA 通道14 命令地址寄存器

0x4000 02F0

DDAD R15

DMA 通道15 描述地址寄存器

0x4000 02F4

DSAD R15

DMA 通道15 源地址寄存器

0x4000 02F8

DTAD R15

DMA 通道15 目标地址寄存器

0x4000 02FC

DCMD15

DMA 通道15 命令地址寄存器

一、DMA 中断寄存器(DINT

DINT 只可读出,它锁存每个通道的中断状态。 在发生下列情况时产生中断:

z 发生相应通道有关的内部总线数据传送错误。

z 现行传送成功结束,且DCMDx 的ENDIRQEN 位为1。

z 成功装入现行描述器,且DCMDx 的STARTIRQEN 位为1。

z DCSRx 的STOPIRQEN 位为1,且相应通道处于非初始化或停止状态。 软件应向相应DCSRx 寄存器的标志位写入1 来清除中断


位31~16:保留
位15~0:CHLINTRx——通道X 中断(只读)

0=无中断

1=通道X 发生中断

二、DMA 通道控制/状态寄存器(DCSRx)
每个DMA 通道有一个DCSRx,x=0~15。

位31:RUN——运行位(读/写)

0=停止通道。

1=启动通道。

位30:NODESCFETCH——非描述器取入(读/写)

0=描述器取入方式。

1=非描述器取入方式。

位29:STOPIRQEN——停止中断允许(读/写)

0=不产生中断。

1=允许在通道处于非初始化或停止状态产生中断。 位28~9:保留

位8:REQPEND——有(有只读)

0=无请求。

1=通道有请求。 位7~4:保留

位3:STOPSTATE——停止状态(只读)

0=通道在运行。

1=通道处于非初始化或停止状态。

位2:ENDINTR——结束中断(只读写入1 清0)

0=无中断。

1=现行传送顺利完成且DCMDx 的LENGTH=0 时产生中断。 位1:STARTINTR——启动中断(只读,写入1 清0)

0=无中断。

1=成功取出描述器时产生中断。

位0:BUSERRINT——总线错误中断(只读,写入1 清0)

0=无中断。

1=总线出错时产生中断。

三、DMAZ 请求至通道映象寄存器(DRCMRn)
每个 DMA 请示有一个 DRCMRn 寄存器,n=32~0。它用于把这请求映象于 16 个 DMA
通道之一。

位31~8:保留。
位7:MAPVLD——映象有效(读/写)

0=请求不映象。

1=请求映象为由CHLNUM 指出的通道。 位6~4:保留。

位3~0:CHLNUM——DMA 通道号。
四、DMA 描述器地址寄存器(DDADRx)
每个 DMA 通道有一个 DDADRx,X=0~15。它为 32 位可读写寄存器,存放该通道的下 一个描述器的存贮地址。该地址的低4 位必须为0。

位31~4:描述器地址。 位3~1:保留。
位0:STOP——停止。

0=通道继续运行。

1=在完成本描述器的处理后停止通道。

五、DMA 源地址寄存器(DSADRx)和目的地址寄存器(DTADRx)

每个DMA 通道有一个DSADRx 和DTADRx,x=0~15。在描述器取入方式它们为只读,在 非描述器取入方式它们可读写。它们为32 位寄存器,但低2 位必须为0,并且对外部器件, 地址位3 也必须为0。

六、DMA 命令寄存器(DCMDx)
每个 DMA 通道有一个 DCMDx。在描述器取入方式它为只读,在非描述器取入方式它 可读写。

位31:INCSRCADDR——源地址增量

0=不增量源地址。

1=在每次内部总线传送后目的地址增量SIZE。 位30:INCTRGADDR——目的地址增量

0=不增量目的地址。

1=在每次内部总线传送后目的地址增量SIZE。 位29:FLOWSRC——源控制数据流

0=立即启动数据传送。

1=在开始数据传送前等待源器件的请求信号。 位28:FLOWTRG——目的控制数据流

0=立即启动数据传送。

1=在开始数据传送前等待目的器件的请求信号。 位27~23:保留。

位22:STARTIRQEN——开始中断允许。

0=不产生中断。

1=允许在装入描述器(4 字)时产生中断。 位21:ENDIRQEN——结束中断允许。

0=不产生中断。

1=允许在DCMD 的LENGTH 减速为0 时产生中断。 位20、19:保留

位18:ENDIAN——器件位序。

0=字节顺序为低位在后。

1=保留。

位17、16:SIZE——每次数据传送的最大成批传送的大小。

00:保留

01:8 字节。

10:16 字节。

11:32 字节。

位15、14:WIDTH——内部外围的宽度。

00:保留。

01:1 字节。

10:半字(2 字节)

11:1 字(4 字节)。

位13:保留
位12~0:LENGTH——传送字节数。对描述器取入方式,它等于0 表示0 字节;对非描 述器取入方式,它不允许等于 0。最大的传送长度为 8K-1 字节。对内部器件,传送字节数 必须为宽度的整数倍。