USER GUIDE / MEMORY / EMMC SD / REGISTER DESCRIPTION

寄存器描述

SDMA 系统地址寄存器

SDMASA_RBASE + 0x00
Bit313029282726252423222120191817161514131211109876543210
字段BLOCKC
RST00000000000000000000000000000000
位名称说明RW
31:0BLOCKC32 位块计数(SDMA 系统地址)
NT_SDMA SDMA 系统地址(HostVersion 4Enable= 0)--该寄存器包含 32 位寻址模式
SA 下用于 SDMA 传输的系统内存地址。当主机控制器停止 SDMA 传输时,该寄
存器将指向下一个连续数据位置的系统地址。只有在没有事务执行的情况下才能
访问该寄存器。在数据传输期间读取该寄存器可能会返回无效值。
32 位块计数(HostVersion4Enable =1)- 从主机控制器版本 4.10 开始,该
寄存器被重新定义为 32 位块计数。每次块传输时,主机控制器都会递减该寄存
器的块计数,当计数为零时,数据传输停止。应在无事务执行时访问该寄存器。
在数据传输期间读取该寄存器可能会返回无效值。
FFFF_FFFFh- 4G- 1 块
...-...
0000_0002h -2 块
0000_0001h -1 块
0000_0000h - 停止计数
1. 对于 HostVersion4Enable =0,在 ADMA 模式下运行时,主机驱动程序
不得在此寄存器中编程系统地址。应在 ADMA 系统地址寄存器中对系统地
址进行编程。
2. 对于 HostVersion4Enable =1,在非 DMA 和 ADMA 模式下使能自动
CMD23 时,主机驱动程序应在此寄存器中编程非零 32 位块计数。自动
CMD23不能在SDMA模式下使用。
3. 如果使用32位BlockCount寄存器而不是16位BlockCount寄存器,该寄
存器应该被编程为非零值。
RW

数据块大小寄存器

BLOCKSIZE_RBASE + 0x04
Bit1514131211109876543210
字段ReservedSDMA_BUF_BDARYXFER_BLOCK_SIZE
RST0000000000000000
位名称说明RW
15Reserved写入无影响,读取为零。
R
14:12SDMA_BUF_BDARYSDMA 缓冲区边界
这些位指定了系统内存中连续缓冲区的大小。SDMA 传输应在这些
字段指定的每个边界等待,主机控制器会产生 DMA 中断,要求主
机驱动程序更新 SDMA 系统地址寄存器。
000b- 4K 字节
001b- 8K 字节
010b- 16K 字节
011b- 32K 字节
100b- 64K 字节
101b- 128K 字节
110b- 256K 字节
111b- 512K 字节
值:
0x0(BYTES_4K): 4K 字节 SDMA 缓冲区边界
0x1(BYTES_8K): 8K 字节 SDMA 缓冲区边界
0x2(BYTES_16K): 16K 字节 SDMA 缓冲区边界
0x3(BYTES_32K): 32K 字节 SDMA 缓冲区边界
0x4(BYTES_64K): 64K 字节 SDMA 缓冲区边界
0x5(BYTES_128K): 128K 字节 SDMA 缓冲区边界
0x6(BYTES_256K): 256K 字节 SDMA 缓冲区边界
0x7(BYTES_512K): 512K 字节 SDMA 缓冲区边界
RW
11:0XFER_BLOCK_SIZE传输块大小
该寄存器指定数据传输的块大小。如果是内存卡,应将其设置为 512
字节。只有在没有事务执行的情况下才能访问该寄存器。传输过程
中的读操作可能会返回无效值,写操作将被忽略。
0x0- 无数据传输
0x1-1 个字节
0x2-2 个字节
0x3-3 个字节
...-...
0x1FF-511 字节
0x200-512 字节
...-...
0x800-2048 字节
对于数据传输,该寄存器必须被配置为非零值。
RW

数据块计数寄存器

BLOCKCOUNT_RBASE + 0x06
Bit1514131211109876543210
字段BLOCK_CNT
RST0000000000000000
位名称说明RW
15:0BLOCK_CNT16 位块计数
如果HostVersion4Enable设置为 0 或 16 位BlockCountregister设置为
非零,则选择 16 位BlockCountregister。
如果HostVersion4Enable设置为 1,且 16 位BlockCountregister设置
为 0,则选择 32 位BlockCountregister。
0x0- 停止计数
0x1- 1 块
0x2- 2 块
...- ...
0xFFFF -65535 块
对于 HostVersion4Enable =0,在非 DMA 和 ADMA 模式下使能自动
CMD23 时,应在对 32 位BlockCountregister编程前将该寄存器设置为
0000h。
RW

参数寄存器

ARGUMENT_RBASE + 0x08
Bit313029282726252423222120191817161514131211109876543210
字段ARGUMENT
RST00000000000000000000000000000000
位名称说明RW
31:0ARGUMENT命令参数,SD/eMMC 命令参数指定为命令格式的第 39-8 位。
RW

传输模式寄存器

XFER_MODE_RBASE + 0x0C
Bit1514131211109876543210
字段ReservedRESP_INT_DISRESP_ERR_CHK_RESP_TYPEMULTI_BLK_SELDATA_XFER_DIRAUTO_CMD_ENBLK_CNT_ENDMA_EN
RST0000000000000000
位名称说明RW
15:9Reserved写入无影响,读取为零。
R
8RESP_INT_DIS响应中断禁用
主机控制器支持响应检查功能,以避免主机驱动器检查响应错误的开
销。控制器只能检查 R1 和 R5。如果主机驱动程序检查响应错误,
则将该位设置为 0,等待Command Complete Interrupt,然后检查
响应寄存器。如果主机控制器检查响应错误,则将该位设置为 1,并
将ResponseErrorCheckEnable设置为 1。无论命令完成信号使能
与否,CommandComplete Interrupt都会被该位禁用。
0-使能响应中断
1- 响应中断禁用
在执行tuning时(当HostControl2 寄存器中的ExecuteTuning位
被设置时),无论ResponseInterruptDisable设置如何,都不会产
生命令完成中断。
RW
7RESP_ERR_CHK_使能响应错误检查,主机控制器支持响应检查功能,以避免主机驱动
EN 程序进行响应错误检查的开销。控制器只能检查 R1 和 R5。如果主
机控制器检查响应错误,则将该位设置为 1,并将响应中断禁用设置
为 1。 如果检测到错误,则在错误中断状态寄存器中产生响应错误
中断。
1- 使能响应错误检查
0- 响应错误检查禁用
1. 除 R1 和 R5 外,不应为任何其他响应类型使能响应错误检查。
2. 不应为tuning命令使能响应检查。
RW
6RESP_TYPE响应类型 R1/R5,使能响应错误检查时,该位选择 R1 或 R5 响应
类型。
在 R1 中检查错误状态:
OUT_OF_RANGE
ADDRESS_ERROR
BLOCK_LEN_ERROR
WP_VIOLATION
CARD_IS_LOCKED
COM_CRC_ERROR
CARD_ECC_FAILED
CC_ERROR
ERROR
在 R5 中检查响应标志:
COM_CRC_ERROR
ERROR
FUNCTION_NUMBER
OUT_OF_RANGE
1-R5 (SDIO)
0-R1 (Memory)
值:
0x0(RESP_R1):R1(Memory)
0x1(RESP_R5):R5(SDIO)
RW
5MULTI_BLK_SEL多块/单块选择,使用 DAT 线路发出多块传输命令时设置该位。如果
该位设置为 0,则无需设置BlockCountregister。
1- 多区块
0- 单块
RW
4DATA_XFER_DIR数据传输方向选择,该位定义 DAT 线路数据传输的方向。当数据从
SD/eMMC 卡传输到主机控制器时,主机驱动程序将该位设置为 1,
而对于所有其他命令,该位设置为 0。
1- 卡至主机
0- 主机至卡
RW
3:2AUTO_CMD_EN使能自动命令,此字段决定自动命令功能的使用。
00b- 禁用自动命令
01b- 使能自动 CMD12
10b- 使能自动 CMD23
11b- 自动 CMD 自动选择
在 SDIO 中,该字段应设置为 00b(禁用自动命令)。
RW
1BLK_CNT_EN块计数使能,该位用于使能BlockCountregister,这与多块传输有关。
当该位为 0 时,BlockCountregister被禁用,这在执行无限传输时
非常有用。
1-使能
0- 禁用
RW
0DMA_ENDMA 使能,该位用于使能 DMA 功能。如果该位设置为 1,则当主
机驱动程序向命令寄存器写入数据时,DMA 操作开始。您可以通过
HostControl1 寄存器中的 DMA 选择来选择其中一种 DMA 模式。
1-DMA 数据传输
0- 无数据传输或非 DMA 数据传输
RW

命令寄存器

CMD_RBASE + 0x0E
Bit1514131211109876543210
字段ReservedCMD_INDEXCMD_TYPEDATA_PRES_SELCMD_IDX_CHK_ENCMD_CRC_CHK_ENSUB_CMD_FLAGRESP_TYPE_SEL
RST0000000000000000
位名称说明RW
15:14Reserved写入无影响,读取为零。
R
13:8CMD_INDEX命令索引,这些位应设置为命令格式第 45-40 位指定的命令编
号。
RW
7:6CMD_TYPE命令类型,这些位表示命令类型。
当使用CMD12/CMD52发送AbortCMD或使用CMD0/CMD52
发送ResetCMD,应将CMD_CYPE设置为0x3。CMD0用于
初始化时,应设置为0x0。
00b- 正常命令
01b- 挂起命令
10b- 恢复命令
11b- 终止命令
RW
5DATA_PRES_SEL数据存在选择,该位设置为 1 表示数据存在,应使用 DAT 线
传输数据。
0- 无数据
1- 数据存在
在下列情况下,该位设置为 0:
仅使用 CMD 线的命令
没有数据传输但使用 DAT[0] 线busy信号的命令
恢复命令
RW
4CMD_IDX_CHK_EN命令索引检查使能,如果设置了该位,主机控制器将检查响应
中的索引字段,以确认其值是否与命令索引相同。如果不是,
则报告为命令索引错误。
0-禁用
1-使能
对于无响应、R2 响应、R3 响应和 R4 响应的命令,应将索
引检查使能设置为 0。
对于tuning command,应始终设置该位以使能索引检查。
RW
3CMD_CRC_CHK_ENCommandCRCCheckEnable(使能命令 CRC 校验),如果
设置了该位,主机控制器将检查响应中的 CRC 字段。如果检
测到错误,则报告为命令 CRC 错误。
0- 禁用
1- 使能
- 对于无响应、R3 响应和 R4 响应的命令,CRC 校验使能应
设置为 0。
- 对于tuningcommand,该位应始终设置为 1 以使能 CRC
校验。
RW
2SUB_CMD_FLAG子命令标志,该位用于区分主命令或子命令。
0- 主命令
1- 子命令
RW
1:0RESP_TYPE_SEL响应类型选择,该位指示预期从卡得到的响应类型。
00b- 无响应
01b- 响应长度 136
10b- 响应长度 48
11b- 响应长度 48 检查(响应后busy)
RW

响应寄存器 0/1

RESP01_RBASE + 0x10
Bit313029282726252423222120191817161514131211109876543210
字段RESP01
RST00000000000000000000000000000000
位名称说明RW
31:0RESP01命令响应,这些位反映响应字段的第 39-8 位。
对于自动 CMD,32 位响应(响应字段的第 39-8 位)在 RESP67_R 寄存
器中更新。
R

响应寄存器 2/3

RESP23_RBASE + 0x14
Bit313029282726252423222120191817161514131211109876543210
字段RESP23
RST00000000000000000000000000000000
位名称说明RW
31:0RESP23命令响应,这些位反映了响应字段的第 71-40 位。
R

响应寄存器 4/5

RESP45_RBASE + 0x18
Bit313029282726252423222120191817161514131211109876543210
字段RESP45
RST00000000000000000000000000000000
位名称说明RW
31:0RESP45命令响应,这些位反映了响应字段的 103-72 位。
R

响应寄存器 6/7

RESP67_RBASE + 0x1C
Bit313029282726252423222120191817161514131211109876543210
字段RESP67
RST00000000000000000000000000000000
位名称说明RW
31:0RESP67命令响应,这些位反映响应字段的 135-104 位。
对于自动 CMD,该寄存器还反映 32 位响应(响应字段的第 39-8 位)。
R

缓冲区数据端口寄存器

BUF_DATA_RBASE + 0x20
Bit313029282726252423222120191817161514131211109876543210
字段BUF_DATA
RST00000000000000000000000000000000
位名称说明RW
31:0BUF_DATA缓冲区数据,可通过此 32 位缓冲区数据端口寄存器访问主机控制器数
据包缓冲区。
RW

当前状态寄存器

PSTATE_REGBASE + 0x24
Bit313029282726252423222120191817161514131211109876543210
字段ReservedSUB_CMD_STATCMD_ISSU_ERRReservedHOST_REG_VOLCMD_LINE_LDAT_3_0ReservedBUF_RD_ENBUF_WR_ENRD_XFER_ACTWR_XFER_ACTDAT_7_4RE_TUNE_REQDAT_LINE_ACTCMD_INH_DATCMD_INH
RST00000000000000000000000000000000
位名称说明RW
31:29Reserved写入无影响,读取为零。
R
28SUB_CMD_STAT子命令状态,该状态用于区分主命令和子命令状态。
0:主命令状态
1:子命令状态
R
27CMD_ISSU_ERR错误未发出命令,如果在设置命令寄存器后因错误(自动 CMD12
错误除外)而无法发出命令,则设置该位。
0:无错误可发出命令
1:无法发出命令
R
26Reserved写入无影响,读取为零。
R
25HOST_REG_VOL主机稳压器电压稳定,该状态用于检查主机稳压器电压是否稳定,
以便切换 UHS-I 模式的电压。
该位反映 host_reg_vol_stablepin 的同步值。
0:主机稳压器电压不稳定
1:主机稳压器电压稳定
R
24CMD_LINE_L命令行信号电平(仅限 SD/eMMC 模式)
该状态用于检查 CMD 线路电平,以便从错误中恢复和进行调试。
这些位反映了 sd_cmd_in 引脚的值。它与 UHS-II 模式无关,始
终返回 0。
R
23:20DAT_3_0DAT[3:0] 线路信号电平(仅限 SD/eMMC 模式)
该状态用于检查 DAT 线路电平,以便从错误中恢复并进行调试。
这些位反映了 sd_dat_in(下位)引脚的值。
R
19:12Reserved写入无影响,读取为零。
R
11BUF_RD_EN缓冲区读取使能
该状态用于非 DMA 传输。如果主机缓冲区中存在有效数据,则设
置该位。
0:禁用读取
1:读取使能
R
10BUF_WR_EN缓冲区写入使能,该状态用于非 DMA 传输。如果有写入数据的空
间,则设置该位。
0:禁用写入
1:使能写入功能
R
9RD_XFER_ACT读取传输有效(仅限 SD/eMMC 模式)
该状态表示读取传输是否有效。它与 UHS-II 模式无关,始终返回
0。
0:无有效数据
1:正在传输数据
R
8WR_XFER_ACT写入传输有效(仅限 SD/eMMC 模式)
该状态表示写入传输是否有效。
0:无有效数据
1:正在传输数据
R
7:4DAT_7_4DAT[7:4] 线路信号电平(仅限嵌入式)
该状态用于检查 DAT 线路电平,以便从错误中恢复并进行调试。
这些位反映了 sd_dat_in(上位数)引脚的值。
R
3RE_TUNE_REQ重新tuning请求(仅限 UHS-I)
msc控制器不生成retuning请求。软件必须设置retuning timer。
R
2DAT_LINE_ACTDAT 线有效(仅限 SD/eMMC 模式)
该位指示 SD/eMMC 总线上的一条 DAT 线路是否正在使用。该
位与 UHS-II 模式无关。
在读取事务中,该状态指示 SD/eMMC 总线上是否正在执行读取
传输。
对于写事务,该状态表示 SD/eMMC 总线上是否正在执行写传输。
对于繁忙命令,该状态表示 SD/eMMC 总线上是否正在执行繁忙
命令。
0:DAT 线无效
1:DAT 线有效
R
1CMD_INH_DAT命令禁止(DAT)(仅限 SD/eMMC 模式)
如果 DAT 线有效或读传输有效设置为 1,则产生该状态位。如果
该位为 0,则表示主机控制器可以发出后续的 SD/eMMC 命令。
0:可以发出使用 DAT 线的命令
1:不能发出使用 DAT 线的命令
R
0CMD_INH命令禁止 (CMD)
在 SD/eMMC 模式下,如果该位为 0,则表示 CMD 线路未被使
用,主机控制器可使用 CMD 线路发出 SD/eMMC 命令。写入命
令寄存器时,该位被置位。收到命令响应后,该位清零。自动
CMD12/23 的响应不会清除该位,但读/写命令的响应会清除该位。
0:主机控制器已准备好发布命令
1:主机控制器尚未准备好发出命令
R

主机控制寄存器 1

HOST_CTRL1_RBASE + 0x28
Bit313029282726252423222120191817161514131211109876543210
字段ReservedCARD_DETECEXT_DAT_XFDMA_SELHS_ENDAT_XFER_WReserved
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved写入无影响,读取为零。
R
7CARD_DETEC卡检测信号选择
T_SIG_LVL 该位用于选择卡检测信号源
0- 选择 card_detect_n 引脚(用于正常使用)
1- 选择卡检测测试电平(用于测试目的)
6CARD_DETEC卡检测测试电平
T_TEST_LVL 当卡检测单选设置为 1 时,使能该位,它表示卡是否插入
0- 无卡
1- 已插入卡
RW
5EXT_DAT_XF扩展数据传输宽度(仅限嵌入式和 SD/eMMC 模式)
ER 该位控制嵌入式设备的 8 位总线宽度模式。该位不适用于 UHS-II 模
式。
0- 总线宽度由数据传输宽度选择
1- 8 位总线宽度
RW
4:3DMA_SELDMA 选择,该字段用于选择 DMA 类型。
当HostControl2 寄存器中Host Version4Enable为 1 时:
00b- 选择 SDMA
01b- 保留
10b- 选择 ADMA2
11b- 选择 ADMA2 或 ADMA3
当HostControl2 寄存器中的HostVersion4Enable为 0 时:
00b- 已选择 SDMA
01b- 保留
10b- 选择 32 位地址 ADMA2
11b- 选择 64 位地址 ADMA2
RW
2HS_EN高速使能(仅限 SD/eMMC 模式)
在设置该位之前,主机驱动程序应检查Capabilitiesregister中的 “高
速支持”。该位用于确定高速模式的预设值选择。该位对 UHS-II 模式
无效。
0- 正常速度模式
1- 高速模式
备注:
MSC 始终在 cclk_tx 时钟的上升沿输出 sd_cmd_out 和 sd_dat_out
线路,与该位无关。
RW
1DAT_XFER_W数据传输宽度(仅限 SD/eMMC 模式)
该位用于选择主机控制器的数据宽度。主机驱动程序应将其设置为与
SD/eMMC 卡的数据宽度一致。
0- 1 位模式
1- 4 位模式
RW
0Reserved保持默认
RW

电源控制寄存器

PWR_CTRL_RBASE + 0x29
Bit313029282726252423222120191817161514131211109876543210
字段ReservedSD_BUS_VOL_VDD2SD_BUS_PWSD_BUS_VOL_VDD1SD_BUS_PW
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved写入无影响,读取为零。
R
7:5SD_BUS_VOL_VDD2VDD2 的 SD 总线电压选择(仅限 UHS-II)。
该字段决定 VDD2 的供电电压范围。如果 Capabilitiesregister中的
1.8V VDD2 支持设置为 1,则该字段可设置为 101b。
111b- 未使用
110b- 未使用
101b- 1.8V
100b- 保留为 1.2V
011b- 001b - 保留
000b- 不支持 VDD2
RW
4SD_BUS_PW用于 VDD2 的 SD 总线电源(仅限 UHS-II)。
R_VDD2 该位使能提供 VDD2。
1- 接通电源
0- 关闭电源
RW
3:1SD_BUS_VOL_VDD1用于 VDD1 的 SD 总线电压选择或用于 VDD 的 eMMC 总
线电压选择。
通过设置这些位,主机驱动程序可为 SD/eMMC 卡选择电压电
平。在设置该寄存器之前,主机驱动程序应检查 Capabilities
register中的电压支持位。如果选择了不支持的电压,主机系统
将不提供 SD 总线电压。DWC_mshc 输出信号(sd_vdd1_sel)
将提供该字段中设置的值,电压切换电路将使用该值。
SD 总线电压选择选项:
111b- 3.3V(典型值)
110b- 3.0V(典型值)
101b- 1.8V(典型值),用于嵌入式系统
100b- 000b - 保留
eMMC 总线电压选择选项:
111b- 3V(典型值)
110b- 1.8V(典型值)
101b- 1.2V(典型值)
100b- 000b - 保留
RW
0SD_BUS_PW用于 VDD1 的 SD 总线电源
R_VDD1 该比特使能卡的VDD1电源,该设置作用于msc控制器的sd_vdd1_on
输出信号,因此可用于控制卡的VDD1供电。
在设置该位之前,SD 主机驱动程序应设置 SD 总线电压选择。如果主
机计数器检测到无卡状态,则应清除该位。
在 SD 模式下,如果该位被选中,主机计数器应通过清除
CLK_CTRL_R 寄存器中的 SD_CLK_IN 位来停止 SD 时钟。
在 UHS-II 模式下,在清除该位之前,主机驱动程序应清除
CLK_CTRL_R 寄存器中的 SD_CLK_IN 位。
0:关闭电源
1:打开电源
RW

数据块间隙控制寄存器

BGAP_CTRL_RBASE + 0x2A
Bit313029282726252423222120191817161514131211109876543210
字段ReservedINT_AT_BGAPRD_WAIT_CTRLCONT_REQSTOP_BG_REQ
RST00000000000000000000000000000000
位名称说明RW
31:4Reserved写入无影响,读取为零。
R
3INT_AT_BGAP块间隙中断(仅限 SD 模式)
该位仅在 SDIO 卡的 4 位模式下有效,用于选择中断周期中
的采样点。设置为 1 可在多块传输的块间隙处进行中断检测。
0- 禁用
1- 使能
RW
2RD_WAIT_CTRL读取等待控制(仅限 SD 模式)
如果存储卡支持读取等待,该位用于使能读取等待协议,使用
DAT[2] 线停止读取数据。
否则,主机控制器必须停止卡时钟以保持读取数据。在 UHS-II
模式下,读取等待被禁用。
0- 禁用读取等待控制
1- 使能读取等待控制
RW
1CONT_REQ继续请求
该位用于重新启动使用 “Stop AtBlockGap Request”停止的事
务。当事务重新开始时,主机控制器会自动清除该位。
0- 不影响
1- 重新启动
RW
0STOP_BG_REQ块间隙停止请求
对于非 DMA、SDMA 和 ADMA 传输,该位用于在下一个块
间隙停止执行读写事务。
0- 传输
1- 停止
RW

唤醒控制寄存器

WUP_CTRL_RBASE + 0x2b
Bit76543210
字段ReservedCARD_REMCARD_INSECARD_INIT
RST00000000
位名称说明RW
7:3Reserved写入无影响,读取为零。
R
2CARD_REMSD卡移除时的唤醒事件使能
OVAL 此位使能通过正常中断状态寄存器中的卡移除断言产生的唤醒事件。对于
SDIO卡,CIS寄存器中的唤醒支持(FN_WUS)不影响此位。
取值:
0:禁用
1:使能
RW
1CARD_INSESD卡插入时的唤醒事件使能
RT 此位使能通过正常中断状态寄存器中的卡插入断言产生的唤醒事件。CIS
寄存器中的FN_WUS(唤醒支持)不影响此位。
取值:
0:禁用
1:使能
RW
0CARD_INIT卡中断时的唤醒事件使能
此位使能通过正常中断状态寄存器中的卡中断断言产生的唤醒事件。当
CIS寄存器中的FN_WUS(唤醒支持)设置为1时,此位可设置为1。
取值:
0:禁用
1:使能
RW

时钟控制寄存器

CLK_CTRL_RBASE + 0x2c
Bit1514131211109876543210
字段ReservedCARD_LP_ENPLL_ENABLESD_CLK_ENINTERNAL_C
RST0000000000000000
位名称说明RW
15:5Reserved写入无影响,读取为零。
R
4CARD_LP_ENSD/eMMC卡低功耗使能。
该位不可用于SD/eMMC卡的初始化阶段。
0-卡的时钟一直开启
1-卡在IDLE状态时时钟会被关闭
RW
3PLL_ENABLEPLL 使能
该位用于有效 PLL(HostVersion 4Enable= 1 时适用)。当Host
Version4Enable =0时,INTERNAL_CLK_EN位可用于有效PLL。
该值反映在 card_clk_en 引脚上。
HostVersion4Enable=1且该位未被用于有效PLL时,推荐将该位设
置位1。
0- PLL 处于低功耗模式
1- PLL 使能
RW
2SD_CLK_ENSD/eMMC 时钟使能
该位设置为 0 时,将停止 SDCLK 或 RCLK。 该位设置为 0 时,可
更改 SDCLK/RCLK 频率选择,其值将反映在 clk2card_on 引脚上。
0- 禁用提供 SDCLK/RCLK
1- 使能提供 SDCLK/RCLK
RW
1INTERNAL_C内部时钟状态
LK_STABLE 在设置内部时钟使能(InternalClock Enable)和 PLL 使能(PLL
Enable)后,主机驱动程序通过该状态两次检查时钟稳定性。该位反映
内部时钟使能设置为 1 后 intclk_stable 引脚的同步值,以及 PLL 使
能设置为 1 后 card_clk_stable 引脚的同步值。
0- 未就绪
1- 就绪
R
0INTERNAL_C内部时钟使能
LK_EN 当主机驱动程序不使用主机控制器或主机控制器等待唤醒中断时,该位
被设置为 0。
主机控制器应停止内部时钟,进入低功耗状态。不过,寄存器时钟仍可
读写。该值反映在 intclk_en 引脚上。
当该位未被用于控制内部时钟(baseclock、managerclock)时,建议将
该位设置为1。
0- 停止
1- 振荡
RW

超时控制寄存器

TOUT_CTRL_RBASE + 0x2e
Bit76543210
字段ReservedTOUT_CNT
RST00000000
位名称说明RW
7:4Reserved写入无影响,读取为零。
R
3:0TOUT_CNT数据超时计数器值。
该值决定检测 DAT 线路超时的时间间隔。超时时钟频率将由基准时
钟 TMCLK 值除以该值产生。设置该寄存器时,应清除数据超时错误
状态使能(在Error InterruptStatusEnable寄存器中),以防止发生
意外超时事件。
1111b - 保留
1110b -TMCLK x2^27
.....- ............
0001b -TMCLK x2^14
0000b -TMCLK x2^13
在 eMMC 模式下启动期间,应用程序应在该字段中配置启动数据超
时值(约 1 秒)。
RW

软件复位寄存器

SW_RST_RBASE + 0x2f
Bit76543210
字段ReservedSW_RST_DATSW_RST_CMDSW_RST_ALL
RST00000000
位名称说明RW
7:3Reserved写入无影响,读取为零。
R
2SW_RST_DATDAT 线软件复位(仅限 SD/eMMC 模式)
该位只复位部分数据电路,DMA 电路也会复位。
1- 复位
0- 工作
该位将清除下列寄存器和位:
Buffer 数据端口寄存器
- 缓冲器被清零并初始化。
当前状态寄存器
- 缓冲区读使能
- 缓冲区写使能
- 读传输有效
- 写传输有效
-DAT 线路有效
- 命令抑制 (DAT)
块间隙控制寄存器
- 继续请求
- 在块间隙请求停止
正常中断状态寄存器
- 缓冲区读就绪
- 缓冲区写就绪
-DMA 中断
- 块间隙事件
-传输完成
RW
1SW_RST_CMDCMD 线的软件复位
仅复位命令电路的一部分,以便能够发出命令。它还用于初始化
UHS-II 命令电路。该复位仅对命令发出电路有效(包括与命令禁
止 (CMD) 控制相关的响应错误状态),不影响数据传输电路。在
处理子命令响应错误时,即使执行了该复位,主机控制器仍可继续
进行数据传输。
该位将清除下列寄存器和位:
- 当前状态寄存器
命令禁止 (CMD)
- 正常中断状态寄存器
命令完成
- 错误中断状态寄存器
与命令禁止 (CMD) 有关的响应错误状态
1- 复位
0- 工作
RW
0SW_RST_ALL软件复位所有
除卡检测电路外,该复位会影响整个主机控制器。在初始化过程中,
主机驱动程序应将该位设置为 1,以重置主机控制器。除
capabilities寄存器外,所有寄存器都将复位。如果该位被置 1,主
机驱动程序应发出复位命令并重新初始化 SD/eMMC 卡。
1- 复位
0- 工作
RW

正常中断状态寄存器

NORMAL_INT_STAT_RBASE + 0x30
Bit1514131211109876543210
字段ERR_INTCQE_EVNTFX_EVNTRE_TUNE_EVNTReservedCARD_INTERRUPTReservedBUF_RD_RDYBUF_WR_RDYDMA_INTBGAP_EVNTXFER_CMPLTCMD_CMPLT
RST0000000000000000
位名称说明RW
15ERR_INT错误中断
如果错误中断状态寄存器中的任何位被置位,则该位被置位。
0- 无错误
1- 错误
R
14CQE_EVNT命令队列事件
如果发生与命令队列引擎相关的事件,则设置此状态。 C
0- 无事件
1- 检测到命令队列事件
R/W1C
13FX_EVNTFX 事件
当响应寄存器的 R[14] 设置为 1,且传输模式寄存器中的响应类
型 R1/R5 设置为 0 时,该状态被设置。该中断用于响应检查功
能。
0- 无事件
1- 检测到 FX 事件
R
12RE_TUNE_EVNTRe-tuning事件(仅限 UHS-I)
如果Re-tuning请求从 0 变为 1,则该位被置位。该版本不支持
Re-Tuning请求。
0- 不需要Re-tuning
1- 应执行Re-tuning
R
11:9Reserved保持默认
R
8CARD_INTERRUPT卡的中断
这个字段反映着同步的值:
DAT[1]SD模式的中断输入
UHS-II模式的中断输入
R
7Reserved保持默认
R
6Reserved保持默认
R
5BUF_RD_RDY缓冲区读取就绪
如果缓冲区读取使能从 0 变为 1,则该位被置位。 C
0- 未准备好读取缓冲区
1- 准备读取缓冲区
R/W1C
4BUF_WR_RDY缓冲区写就绪
如果缓冲区写入使能从 0 变为 1,则该位被置位。 C
0- 未准备好写缓冲区
1- 准备好写缓冲区
R/W1C
3DMA_INTDMA 中断
如果主机控制器在传输过程中检测到 SDMA 缓冲区边界,则该位 C
被置位。在 ADMA 情况下,通过设置描述符表中的 int 字段,主
机控制器会产生该中断。传输完成后将不会再产生该中断。
0- 无 DMA 中断
1- 已生成 DMA 中断
R/W1C
2BGAP_EVNT块间隙事件
当读取/写入事务因 “在块间隙时停止 ”请求而在块间隙处停止 C
时,该位被置位。
0- 无块间隙事件
1- 交易停止
R/W1C
1XFER_CMPLT传输完成
读/写传输和状态繁忙的命令完成时,该位被置位。 C
0- 未完成
1- 命令执行完毕
R/W1C
0CMD_CMPLT命令完成
在 SD/eMMC 模式下,除自动 CMD12 和自动 CMD23 外,当 C
响应结束位时,该位被置位。
当传输模式寄存器中的响应中断禁用设置为 1 时,不会产生该中
断。
0- 命令未完成
1- 命令完成
R/W1C

错误中断状态寄存器

ERROR_INT_STAT_RBASE + 0x32
Bit313029282726252423222120191817161514131211109876543210
字段ReservedVENDOR_ERR3VENDOR_ERR2VENDOR_ERR1BOOT_ACK_ERRRESP_ERRTUNING_ERRADMA_ERRAUTO_CMD_ERRCUR_LMT_ERRDAT_END_BIT_ERRDATA_CRC_ERRDATA_TOUT_ERRCMD_IDX_ERRCMD_END_BIT_ERRCMD_CRC_ERRCMD_TOUT_ERR
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留。R
15VENDOR_ERR3错误中断状态寄存器的第 16 个寄存器字段为保留。它将始终返 RW1
回 0。 C
值:
0:无错误
1:错误
RW1C
14VENDOR_ERR2错误中断状态寄存器的第 15 个寄存器字段为保留。它将始终返
回 0。 C
值:
0:无错误
1:错误
R/W1C
13VENDOR_ERR1错误中断状态寄存器的第 14 个寄存器字段为保留。它将始终返
回 0。 C
值:
0:无错误
1:错误
R/W1C
12BOOT_ACK_ERRboot应答错误(仅限 eMMC 模式)
当boot应答超时或检测到boot应答状态的值不是 0b010 时,该 C
位被置位。只有在 MSC 的boot功能已使能时,该位才会被设置。
值:
0:无错误
1:错误
R/W1C
11RESP_ERR响应错误(SD /eMMC模式)
主机控制器 4.00 版支持响应错误检查功能,以避免主机驱动程 C
序在 DMA 执行期间进行响应错误检查的开销。如果在传输模式
寄存器中将响应错误检查使能设为 1,主机控制器将检查 R1 或
R5 响应。如果在响应中检测到错误,则将该位设置为 1。
1: 错误
0: 无错误
R/W1C
10TUNING_ERRtuning错误(仅限 UHS-I 模式)
除tuning过程外,当在tuning电路中检测到不可恢复的错误时, C
该位被置位(tuning过程中发生的错误由HostControl2 寄存器
中的采样时钟选择指示)。检测到tuning错误时,主机驱动程序
需要终止命令执行并执行tuning。要重置tuning电路,应在执行
tuning程序前将采样时钟选择设为 0。tuning错误的优先级高于
数据传输过程中产生的其他错误中断。检测到tuning错误时,主
机驱动器应丢弃当前读/写命令传输的数据,并在主机控制器从
tuning电路错误中恢复后重试数据传输。
1:错误
0:无错误
R/W1C
9ADMA_ERRADMA 错误
当主机控制器在基于 ADMA 的数据传输过程中检测到错误时, C
该位被置位。错误可能由以下原因造成:
从系统总线(主 I/F)收到的错误响应
ADMA3,ADMA2 描述符无效
CQE 任务或传输描述符无效
发生错误时,ADMA 的状态将保存在 ADMA 错误状态寄存器
中。
在 eMMC CQE 模式下:
当主机控制器在 ST_FDS 状态下检测到描述符数据无效
(Valid=0)时,会产生该中断。ADMA 错误状态中的 ADMA 错
误状态表示 ST_FDS 状态发生错误。主机驱动程序可能会发现
错误描述符的 Valid 比特未置位。
1:错误
0:无错误
R/W1C
8AUTO_CMD_ERR自动 CMD 错误(仅限 SD/eMMC 模式)
自动 CMD12 和自动 CMD23 使用此错误状态。当检测到自动 C
CMD 错误状态寄存器中 D00 至 D05 的任何位从 0 变为 1
时,该位被置位。D07 对自动 CMD12 有效。当该位设置为 1
时,自动 CMD 错误状态寄存器有效,可通过清除该位来清除(也
允许另一种实现方式)。
1:错误
0:无错误
R/W1C
7CUR_LMT_ERR电流限制错误
通过设置电源控制寄存器中的 SD 总线电源位,要求主机控制器 C
为 SD 总线供电。如果主机控制器支持电流限制功能,则可以通
过停止向非法卡供电来保护主机控制器,在这种情况下,该位将
显示故障状态。如果该位读数为 1,则表示主机控制器由于某些
故障而未向 SD 卡供电。如果该位读数为 0,则表示主机控制器
正在供电且未发生错误。主机控制器可能需要一些采样时间来检
测电流限制。如果主控制器不支持该功能,则应始终将该位设置
为 0。
1:电源故障
0:无错误
R/W1C
6DAT_END_BIT_ERR数据结束位错误(仅限 SD/eMMC 模式)
在使用 DAT 线读取数据的结束位检测到 0 或在 CRC 状态的 C
结束位位置检测到 0 时,都会发生此错误。
1:错误
0:无错误
R/W1C
5DATA_CRC_ERR数据 CRC 错误(仅限 SD/eMMC 模式)。
当使用 DAT 线路传输读取数据时检测到 CRC 错误,当检测到 C
写入 CRC 状态的值不是 010 或写入 CRC 状态超时时,就会
发生此错误。
1:错误
0:无错误
R/W1C
4DATA_TOUT_ERR数据超时错误(仅限 SD/eMMC 模式)
检测到下列超时条件之一时,该位被置位: C
-R1b 和 R5b 类型的忙超时
- 写入 CRC 状态后忙超时
- 写 CRC 状态超时
- 读数据超时
1:超时
0:无错误
R/W1C
3CMD_IDX_ERR命令索引错误(仅限 SD/eMMC 模式)
如果命令响应中出现命令索引错误,则设置该位。 C
1:错误
0:无错误
R/W1C
2CMD_END_BIT_ERR命令结束位错误(仅限 SD/eMMC 模式)
当检测到命令响应的结束位为 0 时,该位被置位。 C
1:产生结束位错误
0:无错误
R/W1C
1CMD_CRC_ERR命令 CRC 错误(仅限 SD/eMMC 模式)
命令 CRC 错误在两种情况下产生。 C
如果返回响应且命令超时错误设置为 0(表示无超时),则在检
测到命令响应中的 CRC 错误时将该位设置为 1。
当发出命令时,主机控制器通过监控 CMD 线来检测 CMD 线冲
突。如果主机控制器将 CMD 线驱动为高电平,但在下一个SD
的时钟沿检测到 CMD 线为 低 电平,则主机控制器应终止命令
(停止驱动 CMD 线)并将该位设置为 1。 命令超时错误也应
设置为 1,以区分 CMD 线冲突。
1:生成 CRC 错误
0:无错误
R/W1C
0CMD_TOUT_ERR命令超时错误(仅限 SD/eMMC 模式)
只有在从命令结束位算起的 64 个 SD 时钟周期内无响应时,才 C
会设置该位。如果主机控制器检测到 CMD 线冲突以及命令
CRC 错误位,则无需等待 64 个 SD/eMMC 卡时钟周期即可将
该位设置为 1。
1:超时
0:无错误
R/W1C

正常中断状态使能寄存器

NORMAL_INT_STAT_EN_RBASE + 0x34
Bit1514131211109876543210
字段ReservedCQE_EVNT_ST_ENFX_EVNT_ST_ENRE_TUNE_EVNT_ST_ENReservedBUF_RD_RDY_ST_ENBUF_WR_RDY_ST_ENDMA_INT_ST_ENBGAP_EVNT_ST_ENXFER_CMPLT_ST_ENCMD_CMPLT_ST_EN
RST0000000000000000
位名称说明RW
15Reserved写入无影响,读取为零。
R
14CQE_EVNT_ST_EN使能 CQE 事件状态。
1- 使能
0- 屏蔽
RW
13FX_EVNT_ST_ENFX 事件状态使能。
该位从 4.10 版开始添加。
1- 使能
0- 屏蔽
RW
12RE_TUNE_EVNT_ST_EN重新tuning事件(仅限 UHS-I) 状态 使能
1- 使能
0- 屏蔽
RW
11:6Reserved写入无影响,读取为零。
RW
5BUF_RD_RDY_ST_EN使能缓冲区读取就绪状态
1- 使能
0- 屏蔽
RW
4BUF_WR_RDY_ST_EN缓冲区写就绪状态使能
1- 使能
0- 屏蔽
RW
3DMA_INT_ST_EN使能 DMA 中断状态
1- 使能
0- 屏蔽
RW
2BGAP_EVNT_ST_EN使能块间隙事件状态
1- 使能
0- 屏蔽
RW
1XFER_CMPLT_ST_EN传输完成状态使能
1- 使能
0- 屏蔽:
RW
0CMD_CMPLT_ST_EN命令完成状态 使能
1- 使能
0- 屏蔽
RW

错误中断状态使能寄存器

ERROR_INT_STAT_EN_RBASE + 0x36
Bit1514131211109876543210
字段VENDOR_ERR_ST_EN3VENDOR_ERR_ST_EN2VENDOR_ERR_ST_EN1BOOT_ACK_ERR_ST_ENRESP_ERR_ST_ENTUNING_ERR_ST_ENADMA_ERR_ST_ENAUTO_CMD_ERR_ST_ENCUR_LMT_ERR_ST_ENDAT_END_BIT_ERR_ST_ENDAT_CRC_ERR_ST_ENDAT_TOUT_ERR_ST_ENCMD_IDX_ERR_ST_ENCMD_END_BIT_ERR_ST_ENCMD_CRC_ERR_ST_ENCMD_TOUT_ERR_ST_EN
RST0000000000000000
位名称说明RW
15VENDOR_ERR_ST_EN3错误中断状态使能寄存器的第 15 位为保留。它将始终返
回 0。
值:
0: 屏蔽
1: 使能
RW
14VENDOR_ERR_ST_EN2错误中断状态使能寄存器的第 14 位为保留。它将始终返
回 0。
值:
0:屏蔽
1:使能
RW
13VENDOR_ERR_ST_EN1错误中断状态使能寄存器的第 13 位为保留。它将始终返
回 0。
值:
0:屏蔽
1:使能
RW
12BOOT_ACK_ERR_ST_EN启动应答错误(仅限 eMMC 模式)。
将该位设置为 1 可在错误中断状态寄存器
(ERROR_INT_STAT_R) 中设置启动应答错误。
1:使能
0:屏蔽
RW
11RESP_ERR_ST_EN响应错误状态使能(仅SD模式)
1:使能
0:屏蔽
RW
10TUNING_ERR_ST_ENtuning错误状态使能(仅限 UHS-I 模式)。
1:使能
0:屏蔽
RW
9ADMA_ERR_ST_EN使能 ADMA 错误状态。
1:使能
0:屏蔽
RW
8AUTO_CMD_ERR_ST_EN自动 CMD 出错状态使能(仅限 SD/eMMC 模式)。
1:使能
0:屏蔽
RW
7CUR_LMT_ERR_ST_EN电流限值错误状态使能
1:使能
0:屏蔽
RW
6DAT_END_BIT_ERR_ST_EN数据结束位错误状态使能(仅限 SD/eMMC 模式)。
1:使能
0:屏蔽
RW
5DAT_CRC_ERR_ST_EN数据 CRC 错误状态使能(仅限 SD/eMMC 模式)
1:使能
0:屏蔽
RW
4DAT_TOUT_ERR_ST_EN数据超时错误状态使能(仅限 SD/eMMC 模式)
1:使能
0:屏蔽
RW
3CMD_IDX_ERR_ST_EN命令索引错误状态使能(仅限 SD/eMMC 模式)
1:使能
0:屏蔽
RW
2CMD_END_BIT_ERR_ST_EN命令结束位错误状态使能(仅限 SD/eMMC 模式)
1:使能
0:屏蔽
RW
1CMD_CRC_ERR_ST_EN使能命令 CRC 错误状态(仅限 SD/eMMC 模式)
1:使能
0:屏蔽
RW
0CMD_TOUT_ERR_ST_EN命令超时错误状态使能(仅限 SD/eMMC 模式)。
1:使能
0:屏蔽
RW

正常中断信号使能寄存器

NORMAL_INT_SIGNAL_EN_RBASE + 0x38
Bit1514131211109876543210
字段ReservedCQE_EVNT_SIG_ENFX_EVNT_SIG_ENRE_TUNE_EVNT_SIG_ENReservedBUF_RD_RDY_SIG_ENBUF_WR_RDY_SIG_ENDMA_INT_SIG_ENBGAP_EVNT_SIG_ENXFER_CMPLT_SIG_ENCMD_CMPLT_SIG_EN
RST0000000000000000
位名称说明RW
15Reserved写入无影响,读取为零。
R
14CQE_EVNT_SIG_EN命令队列引擎事件信号使能
1- 使能
0- 屏蔽
RW
13FX_EVNT_SIG_ENFX 事件信号使能
1- 使能
0- 屏蔽
RW
12RE_TUNE_EVNT_SIG_EN重新tuning事件(仅限 UHS-I)信号使能。
1- 使能
0- 屏蔽
RW
11:6Reserved保持默认
RW
5BUF_RD_RDY_SIG_EN缓冲区读就绪信号使能
1- 使能
0- 屏蔽
RW
4BUF_WR_RDY_SIG_EN缓冲区写就绪信号使能
1- 使能
0- 屏蔽
RW
3DMA_INT_SIG_ENDMA 中断信号使能
1- 使能
0- 屏蔽
RW
2BGAP_EVNT_SIG_EN块间隙事件信号使能
1- 使能
0- 屏蔽
RW
1XFER_CMPLT_SIG_EN传输完成信号使能
1- 使能
0- 屏蔽
RW
0CMD_CMPLT_SIG_EN命令完成信号使能
1- 使能
0- 屏蔽
RW

错误中断信号使能寄存器

ERROR_INT_SIGNAL_EN_RBASE + 0x3a
Bit1514131211109876543210
字段VENDOR_ERR_SIG_EN3VENDOR_ERR_SIG_EN2VENDOR_ERR_SIG_EN1BOOT_ACK_ERR_SIG_ENRESP_ERR_SIG_ENTUNING_ERR_SIG_ENADMA_ERR_SIG_ENAUTO_CMD_ERR_SIG_ENCUR_LMT_ERR_SIG_ENDAT_END_BIT_ERR_SIG_ENDAT_CRC_ERR_SIG_ENDAT_TOUT_ERR_SIG_ENCMD_IDX_ERR_SIG_ENCMD_END_BIT_ERR_SIG_ENCMD_CRC_ERR_SIG_ENCMD_TOUT_ERR_SIG_EN
RST0000000000000000
位名称说明RW
15VENDOR_ERR_SIG_EN3错误中断信号使能的第 16 位为保留。它将始终返回 0。
1- 使能
0- 屏蔽
RW
14VENDOR_ERR_SIG_EN2错误中断信号使能的第 15 位为保留。它将始终返回 0。
1- 使能
0- 屏蔽
RW
13VENDOR_ERR_SIG_EN1错误中断信号使能的第 14 位为保留。它将始终返回 0。
1- 使能
0- 屏蔽
RW
12BOOT_ACK_ERR_SIG_EN启动应答错误(仅限 eMMC 模式)。
当错误中断状态寄存器中的 “启动应答错误 ”设置为
“1 ”时,该位将产生中断信号。
1- 使能
0- 屏蔽
RW
11RESP_ERR_SIG_EN响应错误信号使能(仅限SD模式)
1- 使能
0- 屏蔽
RW
10TUNING_ERR_SIG_ENtuning错误信号使能(仅限 UHS-I 模式)
1- 使能
0- 屏蔽
RW
9ADMA_ERR_SIG_ENADMA 错误信号使能
1- 使能
0- 屏蔽
RW
8AUTO_CMD_ERR_SIG_EN自动 CMD 错误信号使能(仅限 SD/eMMC 模式)
1- 使能
0- 屏蔽
RW
7CUR_LMT_ERR_SIG_EN电流限制错误信号使能
1- 使能
0- 屏蔽
RW
6DAT_END_BIT_ERR_SIG_EN数据结束位错误信号使能(仅限 SD/eMMC 模式)
1- 使能
0- 屏蔽
RW
5DAT_CRC_ERR_SIG_EN数据 CRC 错误信号使能(仅限 SD/eMMC 模式)
1- 使能
0- 屏蔽
RW
4DAT_TOUT_ERR_SIG_EN数据超时错误信号使能(仅限 SD/eMMC 模式)
1- 使能
0- 屏蔽
RW
3CMD_IDX_ERR_SIG_EN命令索引错误信号使能(仅限 SD/eMMC 模式)
1- 使能
0- 屏蔽
RW
2CMD_END_BIT_ERR_SIG_EN命令结束位错误信号使能(仅限 SD/eMMC 模式)
1- 使能
0- 屏蔽
RW
1CMD_CRC_ERR_SIG_EN命令 CRC 错误信号使能(仅限 SD/eMMC 模式)
1- 使能
0- 屏蔽
RW
0CMD_TOUT_ERR_SIG_EN命令超时错误信号使能(仅限 SD/eMMC 模式)
1- 使能
0- 屏蔽
RW

自动 CMD 状态寄存器

AUTO_CMD_STAT_RBASE + 0x3c
Bit1514131211109876543210
字段ReservedC_NOT_A_C12ReservedA_C_RESP_ERRA_C_IDX_ERRA_C_EBIT_ERRA_C_CRC_ERRA_C_TOUT_ERRA_C12_NOT_EXEC
RST0000000000000000
位名称说明RW
15:8Reserved写入无影响,读取为零。
R
7C_NOT_A_C12因自动 CMD12 错误而未发出命令
如果该位设置为 1,则由于该寄存器中的自动 CMD12 错误
(D04-D01),CMD_wo_DAT 不被执行。
当自动 CMD23 产生自动 CMD 错误时,该位被设置为 0。
1- 未发出
0- 无错误
R
6Reserved写入无影响,读取为零。
R
5A_C_RESP_ERR自动 CMD 响应错误
当传输模式寄存器中的 ResponseError 检查使能设置为 1,且在
自动 CMD12 或 CMD13 的 R1 响应中检测到错误时,该位被设
置。如果 D00 至 D04 之间的任何位设置为 1,则该状态被忽略。
1- 错误
0- 无错误
R
4A_C_IDX_ERR自动 CMD 索引错误
如果命令的响应中发生命令索引错误,则设置该位。
1- 错误
0- 无错误
R
3A_C_EBIT_ERR自动 CMD 结束位错误
检测到命令响应的结束位为 0 时设置该位。
1- 产生结束位错误
0- 无错误
R
2A_C_CRC_ERR自动 CMD CRC 错误
当检测到命令响应中出现 CRC 错误时,设置该位。
1- 产生 CRC 错误
0- 无错误
R
1A_C_TOUT_ERR自动 CMD 超时错误
如果在距离命令结束位 64 个 SDCLK 周期内未返回响应,则设
置该位。
如果该位设置为 1,则错误状态位 (D04-D01) 无效。
1- 超时
0- 无错误
R
0A_C12_NOT_EXEC自动 CMD12 未执行
如果由于命令错误而未开始多存储块数据传输,则不会设置该位,
因为没有必要发出 AutoCMD12。将该位设置为 1 意味着主机控
制器因某些错误而无法发出自动 CMD12 以停止多存储块数据传
输。如果将该位设置为 1,则错误状态位 (D04-D01) 无效。
当自动 CMD23 产生自动 CMD 错误时,该位被置 0。
1- 未执行
0- 已执行
R

主机控制寄存器 2

HOST_CTRL2_RBASE + 0x3e
Bit1514131211109876543210
字段ReservedASYNC_INT_ENADDRESSINGHOST_V4_ENCMD23_ENADMA2_LEN_MDReservedKeep0SMP_CLK_SELEXEC_TUNINGReservedUHS_MODE_SEL
RST0000000000000000
位名称说明RW
15Reserved保持默认
RW
14ASYNC_INT_EN异步中断使能
如果卡支持异步中断,且 Capabilities寄存器中的 “异步中断支持 ”
设置为 1,则可设置该位。
0- 禁用
1- 使能
RW
13ADDRESSING64 位地址
该位在Host Version 4Enable设置为 1 时有效。
0- 32 位地址
1- 64 位地址
RW
12HOST_V4_ENHostVersion4Enable
该位用于选择 3.00 版兼容模式或 4 版模式。
在主机版本 4 模式下,以下字段的功能将被修改:
SDMA 地址: SDMA 使用 ADMA 系统地址(05Fh-058h),而不是
SDMA 系统地址寄存器(003h-000h)。
ADMA2/ADMA3 选择: ADMA3 通过主机控制 1 寄存器中的 DMA
选择进行选择
64 位 ADMA 描述符大小:当 64 位寻址设置为 1 时,使用 128 位
描述符代替 96 位描述符。
32 位/64 位系统寻址选择:通过寄存器中的 64 位寻址位选择 32 位
或 64 位系统寻址
32 位块计数: SDMA 系统地址寄存器(003h-000h)被修改为 32 位
BlockCountregister。
0- 版本 3.00 兼容模式
1- 版本 4 模式
建议在主机版本低于 4 模式(HostVersion 4Enable = 0)下运行时,
不要对 ADMA3 集成描述符地址寄存器和命令队列寄存器(如适用)
编程。
RW
11CMD23_EN使能 CMD23
该位用于选择 ADMA3 数据传输的自动 CMD23 或自动 CMD12。
0- 禁用自动 CMD23
1- 使能自动 CMD23
RW
10ADMA2_LEN_MDADMA2 长度模式
该位用于将 ADMA2 长度模式选择为 16 位或 26 位。
0- 16 位数据长度模式
1- 26 位数据长度模式
RW
9Reserved写入无影响,读取为零。
R
8Keep0请将该位保持为 0。
RW
7SMP_CLK_SEL采样时钟选择
主机控制器使用该位选择接收 CMD 和 DAT 的采样时钟。该位由
tuning程序设置,并在tuning完成后有效(当执行tuning清零时)。
将该位设置为 1 表示tuning成功完成,将该位设置为 0 表示tuning
失败。该值反映在 sample_cclk_sel 引脚上。
0- 使用固定时钟采样数据
1- 使用tuning时钟采样数据
RW
6EXEC_TUNING执行tuning(仅限 UHS-I)
该位设置为 1 时启动tuning程序,tuning程序完成后该位自动清零。
0- 未tuning或tuning完成
1- 执行tuning
RW
5:3Reserved保持默认
RW
2:0UHS_MODE_SELUHS 模式/eMMC 速度模式选择
在 SD 操作模式下,该字段用于选择 UHS 模式。在 eMMC 模式下,
此字段用于选择 eMMC 速度模式。
UHS 模式(仅限SD模式):
000b -SDR12
001b -SDR25
010b -SDR50
011b -SDR104
100b -DDR50
101b -Rsvd
110b -Rsvd
111b -Rsvd
eMMC 速度模式(仅限 eMMC 模式):
000b - 传统
001b - 高速SDR
010b -Rsvd
011b -HS200
100b - 高速 DDR
101b -Rsvd
110b -Rsvd
111b -Rsvd
RW

功能寄存器 1

CAPABILITES1_RBASE + 0x40
Bit313029282726252423222120191817161514131211109876543210
字段ResverdASYNC_INT_SUPPORTSYS_ADDR_64_V3SYS_ADDR_64_V4ReservedSUS_RES_SUPPORTSDMA_SUPPORTHIGH_SPEED_SUPPORTReservedADMA2_SUPPORTEmbedded_8_BITMAX_BLK_LENReserved
RST00000000000000000000000000000000
位名称说明RW
31:30Resverd写入无影响,读取为零。
29ASYNC_INT_SUPPORT异步中断支持(仅限SD卡模式)
1:支持异步中断
0:不支持异步中断
R
28SYS_ADDR_64_V3主机版本3支持64位系统地址
当前域设置主机版本3模式下支持64位系统地址
SDMA在版本3模式下不能支持64位系统地址
如果这一位设置为1,通过设置主机版本4使能
(HOST_VER4_ENABLE = 0)和DMA选择
(DMA_SEL=11b),可以使用96描述符的64位ADMA2。
1– 版本3支持64位系统地址
0- 版本3不支持64位系统地址
R
27SYS_ADDR_64_V4版本4支持64位系统地址
当前域设置主机版本4模式下支持64位系统地址
如果将该位设置为 1,则可通过设置HostVersion4Enable
(HOST_VER4_ENABLE =1)和在HostControl 2 寄存
器中设置 64 位寻址(ADDRESSING=1)来使能版本 4 的
64 位 DMA 寻址。可以使用 SDMA,ADMA2 使用 128 位
描述符。
0- 不支持 V4 的 64 位系统寻址
1- 支持 V4 的 64 位系统地址
R
26:24Reserved写入无影响,读取为零。
23SUS_RES_SUPPORT支持暂停/恢复
该位表示主机控制器是否支持暂停/恢复功能。如果该位为
0,则主机驱动程序不得发出暂停或恢复命令,因为不支持
暂停和恢复机制。
1- 支持
0- 不支持
R
22SDMA_SUPPORT支持 SDMA
该位指示主机控制器是否能够使用 SDMA 在系统内存和主
机控制器之间直接传输数据。
1- 支持 SDMA
0- 不支持 SDMA
R
21HIGH_SPEED_SUPPORT支持高速模式
该位表示主机控制器和主机系统是否支持高速模式,是否能
提供 25MHz 至 50MHz 的 SD 时钟频率。
1- 支持高速
0- 不支持高速
R
20Reserved写入无影响,读取为零。
19ADMA2_SUPPORT支持 ADMA2
该位指示主机控制器是否能够使用 ADMA2。
1- 支持 ADMA2
0- 不支持 ADMA2
R
18Embedded_8_BIT嵌入式设备 8 位支持
该位指示主机控制器是否能够使用 8 位总线宽度模式。当
插槽类型设置为 10b 时,该位无效。
1- 支持 8 位总线宽度
0- 不支持 8 位总线宽度
R
17:16MAX_BLK_LEN最大数据块长度
该位表示主机驱动程序可以读取和写入主机控制器缓冲区
的最大块大小。缓冲器传输此大小的数据块无需等待周期。
无论该位如何设置,SD 存储器的传输块长度始终为 512
字节。
00- 512 字节
01- 1024
10- 2048
11- 保留
R
15:0Reserved写入无影响,读取为零。
R

功能寄存器 2

CAPABILITES2_RBASE + 0x44
Bit313029282726252423222120191817161514131211109876543210
字段ReservedADMA3_SUPPORTReservedRE_TUNING_MODESUSE_TUNING_SDR50ReservedRETUNE_CNTReveredDDR50_SUPPORTSDR104_SUPPORTSDR50_SUPPORT
RST00000000000000000000000000000000
位名称说明RW
31:28Reserved写入无影响,读取为零。
ADMA3 支持 R
R
27ADMA3_SUPPORT该位指示主机控制器是否能够使用 ADMA3。
0- 不支持 ADMA3
1- 支持 ADMA3
26:16Reserved写入无影响,读取为零。
Re-tuning模式(仅限 UHS-I) R
R
15:14RE_TUNING_MODES该字段选择Re-tuning方法并限制最大数据长度。
00b - 模式 1- 定时器
01b - 模式 2- 定时器和Re-tuning请求(不支持)
10b - 模式 3- 自动重调(用于传输)
11b- 保留
为 SDR50 使用tuning(仅限 UHS-I)
R
13USE_TUNING_SDR501-SDR50 需要tuning
0-SDR50 不需要tuning
12Reserved写入无影响,读取为零。
重调计时器计数(仅限 UHS-I) R
R
11:8RETUNE_CNT0x0- 禁用重调计时器;
0x1-1 秒;
0x2-2 秒;
0x3-4 秒;
0xB -1024 秒;
0xC- 保留;
0xD- 保留;
0xE - 保留;
0xF- 从其他来源获取信息;
7:3Revered写入无影响,读取为零。
支持 DDR50(仅限 UHS-I) R
R
2DDR50_SUPPORT1- 支持 DDR50
0- 不支持 DDR50
支持 SDR104(仅限 UHS-I) SDR104 需要调整。
R
1SDR104_SUPPORT1- 支持 SDR104
0- 不支持 SDR104
支持 SDR50(仅限 UHS-I),如果支持 SDR104,则该位
R
0SDR50_SUPPORT应设为 1。
1- 支持 SDR50
0- 不支持 SDR50

电流功能寄存器 1

CURR_CAPABILITES1_RBASE + 0x48
Bit313029282726252423222120191817161514131211109876543210
字段ReservedMAX_CUR_18VMAX_CUR_30VMAX_CUR_33V
RST00000000000000000000000000000000
位名称说明RW
31:24Reserved写入无影响,读取为零。
R
23:16MAX_CUR_18V1.8V最大电流
此位指定卡1.8V VDD1电源的最大电流。
0:通过其他方法获取信息
1:4mA
2:8mA
3:13mA
.......
255:1020mA
R
15:8MAX_CUR_30V3.0V最大电流
此位指定卡3.0V VDD1电源的最大电流。
0:通过其他方法获取信息
1:4mA
2:8mA
3:13mA
.......
255:1020mA
R
7:0MAX_CUR_33V此位指定卡片3.3V VDD1电源的最大电流。
0:通过其他方法获取信息
1:4mA
2:8mA
3:13mA
.......
255:1020mA
R

电流功能寄存器 2

CURR_CAPABILITES2_RBASE + 0x4c
Bit313029282726252423222120191817161514131211109876543210
字段ReservedMAX_CUR_VDD2_18V
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved写入无影响,读取为零。
R
7:0MAX_CUR_VDD2_18V1.8V VDD2最大电流
此位指定UHS-II卡1.8V VDD2电源的最大电流。
0:通过其他方法获取信息
1:4mA
2:8mA
3:13mA
.......
255:1020mA
R

自动 CMD 错误状态寄存器的强制事件寄存器

FORCE_AUTO_CMD_STAT_RBASE + 0x50
Bit1514131211109876543210
字段ReservedFC_CMD_NOT_ISS_AC12ReservedFC_AC_RESP_ERRFC_AC_IDX_ERRFC_AC_EBIT_ERRFC_AC_CRC_ERRFC_AC_TOUT_ERRFC_AC12_NOT_EXEC
RST0000000000000000
位名称说明RW
15:8Reserved写入无影响,读取为零
R
7FC_CMD_NOT_ISS_AC12自动 CMD12 错误未发出命令的强制事件
1- 设置命令未被发送的自动 CMD12错误状态被置位
0- 不受影响
W
6Reserved写入无影响,读取为零
R
5FC_AC_RESP_ERR自动 CMD 响应错误的强制事件
1- 自动 CMD 响应错误状态被置位
0- 不受影响
W
4FC_AC_IDX_ERR自动 CMD 索引错误的强制事件
1- 自动 CMD 索引错误状态被置位
0- 不受影响
W
3FC_AC_EBIT_ERR自动 CMD 结束位错误的强制事件
1- 自动 CMD 结束位错误状态已设置
0- 不受影响
W
2FC_AC_CRC_ERR自动 CMD CRC 错误的强制事件
1- 自动 CMD CRC 错误状态被置位
0- 不受影响
W
1FC_AC_TOUT_ERR自动 CMD 超时错误的强制事件
1- 自动 CMD 超时错误状态被置位
0- 不受影响
W
0FC_AC12_NOT_EXEC自动 CMD12 未执行的强制事件
1- 自动 CMD12 未执行状态被置位
0- 不受影响
W

错误中断状态的强制事件寄存器

FORCE_ERROR_INT_STAT_RBASE + 0x52
Bit1514131211109876543210
字段FC_VENDOR_ERR3FC_VENDOR_ERR2FC_VENDOR_ERR1FC_BOOT_ACK_ERRFC_RESP_ERRFC_TUNING_ERRFC_ADMA_ERRFC_AUTO_C_ERRFC_CUR_LMT_ERRFC_D_END_BIT_ERRFC_D_CRC_ERRFC_D_TOUT_ERRFC_C_IDX_ERRFC_C_END_BIT_ERRFC_C_CRC_ERRFC_C_TOUT_ERR
RST0000000000000000
位名称说明RW
15FC_VENDOR_ERR3强制错误中断状态寄存器的第 16 位为保留。它将始终返回 0。
0: 不受影响
1 : 厂商设置特定错误状态
W
14FC_VENDOR_ERR2强制错误中断状态寄存器的第 15 位为保留。它将始终返回 0。
0: 不受影响
1: 厂商设置特定错误状态
W
13FC_VENDOR_ERR1强制错误中断状态寄存器的第 14 位为保留。它将始终返回 0。
0: 不受影响
1: 厂商设置特定错误状态
W
12FC_BOOT_ACK_ERRBootAck 错误的强制事件。
0: 不受影响
1: 厂商设置特定错误状态
W
11FC_RESP_ERR响应错误的强制事件(仅限SD模式)
0: 不受影响
1: 设置响应错误状态
W
10FC_TUNING_ERRtuning错误的强制事件(仅限 UHS-I 模式)
1:设置tuning错误状态
0:不受影响
W
9FC_ADMA_ERR针对 ADMA 错误的强制事件
1:ADMA 错误状态被置位
0:不受影响
W
8FC_AUTO_C_ERR自动 CMD 错误强制事件(仅限 SD/eMMC 模式)
1:自动 CMD 出错状态被置位
0:不受影响
W
7FC_CUR_LMT_ERR电流限值错误的强制事件
1:设置电流限值错误状态
0:不受影响
W
6FC_D_END_BIT_ERR数据结束位错误的强制事件(仅限 SD/eMMC 模式)
1:数据结束位错误状态被置位
0:不受影响
W
5FC_D_CRC_ERR数据 CRC 错误的强制事件(仅限 SD/eMMC 模式)
1:CRC 错误状态被置位
0:不受影响
W
4FC_D_TOUT_ERR数据超时错误的强制事件(仅限 SD/eMMC 模式)
1:设置超时错误状态
0:不受影响
W
3FC_C_IDX_ERR命令索引错误的强制事件(仅限 SD/eMMC 模式)
1:命令索引错误状态被置位
0:不受影响
W
2FC_C_END_BIT_ERR命令结束位错误的强制事件(仅限 SD/eMMC 模式)
1:命令结束位错误状态被置位
0:不受影响
W
1FC_C_CRC_ERR命令 CRC 错误的强制事件(仅限 SD/eMMC 模式)
1:命令 CRC 错误状态被置位
0:不受影响
W
0FC_C_TOUT_ERR命令超时错误的强制事件(仅限 SD/eMMC 模式)
1:命令超时错误状态被置位
0:不受影响
W

ADMA 错误状态寄存器

ADMA_ERR_STAT_RBASE + 0x54
Bit76543210
字段ReservedADMA_LEN_ERRADMA_ERR_STA
RST00000000
位名称说明RW
7:3Reserved写入无影响,读取为零。
R
2ADMA_LEN_ERRADMA 长度不匹配错误状态
在以下情况下会出现此错误:
设置块计数使能时,描述符表指定的数据总长度与块计数和块长度指
定的数据总长度不同。
数据总长度无法除以块长度
0:无错误
1:错误
R
1:0ADMA_ERR_STAADMAError States
ADMA 错误状态
这些位指示 ADMA 数据传输过程中发生错误时的 ADMA 状态。
00b- 停止 DMA-SYS_ADR 寄存器指向下一个错误描述符的位置
01b- 取回描述符 -SYS_ADR 寄存器指向错误描述符
10b- 从未设置此状态 - 未使用
11b- 传输数据 - SYS_ADR 寄存器指向下一个错误描述符的位置
R

ADMA 系统低位地址寄存器

ADMA_SA_LOW_RBASE + 0x58
Bit313029282726252423222120191817161514131211109876543210
字段ADMA_SA_LOW
RST00000000000000000000000000000000
位名称说明RW
31:0ADMA_SA_LOWADMA 系统地址
这些位表示 ADMA 系统地址的低 32 位。
SDMA
如果HostVersion4Enable设置为 1,则该寄存器保存数据位置的系
统地址。
ADMA2
该寄存器保存描述符表中执行命令的字节地址。
ADMA3
该寄存器由 ADMA3 设置。每次获取描述符行时,ADMA2 都会递增
该寄存器中指向下一行的地址。
RW

ADMA 系统高位地址寄存器

ADMA_SA_HIGH_RBASE + 0x5c
Bit313029282726252423222120191817161514131211109876543210
字段ADMA_SA_HIGH
RST00000000000000000000000000000000
位名称说明RW
31:0ADMA_SA_HIGHADMA 系统地址
这些位指示 ADMA 系统地址的高 32 位。
RW

ADMA3 集成描述符地址寄存器 - 低电平

ADMA_ID_LOW_RBASE + 0x78
Bit313029282726252423222120191817161514131211109876543210
字段ADMA_ID_LOW
RST00000000000000000000000000000000
位名称说明RW
31:0ADMA_ID_LOWADMA 集成描述符地址
该位表示 ADMA 集成描述符地址的低 32 位。集成描述符的起始地
址设置为该寄存器。ADMA3 获取一个描述符地址并递增该字段以指
示下一个描述符地址。
RW

ADMA3 集成描述符地址寄存器 - 高电平

ADMA_ID_HIGH_RBASE + 0x7c
Bit313029282726252423222120191817161514131211109876543210
字段ADMA_ID_HIGH
RST00000000000000000000000000000000
位名称说明RW
31:0ADMA_ID_HIGHADMA 集成描述符地址
这些位指示 ADMA 集成描述符地址的高 32 位。
RW

初始化预置值寄存器

PRESET_INIT_RBASE + 0x60
Bit1514131211109876543210
字段DRV_SEL_VALRSVD_13_11CLK_GEN_SEL_VFREQ_SEL_VAL
RST0000000000000000
位名称说明RW
15:14DRV_SEL_VAL驱动强度选择值
这些位表明1.8V信号总线速度模式支持的驱动强度。这些位对3.3V
信号无意义。
取值:
0x0(TYPEB):选择驱动类型B
0x1(TYPEA):选择驱动类型A
0x2(TYPEC):选择驱动类型C
0x3(TYPED):选择驱动类型D
R
13:11RSVD_13_11写入无影响,读取为零。
R
10CLK_GEN_SEL_V时钟生成器选择值
AL 当主机控制器支持可编程时钟生成器时,此位有效。
取值:
0:主机控制器Ver2.0兼容时钟生成器
1:可编程时钟生成器
R
9:0FREQ_SEL_VALSDCLK/RCLK频率选择值
10位预置值,将由主机系统设置的时钟控制寄存器中的
SDCLK/RCLK频率选择字段。
R

DS 模式预置值寄存器

PRESET_DS_RBASE + 0x62
Bit1514131211109876543210
字段DRV_SEL_VALRSVD_13_11CLK_GEN_SEL_VALFREQ_SEL_VAL
RST0000000000000000
位名称说明RW
15:14DRV_SEL_VAL驱动强度选择值
这些位表明1.8V信号总线速度模式支持的驱动强度。在DS模式下
使用3.3V信号时,这些位无意义。
取值:
0x0(TYPEB):选择驱动类型B
0x1(TYPEA):选择驱动类型A
0x2(TYPEC):选择驱动类型C
0x3(TYPED):选择驱动类型D
R
13:11RSVD_13_11写入无影响,读取为零。
R
10CLK_GEN_SEL_VAL时钟生成器选择值
当主机控制器支持可编程时钟生成器时,此位有效。
取值:
0:主机控制器Ver2.0兼容时钟生成器
1:可编程时钟生成器
R
9:0FREQ_SEL_VALSDCLK/RCLK频率选择值
10位预置值,将由主机系统设置的时钟控制寄存器中的
SDCLK/RCLK频率选择字段。
R

HS 模式预置值寄存器

PRESET_HS_RBASE + 0x64
Bit1514131211109876543210
字段DRV_SEL_VALRSVD_13_11CLK_GEN_SEL_VALFREQ_SEL_VAL
RST0000000000000000
位名称说明RW
15:14DRV_SEL_VAL驱动强度选择值
这些位表明1.8V信号总线速度模式支持的驱动强度。在HS模式下
使用3.3V信号时,这些位无意义。
取值:
0x0(TYPEB):选择驱动类型B
0x1(TYPEA):选择驱动类型A
0x2(TYPEC):选择驱动类型C
0x3(TYPED):选择驱动类型D
R
13:11RSVD_13_11写入无影响,读取为零。
R
10CLK_GEN_SEL_VAL时钟生成器选择值
当主机控制器支持可编程时钟生成器时,此位有效。
取值:
0:主机控制器Ver2.0兼容时钟生成器
1:可编程时钟生成器
R
9:0FREQ_SEL_VALSDCLK/RCLK频率选择值
10位预置值,将由主机系统设置的时钟控制寄存器中的
SDCLK/RCLK频率选择字段。
R

SDR12模式预置值寄存器

PRESET_SDR12_RBASE + 0x66
Bit1514131211109876543210
字段DRV_SEL_VALRSVD_13_11CLK_GEN_SEL_VALFREQ_SEL_VAL
RST0000000000000000
位名称说明RW
15:14DRV_SEL_VAL驱动强度选择值
这些位表明SDR12总线速度模式支持的驱动强度。当使用3.3V信
号时,这些位无意义。
取值:
0x0(TYPEB):选择驱动类型B
0x1(TYPEA):选择驱动类型A
0x2(TYPEC):选择驱动类型C
0x3(TYPED):选择驱动类型D
R
13:11RSVD_13_11写入无影响,读取为零。
R
10CLK_GEN_SEL_VAL时钟生成器选择值
当主机控制器支持可编程时钟生成器时,此位有效。
取值:
0:主机控制器Ver2.0兼容时钟生成器
1:可编程时钟生成器
R
9:0FREQ_SEL_VALSDCLK/RCLK频率选择值
10位预置值,将由主机系统设置的时钟控制寄存器中的
SDCLK/RCLK频率选择字段。
R

SDR25模式预置值寄存器

PRESET_SDR25_RBASE + 0x68
Bit1514131211109876543210
字段DRV_SEL_VALRSVD_13_11CLK_GEN_SEL_VALFREQ_SEL_VAL
RST0000000000000000
位名称说明RW
15:14DRV_SEL_VAL驱动强度选择值
这些位表明SDR25总线速度模式支持的驱动强度。当使用3.3V信
号时,这些位无意义。
取值:
0x0(TYPEB):选择驱动类型B
0x1(TYPEA):选择驱动类型A
0x2(TYPEC):选择驱动类型C
0x3(TYPED):选择驱动类型D
R
13:11RSVD_13_11写入无影响,读取为零。
R
10CLK_GEN_SEL_VAL时钟生成器选择值
当主机控制器支持可编程时钟生成器时,此位有效。
取值:
0:主机控制器Ver2.0兼容时钟生成器
1:可编程时钟生成器
R
9:0FREQ_SEL_VALSDCLK/RCLK频率选择值
10位预置值,将由主机系统设置的时钟控制寄存器中的
SDCLK/RCLK频率选择字段。
R

SDR50模式预置值寄存器

PRESET_SDR50_RBASE + 0x6a
Bit1514131211109876543210
字段DRV_SEL_VALRSVD_13_11CLK_GEN_SEL_VALFREQ_SEL_VAL
RST0000000000000000
位名称说明RW
15:14DRV_SEL_VAL驱动强度选择值
这些位表明SDR50总线速度模式支持的驱动强度。当使用3.3V信
号时,这些位无意义。
取值:
0x0(TYPEB):选择驱动类型B
0x1(TYPEA):选择驱动类型A
0x2(TYPEC):选择驱动类型C
0x3(TYPED):选择驱动类型D
R
13:11RSVD_13_11写入无影响,读取为零。
R
10CLK_GEN_SEL_VAL时钟生成器选择值
当主机控制器支持可编程时钟生成器时,此位有效。
取值:
0:主机控制器Ver2.0兼容时钟生成器
1:可编程时钟生成器
R
9:0FREQ_SEL_VALSDCLK/RCLK频率选择值
10位预置值,将由主机系统设置的时钟控制寄存器中的
SDCLK/RCLK频率选择字段。
R

SDR104模式预置值寄存器

PRESET_SDR104_RBASE + 0x6c
Bit1514131211109876543210
字段DRV_SEL_VALRSVD_13_11CLK_GEN_SEL_VALFREQ_SEL_VAL
RST0000000000000000
位名称说明RW
15:14DRV_SEL_VAL驱动强度选择值
这些位表明SDR104总线速度模式支持的驱动强度。当使用3.3V信
号时,这些位无意义。
取值:
0x0(TYPEB):选择驱动类型B
0x1(TYPEA):选择驱动类型A
0x2(TYPEC):选择驱动类型C
0x3(TYPED):选择驱动类型D
R
13:11RSVD_13_11写入无影响,读取为零。
R
10CLK_GEN_SEL_VAL时钟生成器选择值
当主机控制器支持可编程时钟生成器时,此位有效。
取值:
0:主机控制器Ver2.0兼容时钟生成器
1:可编程时钟生成器
R
9:0FREQ_SEL_VALSDCLK/RCLK频率选择值
10位预置值,将由主机系统设置的时钟控制寄存器中的
SDCLK/RCLK频率选择字段。
R

DDR50模式预置值寄存器

PRESET_DDR50_RBASE + 0x6e
Bit1514131211109876543210
字段DRV_SEL_VALRSVD_13_11CLK_GEN_SEL_VALFREQ_SEL_VAL
RST0000000000000000
位名称说明RW
15:14DRV_SEL_VAL驱动强度选择值
这些位表明DDR50总线速度模式支持的驱动强度。当使用3.3V信
号时,这些位无意义。
取值:
0x0(TYPEB):选择驱动类型B
0x1(TYPEA):选择驱动类型A
0x2(TYPEC):选择驱动类型C
0x3(TYPED):选择驱动类型D
R
13:11RSVD_13_11写入无影响,读取为零。
R
10CLK_GEN_SEL_VAL时钟生成器选择值
当主机控制器支持可编程时钟生成器时,此位有效。
取值:
0:主机控制器Ver2.0兼容时钟生成器
1:可编程时钟生成器
R
9:0FREQ_SEL_VALSDCLK/RCLK频率选择值
10位预置值,将由主机系统设置的时钟控制寄存器中的
SDCLK/RCLK频率选择字段。
R

UHS2 模式预置值寄存器

PRESET_UHS2_RBASE + 0x74
Bit1514131211109876543210
字段DRV_SEL_VALRSVD_13_11CLK_GEN_SEL_VALFREQ_SEL_VAL
RST0000000000000000
位名称说明RW
15:14DRV_SEL_VAL驱动强度选择值
这些位表明SD模式下1.8V信号总线速度模式支持的驱动强度值。
0x0(TYPEB):选择驱动类型B
0x1(TYPEA):选择驱动类型A
0x2(TYPEC):选择驱动类型C
0x3(TYPED):选择驱动类型D
R
13:11RSVD_13_11写入无影响,读取为零。
R
10CLK_GEN_SEL_VAL时钟生成器选择值
当主机控制器支持可编程时钟生成器时,此位有效。
取值:
0:主机控制器Ver2.0兼容时钟生成器
1:可编程时钟生成器
R
9:0FREQ_SEL_VALSDCLK/RCLK频率选择值
10位预置值,将由主机系统设置的时钟控制寄存器中的
SDCLK/RCLK频率选择字段。
R

插槽中断状态寄存器

SLOT_INTR_STATUS_RBASE + 0xfc
Bit1514131211109876543210
字段ReservedINTR_SLOT
RST0000000000000000
位名称说明RW
15:8Reserved写入无影响,读取为零。
R
7:0INTR_SLOT各插槽的中断信号
这些状态位指示每个插槽的中断信号和唤醒信号的逻辑 OR。最多可定义 8
个插槽。如果一个中断信号与多个插槽相关联,主机驱动程序可通过读取这
些状态位来了解哪个中断发生。通过上电复位或设置软件全部复位,中断信
号将被无效,该状态读数为 00h。
...
...
R

主机控制器版本寄存器

HOST_CNTRL_VERS_RBASE + 0xfe
Bit1514131211109876543210
字段VENDOR_VERSION_NUMSPEC_VERSION_NUM
RST0000000000000000
位名称说明RW
15:8VENDOR_VERSION_NUMVendor版本编号,不可配置。
R
7:0SPEC_VERSION_NUMHostController协议版本编号,不可配置。
R

MSHC版本 ID寄存器

MSHC_VER_ID_RBASE + 0x500
Bit313029282726252423222120191817161514131211109876543210
字段MSHC_VER_ID
RST00000000000000000000000000000000
位名称说明RW
31:0MSHC_VER_ID当前发布版本号
此字段指示由应用程序读取的Synopsys DesignWare内核
DWC_mshc/DWC_mshc_lite当前发布版本号。
应用程序读取此寄存器并结合MSHC_VER_TYPE_R寄存器,可获取当前发
布的详细信息。
MSHC版本类型寄存器(MSHC_VER_TYPE_R,0x500+0x4)
R

MSHC版本类型寄存器

MSHC_VER_TYPE_RBASE + 0x500 + 0x4
Bit313029282726252423222120191817161514131211109876543210
字段MSHC_VER_TYPE
RST00000000000000000000000000000000
位名称说明RW
31:0MSHC_VER_TYPE当前发布类型
此字段指示由应用程序读取的Synopsys DesignWare内核
DWC_mshc/DWC_mshc_lite当前发布类型。
应用程序读取此寄存器并结合MSHC_VER_ID_R寄存器,可获取当前发布的
详细信息。
MSHC控制寄存器 (MSHC_CTRL_R, 0x500+0x8)
R

MSHC控制寄存器

MSHC_CTRL_RBASE + 0x500 + 0x8
Bit76543210
字段RSVDSW_CG_DISRSVDCMD_CONFILC
RST00000000
位名称说明RW
7:5RSVD写入无影响,读取为零。
R
4SW_CG_DIS内部时钟门控取消控制位
在需要时,该字段必须用于取消IP的内部时钟门控。当被取消时,时钟
并未被屏蔽掉。当编程该位时到达核的时钟(除hclk)必须被停止。
0:内部时钟有效,时钟门控由内部控制
1:内部时钟门控无效,时钟不会被内部屏蔽。
RW
3:1RSVD写入无影响,读取为零。
R
0CMD_CONFILC命令冲突检查
T_CHECK 该位使能命令冲突检查
msc控制器在发送命令时会持续监控CMD线,并通过检测sd_cmd_out
端口的驱动值是否与cclk_tx下一边沿处的sd_cmd_in输入值一致,来
判断是否存在命令冲突错误。该位仅在反馈延迟(包括IO PAD延迟)
大于(t_card_clk_period-t_setup)时被清除,t_setup为msc控制器中的
寄存器建立时间。IOPAD延迟在CMD和DATA线之间保持一致,并且
始终处于(2*t_card_clk_period -t_setup)范围内。
eMMC 控制寄存器 (EMMC_CTRL_R, 0x500+0x2c)
RW

eMMC 控制寄存器

EMMC_CTRL_RBASE + 0x500 + 0x2c
Bit1514131211109876543210
字段ReservedCQE_PREFETCH_CQE_ALGO_SELReservedEMMC_RST_N_OEEMMC_RST_NDISABLE_DATA_CCARD_IS_EMMC
RST0000000000000000
位名称说明RW
15:11Reserved写入无影响,读取为零。
R
10CQE_PREFETCH_使能或禁用 CQE 的数据预取功能
DISABLE 此字段设置为 1 时,软件可禁用 CQE 的数据预取功能。
0:数据预取已使能
1:禁用数据预取功能
RW
9CQE_ALGO_SEL选择执行的调度算法
该位选择用于从众多准备就绪的任务中选择一个执行的算法。
0:高优先级任务优先于普通优先级任务。DBR rings的顺序(先到
先服务)用于解决同等优先级任务之间的争夺。
1:先到先得,DBR环的顺序决定任务的优先执行顺序
RW
8:4Reserved写入无影响,读取为零。
R
3EMMC_RST_N_OEeMMC卡复位信号PAD输出使能控制
该位驱动msc控制器的sd_rst_n_oe输出
1:sd_rst_n_oe为1
0:sd_rst_n_oe为0
RW
2EMMC_RST_NeMMC卡复位信号
该位驱动msc控制器的sd_rst_n输出
1:无效
0:有效
RW
1DISABLE_DATA_C禁用数据 CRC 校验
RC_CHK 该位控制屏蔽 eMMC 模式下写入卡的 CRC16 错误。这对 eMMC
设备的总线测试 (CMD19) 非常有用。在总线测试中,eMMC 卡不
发送块的 CRC 状态,这可能会产生 CRC 错误。在总线测试期间,
可使用该位屏蔽 CRC 错误。
1:禁用数据 CRC 校验
0:使能数据 CRC 校验
RW
0CARD_IS_EMMC存在 eMMC 卡
该位表示所连接卡的类型。应用程序可根据连接到 MSHC 的卡对该
位进行编程。
1:eMMC 卡
0:非 eMMC 卡
校准/自动校准控制寄存器 (AT_CTRL_R, 0x500+0x40)
RW

校准/自动校准控制寄存器

AT_CTRL_RBASE + 0x500 + 0x40
Bit313029282726252423222120191817161514131211109876543210
字段ReservedSWIN_TH_ReservedPOST_CHAPRE_CHANTUNE_CLK_STOP_ENReservedSW_TUNE_RPT_TUNE_ERRSWIN_TH_Reserved
RST00000000000000000000000000000000
位名称说明RW
31:27Reserved写入无影响,读取为零。
R
26:24SWIN_TH_采样窗口阈值设置
VAL 此处可设置的最大数值取决于用于校准的delayline长度。例如,8阶delayline
可使用0x0到0x7的值。
该位仅在SWIN_TH_EN=1时有效,仅在SAMPLE_CLK_SEL=0时可编程。
0x0:阈值为1,长度为1阶及以上的窗口可被选作为采样窗口。
0x1:阈值为2,长度为2阶及以上的窗口可被选作为采样窗口。
0x2:阈值为3,长度为3阶及以上的窗口可被选作为采样窗口。
......
0x7:阈值为0x7,长度为8阶及以上的窗口可被选作为采样窗口。
RW
23:21Reserved写入无影响,读取为零。
R
20:19POST_CHA相位切换和稳定时钟输出所需的时间。
NGE_DLY 在tuning_cclk_sel或者autotuning_cclk_sel改变之后,指定delayline切换
输出相位所需的最大时间(以cclk周期的形式)。
0x0(LATENCY_LT_1):低于1个周期的延迟
0x1(LATENCY_LT_2):低于2个周期的延迟
0x2(LATENCY_LT_3):低于3个周期的延迟
0x3(LATENCY_LT_4):低于4个周期的延迟
RW
18:17PRE_CHANcclk_tx与cclk_rx之间的最大延迟
GE_DLY 0x0(LATENCY_LT_1):低于1个周期的延迟
0x1(LATENCY_LT_2):低于2个周期的延迟
0x2(LATENCY_LT_3):低于3个周期的延迟
0x3(LATENCY_LT_4):低于4个周期的延迟
RW
16TUNE_CLK_STOP_EN校准/自动校准电路时钟控制。
使能之后,msc控制器的时钟门控输出端(clk2card_on)会在tuning_clk_sel、
autotuning_clk_sel的相位调整码改变之前拉低。这将有效停止卡工作时钟、
cclk_rx以及drift_cclk_rx。在关掉时钟之后再调整相位可以避免毛刺。如果
PHY/delayline可以保证无毛刺转换,则可以把该位置0。
0x1:在相位码改变期间停止时钟
0x0:时钟不会停止,PHY确保不会产生毛刺。
RW
15:5Reserved写入无影响,读取为零。
R
4SW_TUNE_该位使能软件管理的校准流程。
EN 0x1:软件管理校准使能。AT_STAT_R.CENTER_PH_CODE位可写入。
0x0:软件管理校准无效。
RW
3RPT_TUNE_ERRFrameerr在执行校准期间不会生成。该debug位用于报告这些错误
0x1:用于报告frameerr的debug模式。
0x0:默认模式,不会报告错误。
2SWIN_TH_采样窗口阈值使能,用于选择校准模式。该位仅在SAMPLE_CLK_SEL=0
EN 时可编程。
0x1:校准时选择第一个完整的满足SWIN_TH_VAL所定义的阈值的采样窗
口。
0x0:采样时遍历完整的delayline,选择长度最大的采样窗口。
RW
1:0Reserved写入无影响,读取为零。
校准/自动校准状态寄存器 (AT_STAT_R, 0x500+0x44)
R

tuning /auto-tuning 状态寄存器

AT_STAT_RBASE + 0x500 + 0x44
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPH_SEL_C
RST00000000000000000000000000000000
位名称说明RW
31:3Reserved写入无影响,读取为零。
R
2:0PH_SEL_C自动校准时采样窗口中心相位,反应在msc控制器的tuning_cclk_sel输出
ODE 端口上。
低功耗控制寄存器 (LP_CTRL_R, 0x500+0x50)
RW

低功耗控制寄存器

LP_CTRL_RBASE + 0x500 + 0x50
Bit313029282726252423222120191817161514131211109876543210
字段ReservedLP_TH_VALLP_TH_ENLP_CNT
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved写入无影响,读取为零。
R
15:8LP_TH_VAL写等待阈值寄存器。当MSC写卡时,在DMA等待DDR返回数据期间,当
缓存RAM中的写数据量大于XFER_BLOCK_SIZE -LP_TH_VAL时,打开
卡的时钟,否则关闭卡的时钟。仅在LP_TH_EN=1时有效。
RW
7LP_TH_EN写等待阈值使能寄存器。
0x0(DISABLE):写等待期间一直打开时钟;
0x1(ENABLE):写等待期间根据缓存RAM存储的写数据量判断是否打开
时钟。
RW
6:0LP_CNT当卡处于空闲状态时,MSC 会在 LP_CNT 个周期之后关闭卡时钟。仅在
CARD_LP_EN=1时有效。
RW