再上一篇:5.3.5 脉冲宽度调制
上一篇:5.4 DMA 控制器
主页
下一篇:5.4.3 DMAC 寄存器
再下一篇:5.4.4 应用举例
文章列表

5.4.2 数据传送

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

内部外围器件通过外围总线连接至 DMAC,使用流过数据传送。DMAC 也能执行存贮 器至存贮器的流过数据传送。直接连至外部数据脚上的外部器件,如辅助扩展芯片,必须使 用流过数据传送。DMAC 可读出任何存贮器,但不能写入FLASH。
对流过传送方式,数据通过DMAC,然后锁存至目的缓冲器/存贮器。
一、内部外围器件 DMA 设置方法

1、为使用DMAC 来服务内部外围器件,应通过通道映象寄存器(DRCMRx)来为每一 个DMA 请求设置一个通道号。每个内部外围可映象至16 个通道之一。可按表5-12 来进行 设置。如内部外围为源器件,则必须置位DCMDx 的FLOWSRC 位,如它为目的器件,则应 置位 DCMDx 的 FLOWTRG 位。如果置位 DCMDx 的 IRQEN 位,则在 DCMDx 的 LENGTH 减为0 的最后一个字节传送完成时产生DMA 中断。

表 5-12 内部外围器件 DMA 和设置方法

器件

功能

FIFO 地址

带宽

(比 特)

DCMD

带宽

(二进 制)

Burst Size

(比特)

源 或

目 的 器件

DRCMR

I2S

接收

0x40400080

4

11

8.16.32

0x40000108

I2S

传送

0x40400080

4

11

8.16.32

目的

0x4000010c

BTUART

接收

0x40200000

1

01

8.16.32

0x40000110

BTUART

传送

0x40200000

1

01

8.16.32 or

trailing

目的

0x40000114

FFUART

接收

0x40100000

1

01

8.16.32

0x40000118

FFUART

传送

0x40100000

1

01

8.16.32 or

trailing

目的

0x4000011c

AC97

麦克风

0x40500060

4

11

8.16.32

0x40000120

AC97

modern

接收

0x40500140

4

11

8.16.32

0x40000124

AC97

modern

传送

0x40500140

4

11

8.16.32

目的

0x40000128

Audio 接

0x40500040

4

11

8.16.32

0x4000012c

Audio 传

0x40500040

4

11

8.16.32

目的

0x40000130

SSP

接收

0x41000010

2

10

8.16

0x40000136

SSP

传送

0x41000010

2

10

8.16

目的

0x40000138

FICP

接收

0x4080000c

1

01

8.16.32

0x40000144

FICP

传送

0x4080000c

1

01

8.16.32 or

trailing

目的

0x40000148

STUART

接收

0x40700000

1

01

8.16.32

0x4000014c

STUART

传送

0x40700000

1

01

8.16.32 or

trailing

目的

0x40000150

MMC

接收

0x41100040

1

01

32 or trailing

0x40000154

MMC

传送

0x41100044

1

01

32 or trailing

目的

0x40000158

USB

断点 1

传送

0x40600100

1

01

32

目的

0x4000164

USB

端点 2

接收

0x40600180

1

01

32

0x4000168

USB

断点 3

传送

0x40600200

1

01

32

目的

0x400016c

USB

断点 4

接收

0x40600400

1

01

32

0x4000170

USB

断点 6

传送

0x40600600

1

01

32

目的

0x4000178

USB

断点 7

接收

0x40600680

1

01

32

0x400017c

USB

断点 8

传送

0x40600700

1

01

32

目的

0x4000180

USB

断点 9

接收

0x40600900

1

01

32

0x4000184

USB

断点 11

传送

0x40600B00

1

01

32

目的

0x400018c

USB

断点 12

接收

0x40600B80

1

01

32

0x4000190

USB

断点 13

传送

0x40600C00

1

01

32

目的

0x4000194

USB

断点 14

接收

0x40600E00

1

01

32

0x4000198

二、外部器件 DMA 设置方法
为使用 DMAC 来服务外部器件和芯片,应通过通道映象寄存器(DRCMRx)来把它们 的DMA 请求信号DREQ1,0 映象至16 个DMA 通道之一。如外部器件为源器件,则必须置 位DCMDx 的FLOWSRC 位。如它为目的器件,则应置位DCMDx 的FLOWTRG 位。
如果置位 DCMDx 的 IRQEN 位,则在 DCMDx 的 LENGTH 减为 0 的最后一个字节传送 完成时,产生DMA 请求。
三、存贮器之间数据传送
对存贮器之间数据传送,DCMDx 的 FLOWSRC 和 FLOWTRG 位必须为 0。这样,如一 个通道设置为存贮器之间数据传送,则置位DCSRx 的RUN 位时将立即启动数据传送。