Edit online

寄存器描述

24 Apr 2024
Read time: 22 minute(s)

0x000 SDMC_BLKCNT

默认值:0x00000001 传输块数量 (Block Count)
位域 类型 默认值 描述
31:16 - - -
15:0 R/W 0x1 BLK_CNT

传输块数量 (Block Count)

对于开放式的传输模式,控制器会连续的传输数据,此时该位应该设置为 0。当该位设置为 0 时,需要软件配置发送停止命令,终止当前数据传输。

0x004 SDMC_BLKSIZ

默认值:0x00000200 传输块大小 (Block Size)
位域 类型 默认值 描述
31:16 - - -
15:0 R/W 0x200 BLK_SIZE

传输块大小 (Block Size)

配置单个传输块的字节数量,默认值为 512 个字节。

0x008 SDMC_CMDARG

默认值:0x00000000 命令参数 (Command Argument)
位域 类型 默认值 描述
31:0 R/W 0x0 CMD_ARG

发送给 Card 的命令参数 (Command Argument)

0x00C SDMC_CMD

默认值:0x20000000 命令配置 (Command Configure)
位域 类型 默认值 描述
31 R/W 0x0 START_CMD
开始发送命令 (Start Send Command)
  • 一旦命令被 CIF 获取,该位自动清零。
  • 当该位置 1,Host 不能再写任何命令到寄存器。如果此时试图写新的命令,硬件锁定错误中断被置 1。
  • 一旦命令发出并接收到响应,命令完成中断被置 1。
30 - - -
29 R/W 0x1 USE_HOLD_REG
使用保持寄存器 (Use Hold Register)
  • 0:命令和数据直接发送到卡,保持时间没有附加延时。
  • 1:命令和数据通过保持寄存器发送到卡,保持时间增加 0.8 ns 延时。
28 R/W 0x0 VOLT_SWITCH
SD 卡电压切换 (Voltage Switch)
  • 0:无电压切换
  • 1:电压切换使能,对于卡电压切换命令 (CMD11) 必须置位。
27 R/W 0x0 BOOT_MODE
启动引导模式选择 (Boot Mode Select)
  • 0:执行默认的引导操作
  • 1:执行替代的引导操作
26 R/W 0x0 BOOT_DIS
禁止启动引导操作 (Boot Mode Disable)
  • 不能与 BOOT_EN 位同时置 1。
  • 与 START_CMD 同时置 1 时,CIF 会终止引导操作。
25 R/W 0x0 BOOT_ACK_EXP
接收引导操作应答信号 (Boot Ack Expect)
  • 与 BOOT_EN 位同时置 1 时,CIF 接收来自卡的引导操作应答信号 0-1-0。
24 R/W 0x0 BOOT_EN
使能启动引导操作 (Boot Mode Enable)
  • BOOT_MODE = 0,即执行默认引导模式时,必须置 1。
  • 不能与 BOOT_DIS 位同时置 1。
  • 与 START_CMD 位同时置 1 时,CIF 开始发送引导序列,对应卡的命令线为低电平。
23:22 - - -
21 R/W 0x0 UPD_CLK_REG
仅更新时钟寄存器 (Update Clock Registers Only)
  • 0:正常命令序列
  • 1:不发送命令,仅更新时钟寄存器的值到相关的时钟域
20:16 - - -
15 R/W 0x0 SEND_INIT
发送初始化序列 (Send Initialization Sequence)
  • 0:发送命令之前不发送初始化序列
  • 1:发送命令之前发送初始化序列

上电后,发送第一个命令之前,必须发送 80 个时钟,等待 Card 内部初始化完成。在 Boot 模式下,该位不用置 1。

14 R/W 0x0 STOP_ABORT_CMD
发送停止或丢弃命令 (Send Stop or Abort Command)
  • 0:在数据传输时,不使用停止或丢弃命令终止当前传输。
  • 1:在数据传输时,使用停止或丢弃命令终止当前传输。

当工作在开放或者预定义数据传输模式时,Host 需要发送停止或丢弃命令来终止数据传输。该位应该置 1,确保 CIF 的命令、数据状态机正确的返回到空闲状态。

13 R/W 0x0 WAIT_PRVDATA_DONE
等待之前的数据传输完成 (Wait Previous Data Done)
  • 0:即使之前的数据传输未完成,也可以再次发送命令
  • 1:必须等待之前的数据传输完成,再发送命令

通常,在数据传输期间或者终止当前传输时,如果想要查询外部设备当前的状态,可以将该位清零。

12 R/W 0x0

AUTO_STOP

自动发送停止命令 (Auto Send Stop Command)
  • 0:数据传输结束时,控制器不自动发送停止命令
  • 1:数据传输结束时,控制器自动发送停止命令
11 R/W 0x0 TRANS_MODE
传输模式 (Transfer Mode)
  • 0:基于块的数据传输命令
  • 1:基于字节流的数据传输命令
10 R/W 0x0 TRANS_DIR
传输方向 (Transfer Direction)
  • 0:从卡读数据
  • 1:写数据到卡
9 R/W 0x0 DATA_EXP
有期望数据的传输 (Data Expected)
  • 0:无数据的命令传输 (read/write)
  • 1:有期望数据的命令传输 (read/write)
8 R/W 0x0 CHECK_RESP_CRC
检查响应信号的 CRC (Check Response CRC)
  • 0:不检查响应的 CRC

    对于不返回有效 CRC 数据的命令,应禁止 CRC 检查。

  • 1:检查响应的 CRC
7 R/W 0x0 RESP_LEN
响应信号长度 (Response Length)
  • 0:从卡获取短响应数据 (48-bit)
  • 1:从卡获取长响应数据 (136-bit)
6 R/W 0x0 RESP_EXP
获取响应信号 (Response Expect)
  • 0:不从卡获取响应信号
  • 1:从卡获取响应信号
5:0 R/W 0x0 CMD_INDEX

命令序号 (Command Index)

0x010 SDMC_RESP0

默认值:0x00000000 响应数据 0 (Response 0)
位域 类型 默认值 描述
31:0 R 0x0

RESP0

响应数据的 bit[31:0]

0x014 SDMC_RESP1

默认值:0x00000000 响应数据 1 (Response 1)
位域 类型 默认值 描述
31:0 R 0x0

RESP1

响应数据的 bit[63:32]

0x018 SDMC_RESP2

默认值:0x00000000 响应数据 2 (Response 2)
位域 类型 默认值 描述
31:0 R 0x0

RESP2

响应数据的 bit[95:64]

0x01C SDMC_RESP3

默认值:0x00000000 响应数据 3 (Response 3)
位域 类型 默认值 描述
31:0 R 0x0

RESP3

响应数据的 bit[127:96]

0x020 SDMC_TTMC

默认值:0xffffff40 传输超时时间控制 (Transfer Timeout Control)
位域 类型 默认值 描述
31:8 R/W 0xffffff DATA_TMO

读数据传输超时时间 (Data Timeout)

超时计数器仅在 Card 时钟停止后启动。

单位:输出时钟的时钟周期

注: 如果超时值接近 100 ms,需要使用软件配置 GTC 计时器用于超时检测。在这种情况下,应该屏蔽读数据超时中断(SDMC_INTEN 寄存器的 bit9 清 0)。
7:0 R/W 0x40 RESP_TMO

响应超时时间 (Response Timeout)

单位:输出时钟的时钟周期

0x024 SDMC_TCBC

默认值:0x00000000 发送到卡的字节数 (Transferred Card Byte Count)
位域 类型 默认值 描述
31:0 R 0x0 CBC

传输到卡的字节数 (Transferred Card Byte Count)

表示经过 CIF 模块已传输到 Card 的字节数。

0x028 SDMC_TFBC

默认值:0x00000000 发送到缓存的字节数 (Transferred FIFO Byte Count)
位域 类型 默认值 描述
31:0 R 0x0 FBC

传输到 FIFO 的字节数 (Transferred FIFO Byte Count)

表示 Host 或 DMA 在内存和 HIF FIFO 之间已传输的字节数

0x02C SDMC_CTRST

默认值:0x00000206 控制器状态 (Controller Status)
位域 类型 默认值 描述
31 R 0x0 DMA_REQ

DMA 请求信号状态 (DMA Request Status)

30 R 0x0 DMA_ACK

DMA 应答信号状态 (DMA Acknowledge Status)

29:17 R 0x0 FIFO_CNT

FIFO 数量 (FIFO Count)

当前 FIFO 中的字节数

16:11 R 0x0 RESP_INDEX

前一个响应的索引值 (Previous Response Index)

10 R 0x0 DATA_MC_BUSY

数据发送或接收状态机忙碌 (Data State Machine Busy)

9 R 0x1 or 0x0 DATA0_BUSY
根据 data[0] 的电平状态判断是否忙碌
  • 0:卡数据传输处于非忙碌状态
  • 1:卡数据传输处于忙碌状态
注: 默认值取决于 data[0] 的初始电平。

8 R 0x1 or 0x0 DATA3_STATUS
根据 data[3] 的电平状态检查是否有卡插入
  • 0:没有 SD 卡插入
  • 1:有 SD 卡插入
注: 卡检测仅支持 SDC1,默认值取决于 data[3] 的初始电平。
7:4 R 0x0 CMD_STAT
命令状态机状态 (Command FSM States)
  • 0:空闲
  • 1:发送初始化序列
  • 2:Tx 命令开始位
  • 3:Tx 命令 tx 位
  • 4:Tx 命令索引值 + 参数
  • 5:Tx 命令 CRC7 校验
  • 6:Tx 命令结束位
  • 7:Rx 响应起始位
  • 8:Rx 响应中断请求响应
  • 9:Rx 响应 tx 位
  • 10:Rx 响应命令索引值
  • 11:Rx 响应数据
  • 12:Rx 响应 CRC7 校验
  • 13:Rx 响应结束位
  • 14:命令通路等待 NCC
  • 15:等待状态
3 R 0x0 FIFO_FULL

FIFO 为满

2 R 0x1 FIFO_EMPTY

FIFO 为空

1 R 0x1 FIFO_TX_WMARK

FIFO 发送数据的水位 (FIFO TX Watermark)

FIFO 水位达到发送数据门限值,不允许数据传输

0 R 0x0 FIFO_RX_WMARK

FIFO 接收数据的水位 (FIFO RX Watermark)

FIFO 水位达到接收数据门限值,不允许数据传输

0x030 SDMC_HCTRL1

默认值:0x00000008 主机控制配置 1 (Host Control 1)
位域 类型 默认值 描述
31:26 - - -
25 R/W 0x0 USE_IDMAC
使用内部 DMA 控制器 (Use Inside DMA Controller)
  • 0:Host 通过 AHB 从机接口进行数据传输
  • 1:仅使用内部 DMA 传输数据
24 R/W 0x0 OD_PUP_EN
外部开漏上拉使能 (Enable Open Drain Pull-up)
  • 0:禁止
  • 1:使能。置 1,命令信号的输出为开漏模式,命令信号驱动为低电平或者高阻态,不能驱动为高电平。
23:11 - - -
10:9 - - -
8 R/W 0x0 ABORT_RDATA
丢弃读数据 (Abort Read Data) ,用于 SDIO 的暂停操作。
  • 0:不改变
  • 1:在读数据时,发送暂停命令之后,软件循环查询 SDIO 设备是否进入暂停状态。当暂停操作发生时,软件将该位置 1 用于复位数据状态机,等待下一笔数据传输。

    一旦数据状态机复位到空闲状态,该位会自动清零。

7 R/W 0x0 SEND_IRQ_RESP
发送中断请求响应 (Send IRQ Response)
  • 0:不改变
  • 1:自动发送中断请求并接收响应

一旦响应被发送该位自动清零。

为了等待 MMC 卡中断,Host 发送 CMD40 命令,控制器等待来自 MMC 卡的中断响应。

如果用户想要控制器退出中断状态等待,可以将该位置 1,此时控制器命令状态机自动发送 CMD40 ,等待总线获取到响应后返回到空闲状态。

6 R/W 0x0 READ_WAIT
读等待 (Read Wait)
  • 0:清除读等待
  • 1:使能读等待

用于 SDIO 卡设备读等待功能。

该位置 1,控制器将 Data[2] 引脚拉低暂时中止读数据,允许发送 CMD52 等其他 I/O 命令。

5 - - -
4 R/W 0x0 INT_EN
全局中断使能 (Global Interrupt Enable)
  • 0:禁止中断
  • 1:使能中断

仅当该位置 1,且对应的中断位置 1 时,对应的中断端口才为 1。

3 R/W 0x1 HW_RSTN
硬件 Reset 控制 (Hardware Reset Control)
  • 0:复位信号有效。Device 进入 pre-idle 状态,需要重新初始化 device。
  • 1:复位信号无效
2 R/W 0x0 DMA_RESET
DMA 复位
  • 0:DMA 状态不改变
  • 1:复位 IDMA 接口控制逻辑

经过两个 AHB 时钟周期后该位自动清零。

1 R/W 0x0 FIFO_RESET
FIFO 复位
  • 0:FIFO 状态不改变
  • 1:复位数据 FIFO 和 FIFO 指针,复位完成后自动清零。
注: 该位清零后,FIFO 指针在 2 个周期的系统时钟 + 2 个周期的 Card 时钟后被复位。
0 R/W 0x0 CTRL_RESET
控制器复位 (Controller Reset)
  • 0:控制器状态不改变
  • 1:控制器复位

经过两个 AHB 时钟周期后该位自动清零。

复位的模块包括但不限于:
  • HIF/ CIF 接口
  • CIF 和状态机
  • 控制寄存器的 ABORT_RDATA/ SEND_IRQ_RESP/ READ_WAIT 位域
  • 命令寄存器的 START_CMD 位域
该复位不影响其他寄存器、DMA 接口、FIFO 和 Host 中断。

0x034 SDMC_CLKCTRL

默认值:0x00000000 时钟控制配置 (Clock Control)
位域 类型 默认值 描述
31:17 - - -
16 R/W 0x0 CLK_LP_EN
时钟低功耗模式使能 (Clock Low Power Enable)
  • 0:无低功耗模式
  • 1:低功耗模式
    • 当 SD/ MMC 处于空闲状态时,关闭时钟。
    • 使用 MMC 或者 SD 卡时,置 1。
    • 对于 SDIO 卡,如果使用中断,时钟不能被停止。
15:8 R/W 0x0 CLK_DIV

输出时钟分频值 (Clock Divider Value)

时钟分频为 2*n (n 为设定值)。

7:1 - - -
0 R/W 0x0 CLK_EN
输出时钟使能 (Clock Enable)
  • 0:关闭时钟
  • 1:使能时钟

0x038 SDMC_HCTRL2

默认值:0x00000000 主机控制配置 2 (Host Control 2)
位域 类型 默认值 描述
31:30 - - -
29:28 R/W 0x0 BUS_WIDTH
总线位宽配置 (Bus Width Configuration)
  • 0:1 线模式
  • 1:4 线模式
  • 2:8 线模式
  • 3:保留
27:26 - - -
25 R/W 0x0 DTO_UNIT
数据超时时间单位 (Data Timeout Unit)
  • 0:1 x cclk_out
  • 1:256 x cclk_out
24 R/W 0x0 RTO_UNIT
响应超时时间单位 (Response Timeout Unit)
  • 0:1 x cclk_out
  • 1:256 x cclk_out
23:17 - - -
16 R/W 0x0 DDR_MODE
DDR 传输模式使能 (DDR Mode Enable)
  • 0:数据传输工作在 SDR 模式
  • 1:数据传输工作在 DDR 模式
15:0 - - -

0x03C SDMC_INTEN

默认值:0x000000000 中断使能 (Interrupt Enable)
位域 类型 默认值 描述
31:17 - - -
16 R/W 0x0 SDIO_INTEN

SDIO 中断使能 (SDIO Interrupt Enable)

当中断被屏蔽后,SDIO 中断检测无效。
  • 0:屏蔽中断
  • 1:使能中断
15:0 R/W 0x0 INT_EN

中断使能

对于每个位域的值定义如下:
  • 0:屏蔽中断
  • 1:使能中断
每个位的中断定义如下:
  • bit 15-EBE(读操作结束位错误或者写操作无 CRC)
  • bit 14-ACD(自动发送命令完成)
  • bit 13-SBE(起始位错误) BCI(忙清除中断)
  • bit 12-HLE(硬件锁定写操作错误)
  • bit 11-FRUN(FIFO 向下溢出/向上溢出)
  • bit 10-HTO(Host 获取数据超时)或者电压切换中断
  • bit 9-DRTO(读数据超时)
  • bit 8-RTO(响应超时)
  • bit 7-DCRC(数据 CRC 错误)
  • bit 6-RCRC(响应 CRC 错误)
  • bit 5-RXDR(接收 FIFO 数据请求)
  • bit 4-TXDR(发送 FIFO 数据请求)
  • bit 3-DTO(数据传输完成)
  • bit 2-CD(命令发送完成)
  • bit 1-RE(响应错误)
  • bit 0-CD(卡检测中断)

0x040 SDMC_INTST

默认值:0x00000000 已使能中断状态 (Enabled Interrupt Status)
位域 类型 默认值 描述
31:17 - - -
16 R 0x0 SDIO_INT_STAT
SDIO 中断状态 (SDIO Interrupt Status)
  • 0:无来自 SDIO 的中断信号
  • 1:有来自 SDIO 的中断信号
15:0 R 0x0 INT_STAT

中断状态 (Interrupt Status)

每个位的中断状态定义如下:
  • bit 15-EBE(读操作结束位错误或者写操作无 CRC)
  • bit 14-ACD(自动发送命令完成)
  • bit 13-SBE(起始位错误) BCI(忙清除中断)
  • bit 12-HLE(硬件锁定写操作错误)
  • bit 11-FRUN(FIFO 向下溢出/向上溢出)
  • bit 10-HTO(Host 获取数据超时) 或者电压切换中断
  • bit 9-DRTO(读数据超时)
  • bit 8-RTO(响应超时)
  • bit 7-DCRC(数据 CRC 错误)
  • bit 6-RCRC(响应 CRC 错误)
  • bit 5-RXDR(接收 FIFO 数据请求)
  • bit 4-TXDR(发送 FIFO 数据请求)
  • bit 3-DTO(数据传输完成)
  • bit 2-CD(命令发送完成)
  • bit 1-RE(响应错误)
  • bit 0-CD(卡检测中断)

0x044 SDMC_OINTST

默认值:0x00000000 初始中断状态 (Original Interrupt Status)
位域 类型 默认值 描述
31:17 - - -
16 R/W1C 0x0 SDIO_INT_STAT

初始 SDIO 中断状态 (Original SDIO Interrupt Status)

  • 0:无来自 SDIO 的中断信号
  • 1:有来自 SDIO 的中断信号
15:0 R/W1C 0x0 INT_STAT

初始中断状态 (Original Interrupt Status)

每个位的中断状态定义如下:
  • bit 15-EBE(读操作结束位错误或者写操作无 CRC)
  • bit 14-ACD(自动发送命令完成)
  • bit 13-SBE(起始位错误) BCI(忙清除中断)
  • bit 12-HLE(硬件锁定写操作错误)
  • bit 11-FRUN(FIFO 向下溢出/向上溢出)
  • bit 10-HTO(Host 获取数据超时) 或者电压切换中断
  • bit 9-DRTO(读数据超时)
  • bit 8-RTO(响应超时)
  • bit 7-DCRC(数据 CRC 错误)
  • bit 6-RCRC(响应 CRC 错误)
  • bit 5-RXDR(接收 FIFO 数据请求)
  • bit 4-TXDR(发送 FIFO 数据请求)
  • bit 3-DTO(数据传输完成)
  • bit 2-CD(命令发送完成)
  • bit 1-RE(响应错误)
  • bit 0-CDET(卡检测中断)

0x048 SDMC_FIFOCFG

默认值:0x007F0000 FIFO 配置 (FIFO Configuration)
位域 类型 默认值 描述
31 - - -
30:28 R/W 0x0 DMA_BL
DMA 突发传输长度 (DMA Burst Length)
  • 0:1
  • 1:4
  • 2:8
  • 3:16
  • 4:32
  • 5:64
  • 6:128
  • 7:256

突发传输单位为:word = 32 bits。

突发传输长度应设置为 (RX_WMARK + 1) 和 (FIFO_DEPTH - TX_WMARK) 的公约数。

以 FIFIO_DEPTH = 16 为例:
  • 允许的 DMA_BL 和 TX_WMARK 的组合如下:
    • DMA_BL = 1,TX_WMARK = 1 - 15
    • DMA_BL = 4,TX_WMARK = 8
    • DMA_BL = 4,TX_WMARK= 4
    • DMA_BL = 4,TX_WMARK = 12
    • DMA_BL = 8,TX_WMARK = 8
    • DMA_BL = 8,TX_WMARK = 4
  • 允许的 DMA_BL 和 RX_WMARK 的组合如下:
    • DMA_BL = 1,RX_WMARK = 0 - 14
    • DMA_BL = 4,RX_WMARK = 3
    • DMA_BL = 4,RX_WMARK = 7
    • DMA_BL = 4,RX_WMARK = 11
    • DMA_BL = 8,RX_WMARK = 7

推荐值:DMA_BL = 8,TX_WMARK = 8,RX_WMARK = 7

26:16 R/W 0x7F RX_WMARK

FIFO 接收门限值 (FIFO RX Watermark )

当 FIFO 的接收的数据大于 FIFO 接收门限值,DMA/FIFO 请求信号拉高。如果中断信号使能,会产生一个中断。
  • 在非 DMA 模式下,当 RXDR 中断使能时,会产生一个中断信号替代 DMA 请求。数据包传输结束后,如果门限值大于剩余的字节数大小,则不会产生中断。当产生数据传输完成中断时, Host 应该读完剩余的字节。
  • 在 DMA 模式下,在接收到最后一个数据包时,即使剩下的数据小于门限值,DMA 也会发送一个请求读出 FIFO 里面剩下的数据,然后产生一个数据传输完成的中断。

限制条件:RX_WMARK ≤ FIFO_DEPTH - 2

推荐值:(FIFO_DEPTH)/2 - 1

15:12 - - -
11:0 R/W 0x0 TX_WMARK

FIFO 发送门限值 (FIFO TX Watermark)

当 FIFO 内数据量小于或等于 FIFO 发送门限值,DMA/FIFO 请求信号拉高。如果中断信号使能,会产生一个中断。

  • 在非 DMA 模式下,当 TXDR 中断使能时,会产生一个中断信号替代 DMA 请求信号。发送完最后一个数据包时,Host 应该用剩下的数据填充 FIFO。
  • 在 DMA 模式下,最后一个数据包完成后,如果最后一笔传输小于突发数据长度,DMA 控制器会再执行一次传输直到所有数据传输完成。

限制条件:TX_WMARK ≥ 1

推荐值:(FIFO_DEPTH)/2

0x054 SDMC_CDET

默认值:0x01FFFFFF 卡检测配置 (Card Detect Configuration)
位域 类型 默认值 描述
31:25 - - -
24 R 0x1 CDET_STAT
表示卡检测信号的电平状态,默认为 1。
  • 0:表示有卡插入,电平状态值为 0
  • 1:表示卡拔出,电平状态值为 1
23:0 R/W 0xFFFFFF DEBC_CNT

去除抖动维持的时钟周期数 (Debounce Count)

由于卡插拔是机械动作,会产生电平抖动,导致采样的电平值可能不稳定。去抖逻辑根据去抖维持的时钟周期数来设置计数器的初值。当计数器值变为 0 时,卡检测信号稳定,此时可以采样到正确的电平值。

典型的去抖时间为 5 - 25 ms。

0x080 SDMC_PBUSCFG

默认值:0x00000000 外设总线配置 (Peripheral Bus Configuration)
位域 类型 默认值 描述
31:11 - - -
10:8 R 0x0 PBL

已编程的突发传输长度 (Programed Burst Length)

表示 IDMAC 执行一次突发传输的最大长度。已编程的突发传输长度值为 FIFOCFG 寄存器中 DMA_BL 位域的镜像值,如需更改,需要写 FIFOCFG 寄存器。
  • 0:1
  • 1:4
  • 2:8
  • 3:16
  • 4:32
  • 5:64
  • 6:128
  • 7:256

突发传输的单位:word = 32 bits。

7 R/W 0x0 DE

内部 DMA 使能 (Inside DMA Enable)

  • 0:内部 DMA 禁用
  • 1:内部 DMA 使能
6:2 R/W 0x0 DSL

描述符跳过长度 (Description Skip Length)

定义了两个非链式描述之间跳过的数据长度,单位是 32 位。仅用于双缓冲结构的描述应用中。

1 R/W 0x0 FB

固定突发长度 (Fixed Burst Length)

控制 AHB 主机接口是否执行固定长度的突发传输。
  • 0:AHB 使用 SINGLE 和 INCR 方式执行突发传输。
  • 1:AHB 固定使用 SINGLE、INCR4、INCR8 或 INC16 其中一种方式执行突发传输。
0 R/WAC 0x0 SWR

软件复位 (Software Reset)

置 1,DMA 控制器复位内部寄存器,经过一个时钟周期后自动清零。

0x084 SDMC_IDMARCAP

默认值:0x00000000 恢复获取描述符 (Inside DMA Resume Capture Descriptor)
位域 类型 默认值 描述
31:0 W 0x0 RCAP

恢复获取描述符 (Resume Capture Descriptor)

该寄存器为只写。

如果描述的 OWN 位没有置 1,IDMAC 的状态机会进入暂停状态。Host 可以对 RCAP 写任意值,使 IDMAC 的状态机恢复到正常的描述符获取操作。

0x088 SDMC_IDMASADDR

默认值:0x00000000 描述符起始地址 (Descriptor List Start Address)
位域 类型 默认值 描述
31:0 R/W 0x0 DLSA

描述符链表的起始地址 (Descriptor List Start Address)

IDMAC 会忽略低有效位 bit[1:0](只读,对应 32 位总线位宽) 的数据,并将其作为全零处理。

0x08C SDMC_IDMAST

默认值:0x00000000 内部 DMA 状态 (Inside DMAC Status)
位域 类型 默认值 描述
31:17 - - -
16:13 R 0x0 IDMA_FSM
DMA 控制器状态机当前的状态 (IDMA FSM Status)
  • 0:DMA_IDLE
  • 1:DMA_SUSPEND
  • 2:DMAC_RD
  • 3:DMAC_CHK
  • 4:DMA_RD_REQ_WAIT
  • 5:DMA_WR_REQ_WATI
  • 6:DMA_RD
  • 7:DMA_WR
  • 8:DESC_CLOSE
12:10 R 0x0 FBE_CODE

致命的总线错误 (Fatal Bus Error Code)

表示造成总线出错的错误类型,仅在 IDMAST[2] 置 1 时有效。该位域不产生中断。
  • 1:在发送数据时 Host 中止
  • 2:在接收数据时 Host 中止
9 R/W1C 0x0 ABNORM_INT

异常中断 (Abnormal Interrupt)

以下任意一个中断产生时,触发异常中断:
  • IDMAST[2]:致命的总线中断
  • IDMAST[4]:描述符不可用中断

只有未屏蔽的位域才影响异常中断位的值。该位写 1 清零。

8 R/W1C 0x0 NORM_INT

正常中断 (Normal Interrupt)

以下任意一个中断产生时,触发正常中断:
  • IDMAST[0]:发送中断
  • IDMAST[1]:接收中断

只有未屏蔽的位域才影响正常中断位的值。该位写 1 清零。

7:6 - - -
5 R/W1C 0x0 CARD_ERR_INT

卡错误中断 (Card Error Interrupt)

表示卡操作的状态信息,也存在于 OINTSTS 寄存器,以下任意中断产生,触发卡错误中断:
  • EBE-结束位错误
  • RTO-响应超时/ Boot 应答超时
  • RCRC-响应 CRC
  • SBE-起始位错误
  • DRTO-读数据超时
  • DCRC-接收的数据 CRC 错误
  • RE-响应错误

该位写 1 清零。

4 R/W1C 0x0 DES_UNU_INT

描述符不可用中断 (Descriptor Unused Interrupt)

该位置 1 表示当前描述符不可用(因为 OWN 位为 0) 。

该位写 1 清零。

3 - - -
2 R/W1C 0x0 FBE_INT

致命的总线错误中断 (Fatal Bus Error Interrupt)

表示有一个总线错误发生,当该位置 1,DMA 禁止所有的总线访问。

该位写 1 清零。

1 R/W1C 0x0 RX_DONE_INT

接收完成中断 (RX Done Interrupt)

表示一个描述符的数据接收完成。

该位写 1 清零。

0 R/W1C 0x0 TX_DONE_INT

发送完成中断 (TX Done Interrupt)

表示一个描述符的数据发送完成。

该位写 1 清零。

0x090 SDMC_IDMAINTEN

默认值:0x00000000 内部 DMA 中断使能 (Inside DMAC Interrupt Enable)
位域 类型 默认值 描述
31:10 - - -
9 R/W 0x0 ABNORM_INTEN

异常中断使能 (Abnormal Interrupt Enable)

置 1 时,使能异常中断,包括以下中断:
  • IDMAINTEN[2]-致命的总线中断
  • IDMAINTEN[4]-描述符不可用中断
8 R/W 0x0 NORM_INTEN

正常中断使能 (Normal Interrupt Enable)

置 1 时,使能正常中断,包括以下中断:

  • IDMAINTEN[0]-发送完成中断
  • IDMAINTEN[1]-接收完成中断
7:6 - - -
5 R/W 0x0 CARD_ERR_INTEN

卡错误中断使能 (Card Error Interrupt Enable)

置 1 时,使能卡错误中断。

4 R/W 0x0 DES_UNU_INTEN

描述符不可用中断 (Descriptor Unused Interrupt Enable)

当 ABNORM_INTEN 位域使能时,该位也一起使能。

3 - - -
2 R/W 0x0 FBE_INTEN

致命的总线错误中断使能 (Fatal Bus Error Interrupt Enable)

1 R/W 0x0 RX_DONE_INTEN

接收完成中断使能 (RX Done Interrupt Enable)

0 R/W 0x0 TX_DONE_INTEN

发送完成中断使能 (TX Done Interrupt Enable)

0x094 SDMC_IDMACDA

默认值:0x00000000 当前描述符地址指针 (Current Descriptor Address)
位域 类型 默认值 描述
31:0 R 0x0 CDA

当前描述符地址指针 (Current Descriptor Address)

该寄存器指向当前描述符的起始地址,复位时清零。IDMAC 操作时指针会自动刷新。

0x098 SDMC_IDMACBA

默认值:0x00000000 当前缓存地址指针 (Current Buffer Address)
位域 类型 默认值 描述
31:0 R 0x0 CBA

当前缓存地址指针 (Current Buffer Address)

该寄存器指向当前数据缓存的地址,复位时清零。IDMAC 操作时指针会自动刷新。

0x100 SDMC_CTC

默认值:0x00000000 卡门限值配置 (Card Threshold Control)
位域 类型 默认值 描述
31:26 - - -
25:16 R/W 0x0 CTH_SIZE
卡传输门限值大小 (Card Threshold Size)
注: 仅当 CDWTH_EN 置 1 或 CDRTH_EN 置 1 时,该寄存器有效。
15:3 - - -
2 R/W 0x0 CDWTH_EN
卡写操作门限值使能 (Card Write Threshold Enable)
  • 0:卡写操作门限禁止
  • 1:卡写操作门限值使能

仅当发送 FIFO 达到门限值的数据量时,SDMC 控制器初始化写传输。

1 R/W 0x0 BC_INTEN

忙状态清除中断使能 (Busy Clear Interrupt Enable)

  • 0:忙状态清除中断禁止
  • 1:忙状态清除中断使能
0 R/W 0x0 CDRTH_EN
卡读操作门限值使能 (Card Read Threshold Enable)
  • 0:卡读操作门限值禁止
  • 1:卡读操作门限值使能

仅当接收 FIFO 达到门限值的数据量时读数据。

0x104 SDMC_DLYCTRL

默认值:0x00000000 延时链和相位控制 (Delay Chain and Phase Control)
位域 类型 默认值 描述
31:30 R/W 0x0 EXT_CLK_MUX
外部输入时钟选择 (External Clock Multiplex)
  • 0:输入时钟 4 分频,典型值为 50 MHz(DS,HS-SDR,HS-DDR 模式)
  • 1:输入时钟 2 分频,典型值为 100 MHz(HS,HS-SDR,HS-DDR 模式)
  • 2:输入时钟 1 分频,典型值为 200 MHz(HS-DDR 模式)
29:28 R/W 0x0 CLK_DRV_PHASE

驱动时钟相位控制 (Driver Clock Phase)

配置输出驱动时钟 cclk_in_drv 使用的相位值
  • 0:0°
  • 1:90°
  • 2:180°
  • 3:270°
27:23 R/W 0x0 CLK_DRV_DELAY

驱动时钟延迟控制 (Driver Clock Delay)

配置输出驱动时钟 cclk_in_drv 使用的延时值

22:21 R/W 0x0 CLK_SMPL_PHASE

采样时钟相位控制 (Sample Clock Phase)

配置采样时钟 cclk_in_sample 使用的相位值
  • 0:0°
  • 1:90°
  • 2:180°
  • 3:270°
20:16 R/W 0x0 CLK_SMPL_DELAY

采样时钟延迟控制 (Sample Clock Delay)

配置采样时钟 cclk_in_sample 使用的延时值。

15:14 - - -
13:9 - - -
8 R/W 0x0 SAMP_SWAP

采样边沿交换 (DDR Sample Edge Swap)

默认先采样奇数边沿数据。

7 - - -
6 R/W 0x0 SAMP_SEQ_EN

DDR 模式采样顺序交换使能 (DDR Sample Edge Swap Enable)

5:4 R/W 0x0 EVEN_SHIFT
奇数据时钟移相选择 (Even Data Clock Phase)
  • 0:选择默认相位
  • 1:相位移动 90°
  • 2:相位移动 180°
  • 3:相位移动 270°
3:2 - - -
1:0 R/W 0x1 SHIFT_EN
时钟相移使能 (Clock Phase Shift Enable)
  • 0:选择默认相位
  • 1:相位移动 90°
  • 2:相位移动 180°
  • 3:相位移动 270°

0x108 SDMC_EMCR

默认值:0x00000000 EMMC 配置 (EMMC Configuration)
位域 类型 默认值 描述
31:17 - - -
16 - - -
15:1 - - -
0 R/W 0x0 HALF_START_BIT

起始位保持

对于 eMMC 4.5 版本,起始位可以保持:

  • 0:完整的时钟周期
  • 1:小于一个完整的时钟周期,对于 eMMC 4.5 及以上版本,该位置 1。对于 SD 卡应用,该位清零。
注: DDR 模式时该位域会被忽略。

0x118 SDMC_VERID

默认值:0x00000100 控制器版本号 (Version ID)
位域 类型 默认值 描述
31:0 R 0x00000100 VERID

控制器版本号 (Version ID)

采用 BCD 码显示,V1.0

0x200 SDMC_FIFO

默认值:0x00000000 数据 FIFO 缓存寄存器 (Data FIFO)
位域 类型 默认值 描述
31:0 R/W 0x0000_0000 DATA_FIFO
读写数据缓存 FIFO 寄存器,该寄存器映射到 FIFO 的入口地址。
  • 对于写操作,CPU 或 IDMA 通过 AHB 总线写数据到该地址。
  • 对于读操作,CPU 或 IDMA 通过 AHB 总线从该地址读数据。
注: 读写数据共享相同的 FIFO,不支持同时对该地址进行读或写访问。