USER GUIDE / MEMORY / EMMC SD / REGISTER DESCRIPTION
寄存器描述
SDMA 系统地址寄存器
SDMASA_RBASE + 0x00
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | BLOCKC | 32 位块计数(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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15 | Reserved | 写入无影响,读取为零。 | R |
| 14:12 | SDMA_BUF_BDARY | SDMA 缓冲区边界 这些位指定了系统内存中连续缓冲区的大小。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:0 | XFER_BLOCK_SIZE | 传输块大小 该寄存器指定数据传输的块大小。如果是内存卡,应将其设置为 512 字节。只有在没有事务执行的情况下才能访问该寄存器。传输过程 中的读操作可能会返回无效值,写操作将被忽略。 0x0- 无数据传输 0x1-1 个字节 0x2-2 个字节 0x3-3 个字节 ...-... 0x1FF-511 字节 0x200-512 字节 ...-... 0x800-2048 字节 对于数据传输,该寄存器必须被配置为非零值。 | RW |
数据块计数寄存器
BLOCKCOUNT_RBASE + 0x06
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:0 | BLOCK_CNT | 16 位块计数 如果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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | ARGUMENT | 命令参数,SD/eMMC 命令参数指定为命令格式的第 39-8 位。 | RW |
传输模式寄存器
XFER_MODE_RBASE + 0x0C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:9 | Reserved | 写入无影响,读取为零。 | R |
| 8 | RESP_INT_DIS | 响应中断禁用 主机控制器支持响应检查功能,以避免主机驱动器检查响应错误的开 销。控制器只能检查 R1 和 R5。如果主机驱动程序检查响应错误, 则将该位设置为 0,等待Command Complete Interrupt,然后检查 响应寄存器。如果主机控制器检查响应错误,则将该位设置为 1,并 将ResponseErrorCheckEnable设置为 1。无论命令完成信号使能 与否,CommandComplete Interrupt都会被该位禁用。 0-使能响应中断 1- 响应中断禁用 在执行tuning时(当HostControl2 寄存器中的ExecuteTuning位 被设置时),无论ResponseInterruptDisable设置如何,都不会产 生命令完成中断。 | RW |
| 7 | RESP_ERR_CHK_ | 使能响应错误检查,主机控制器支持响应检查功能,以避免主机驱动 EN 程序进行响应错误检查的开销。控制器只能检查 R1 和 R5。如果主 机控制器检查响应错误,则将该位设置为 1,并将响应中断禁用设置 为 1。 如果检测到错误,则在错误中断状态寄存器中产生响应错误 中断。 1- 使能响应错误检查 0- 响应错误检查禁用 1. 除 R1 和 R5 外,不应为任何其他响应类型使能响应错误检查。 2. 不应为tuning命令使能响应检查。 | RW |
| 6 | RESP_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 |
| 5 | MULTI_BLK_SEL | 多块/单块选择,使用 DAT 线路发出多块传输命令时设置该位。如果 该位设置为 0,则无需设置BlockCountregister。 1- 多区块 0- 单块 | RW |
| 4 | DATA_XFER_DIR | 数据传输方向选择,该位定义 DAT 线路数据传输的方向。当数据从 SD/eMMC 卡传输到主机控制器时,主机驱动程序将该位设置为 1, 而对于所有其他命令,该位设置为 0。 1- 卡至主机 0- 主机至卡 | RW |
| 3:2 | AUTO_CMD_EN | 使能自动命令,此字段决定自动命令功能的使用。 00b- 禁用自动命令 01b- 使能自动 CMD12 10b- 使能自动 CMD23 11b- 自动 CMD 自动选择 在 SDIO 中,该字段应设置为 00b(禁用自动命令)。 | RW |
| 1 | BLK_CNT_EN | 块计数使能,该位用于使能BlockCountregister,这与多块传输有关。 当该位为 0 时,BlockCountregister被禁用,这在执行无限传输时 非常有用。 1-使能 0- 禁用 | RW |
| 0 | DMA_EN | DMA 使能,该位用于使能 DMA 功能。如果该位设置为 1,则当主 机驱动程序向命令寄存器写入数据时,DMA 操作开始。您可以通过 HostControl1 寄存器中的 DMA 选择来选择其中一种 DMA 模式。 1-DMA 数据传输 0- 无数据传输或非 DMA 数据传输 | RW |
命令寄存器
CMD_RBASE + 0x0E
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:14 | Reserved | 写入无影响,读取为零。 | R |
| 13:8 | CMD_INDEX | 命令索引,这些位应设置为命令格式第 45-40 位指定的命令编 号。 | RW |
| 7:6 | CMD_TYPE | 命令类型,这些位表示命令类型。 当使用CMD12/CMD52发送AbortCMD或使用CMD0/CMD52 发送ResetCMD,应将CMD_CYPE设置为0x3。CMD0用于 初始化时,应设置为0x0。 00b- 正常命令 01b- 挂起命令 10b- 恢复命令 11b- 终止命令 | RW |
| 5 | DATA_PRES_SEL | 数据存在选择,该位设置为 1 表示数据存在,应使用 DAT 线 传输数据。 0- 无数据 1- 数据存在 在下列情况下,该位设置为 0: 仅使用 CMD 线的命令 没有数据传输但使用 DAT[0] 线busy信号的命令 恢复命令 | RW |
| 4 | CMD_IDX_CHK_EN | 命令索引检查使能,如果设置了该位,主机控制器将检查响应 中的索引字段,以确认其值是否与命令索引相同。如果不是, 则报告为命令索引错误。 0-禁用 1-使能 对于无响应、R2 响应、R3 响应和 R4 响应的命令,应将索 引检查使能设置为 0。 对于tuning command,应始终设置该位以使能索引检查。 | RW |
| 3 | CMD_CRC_CHK_EN | CommandCRCCheckEnable(使能命令 CRC 校验),如果 设置了该位,主机控制器将检查响应中的 CRC 字段。如果检 测到错误,则报告为命令 CRC 错误。 0- 禁用 1- 使能 - 对于无响应、R3 响应和 R4 响应的命令,CRC 校验使能应 设置为 0。 - 对于tuningcommand,该位应始终设置为 1 以使能 CRC 校验。 | RW |
| 2 | SUB_CMD_FLAG | 子命令标志,该位用于区分主命令或子命令。 0- 主命令 1- 子命令 | RW |
| 1:0 | RESP_TYPE_SEL | 响应类型选择,该位指示预期从卡得到的响应类型。 00b- 无响应 01b- 响应长度 136 10b- 响应长度 48 11b- 响应长度 48 检查(响应后busy) | RW |
响应寄存器 0/1
RESP01_RBASE + 0x10
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | RESP01 | 命令响应,这些位反映响应字段的第 39-8 位。 对于自动 CMD,32 位响应(响应字段的第 39-8 位)在 RESP67_R 寄存 器中更新。 | R |
响应寄存器 2/3
RESP23_RBASE + 0x14
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | RESP23 | 命令响应,这些位反映了响应字段的第 71-40 位。 | R |
响应寄存器 4/5
RESP45_RBASE + 0x18
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | RESP45 | 命令响应,这些位反映了响应字段的 103-72 位。 | R |
响应寄存器 6/7
RESP67_RBASE + 0x1C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | RESP67 | 命令响应,这些位反映响应字段的 135-104 位。 对于自动 CMD,该寄存器还反映 32 位响应(响应字段的第 39-8 位)。 | R |
缓冲区数据端口寄存器
BUF_DATA_RBASE + 0x20
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | BUF_DATA | 缓冲区数据,可通过此 32 位缓冲区数据端口寄存器访问主机控制器数 据包缓冲区。 | RW |
当前状态寄存器
PSTATE_REGBASE + 0x24
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:29 | Reserved | 写入无影响,读取为零。 | R |
| 28 | SUB_CMD_STAT | 子命令状态,该状态用于区分主命令和子命令状态。 0:主命令状态 1:子命令状态 | R |
| 27 | CMD_ISSU_ERR | 错误未发出命令,如果在设置命令寄存器后因错误(自动 CMD12 错误除外)而无法发出命令,则设置该位。 0:无错误可发出命令 1:无法发出命令 | R |
| 26 | Reserved | 写入无影响,读取为零。 | R |
| 25 | HOST_REG_VOL | 主机稳压器电压稳定,该状态用于检查主机稳压器电压是否稳定, 以便切换 UHS-I 模式的电压。 该位反映 host_reg_vol_stablepin 的同步值。 0:主机稳压器电压不稳定 1:主机稳压器电压稳定 | R |
| 24 | CMD_LINE_L | 命令行信号电平(仅限 SD/eMMC 模式) 该状态用于检查 CMD 线路电平,以便从错误中恢复和进行调试。 这些位反映了 sd_cmd_in 引脚的值。它与 UHS-II 模式无关,始 终返回 0。 | R |
| 23:20 | DAT_3_0 | DAT[3:0] 线路信号电平(仅限 SD/eMMC 模式) 该状态用于检查 DAT 线路电平,以便从错误中恢复并进行调试。 这些位反映了 sd_dat_in(下位)引脚的值。 | R |
| 19:12 | Reserved | 写入无影响,读取为零。 | R |
| 11 | BUF_RD_EN | 缓冲区读取使能 该状态用于非 DMA 传输。如果主机缓冲区中存在有效数据,则设 置该位。 0:禁用读取 1:读取使能 | R |
| 10 | BUF_WR_EN | 缓冲区写入使能,该状态用于非 DMA 传输。如果有写入数据的空 间,则设置该位。 0:禁用写入 1:使能写入功能 | R |
| 9 | RD_XFER_ACT | 读取传输有效(仅限 SD/eMMC 模式) 该状态表示读取传输是否有效。它与 UHS-II 模式无关,始终返回 0。 0:无有效数据 1:正在传输数据 | R |
| 8 | WR_XFER_ACT | 写入传输有效(仅限 SD/eMMC 模式) 该状态表示写入传输是否有效。 0:无有效数据 1:正在传输数据 | R |
| 7:4 | DAT_7_4 | DAT[7:4] 线路信号电平(仅限嵌入式) 该状态用于检查 DAT 线路电平,以便从错误中恢复并进行调试。 这些位反映了 sd_dat_in(上位数)引脚的值。 | R |
| 3 | RE_TUNE_REQ | 重新tuning请求(仅限 UHS-I) msc控制器不生成retuning请求。软件必须设置retuning timer。 | R |
| 2 | DAT_LINE_ACT | DAT 线有效(仅限 SD/eMMC 模式) 该位指示 SD/eMMC 总线上的一条 DAT 线路是否正在使用。该 位与 UHS-II 模式无关。 在读取事务中,该状态指示 SD/eMMC 总线上是否正在执行读取 传输。 对于写事务,该状态表示 SD/eMMC 总线上是否正在执行写传输。 对于繁忙命令,该状态表示 SD/eMMC 总线上是否正在执行繁忙 命令。 0:DAT 线无效 1:DAT 线有效 | R |
| 1 | CMD_INH_DAT | 命令禁止(DAT)(仅限 SD/eMMC 模式) 如果 DAT 线有效或读传输有效设置为 1,则产生该状态位。如果 该位为 0,则表示主机控制器可以发出后续的 SD/eMMC 命令。 0:可以发出使用 DAT 线的命令 1:不能发出使用 DAT 线的命令 | R |
| 0 | CMD_INH | 命令禁止 (CMD) 在 SD/eMMC 模式下,如果该位为 0,则表示 CMD 线路未被使 用,主机控制器可使用 CMD 线路发出 SD/eMMC 命令。写入命 令寄存器时,该位被置位。收到命令响应后,该位清零。自动 CMD12/23 的响应不会清除该位,但读/写命令的响应会清除该位。 0:主机控制器已准备好发布命令 1:主机控制器尚未准备好发出命令 | R |
主机控制寄存器 1
HOST_CTRL1_RBASE + 0x28
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:8 | Reserved | 写入无影响,读取为零。 | R |
| 7 | CARD_DETEC | 卡检测信号选择 T_SIG_LVL 该位用于选择卡检测信号源 0- 选择 card_detect_n 引脚(用于正常使用) 1- 选择卡检测测试电平(用于测试目的) | |
| 6 | CARD_DETEC | 卡检测测试电平 T_TEST_LVL 当卡检测单选设置为 1 时,使能该位,它表示卡是否插入 0- 无卡 1- 已插入卡 | RW |
| 5 | EXT_DAT_XF | 扩展数据传输宽度(仅限嵌入式和 SD/eMMC 模式) ER 该位控制嵌入式设备的 8 位总线宽度模式。该位不适用于 UHS-II 模 式。 0- 总线宽度由数据传输宽度选择 1- 8 位总线宽度 | RW |
| 4:3 | DMA_SEL | DMA 选择,该字段用于选择 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 |
| 2 | HS_EN | 高速使能(仅限 SD/eMMC 模式) 在设置该位之前,主机驱动程序应检查Capabilitiesregister中的 “高 速支持”。该位用于确定高速模式的预设值选择。该位对 UHS-II 模式 无效。 0- 正常速度模式 1- 高速模式 备注: MSC 始终在 cclk_tx 时钟的上升沿输出 sd_cmd_out 和 sd_dat_out 线路,与该位无关。 | RW |
| 1 | DAT_XFER_W | 数据传输宽度(仅限 SD/eMMC 模式) 该位用于选择主机控制器的数据宽度。主机驱动程序应将其设置为与 SD/eMMC 卡的数据宽度一致。 0- 1 位模式 1- 4 位模式 | RW |
| 0 | Reserved | 保持默认 | RW |
电源控制寄存器
PWR_CTRL_RBASE + 0x29
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:8 | Reserved | 写入无影响,读取为零。 | R |
| 7:5 | SD_BUS_VOL_VDD2 | VDD2 的 SD 总线电压选择(仅限 UHS-II)。 该字段决定 VDD2 的供电电压范围。如果 Capabilitiesregister中的 1.8V VDD2 支持设置为 1,则该字段可设置为 101b。 111b- 未使用 110b- 未使用 101b- 1.8V 100b- 保留为 1.2V 011b- 001b - 保留 000b- 不支持 VDD2 | RW |
| 4 | SD_BUS_PW | 用于 VDD2 的 SD 总线电源(仅限 UHS-II)。 R_VDD2 该位使能提供 VDD2。 1- 接通电源 0- 关闭电源 | RW |
| 3:1 | SD_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 |
| 0 | SD_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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:4 | Reserved | 写入无影响,读取为零。 | R |
| 3 | INT_AT_BGAP | 块间隙中断(仅限 SD 模式) 该位仅在 SDIO 卡的 4 位模式下有效,用于选择中断周期中 的采样点。设置为 1 可在多块传输的块间隙处进行中断检测。 0- 禁用 1- 使能 | RW |
| 2 | RD_WAIT_CTRL | 读取等待控制(仅限 SD 模式) 如果存储卡支持读取等待,该位用于使能读取等待协议,使用 DAT[2] 线停止读取数据。 否则,主机控制器必须停止卡时钟以保持读取数据。在 UHS-II 模式下,读取等待被禁用。 0- 禁用读取等待控制 1- 使能读取等待控制 | RW |
| 1 | CONT_REQ | 继续请求 该位用于重新启动使用 “Stop AtBlockGap Request”停止的事 务。当事务重新开始时,主机控制器会自动清除该位。 0- 不影响 1- 重新启动 | RW |
| 0 | STOP_BG_REQ | 块间隙停止请求 对于非 DMA、SDMA 和 ADMA 传输,该位用于在下一个块 间隙停止执行读写事务。 0- 传输 1- 停止 | RW |
唤醒控制寄存器
WUP_CTRL_RBASE + 0x2b
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 7:3 | Reserved | 写入无影响,读取为零。 | R |
| 2 | CARD_REM | SD卡移除时的唤醒事件使能 OVAL 此位使能通过正常中断状态寄存器中的卡移除断言产生的唤醒事件。对于 SDIO卡,CIS寄存器中的唤醒支持(FN_WUS)不影响此位。 取值: 0:禁用 1:使能 | RW |
| 1 | CARD_INSE | SD卡插入时的唤醒事件使能 RT 此位使能通过正常中断状态寄存器中的卡插入断言产生的唤醒事件。CIS 寄存器中的FN_WUS(唤醒支持)不影响此位。 取值: 0:禁用 1:使能 | RW |
| 0 | CARD_INIT | 卡中断时的唤醒事件使能 此位使能通过正常中断状态寄存器中的卡中断断言产生的唤醒事件。当 CIS寄存器中的FN_WUS(唤醒支持)设置为1时,此位可设置为1。 取值: 0:禁用 1:使能 | RW |
时钟控制寄存器
CLK_CTRL_RBASE + 0x2c
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:5 | Reserved | 写入无影响,读取为零。 | R |
| 4 | CARD_LP_EN | SD/eMMC卡低功耗使能。 该位不可用于SD/eMMC卡的初始化阶段。 0-卡的时钟一直开启 1-卡在IDLE状态时时钟会被关闭 | RW |
| 3 | PLL_ENABLE | PLL 使能 该位用于有效 PLL(HostVersion 4Enable= 1 时适用)。当Host Version4Enable =0时,INTERNAL_CLK_EN位可用于有效PLL。 该值反映在 card_clk_en 引脚上。 HostVersion4Enable=1且该位未被用于有效PLL时,推荐将该位设 置位1。 0- PLL 处于低功耗模式 1- PLL 使能 | RW |
| 2 | SD_CLK_EN | SD/eMMC 时钟使能 该位设置为 0 时,将停止 SDCLK 或 RCLK。 该位设置为 0 时,可 更改 SDCLK/RCLK 频率选择,其值将反映在 clk2card_on 引脚上。 0- 禁用提供 SDCLK/RCLK 1- 使能提供 SDCLK/RCLK | RW |
| 1 | INTERNAL_C | 内部时钟状态 LK_STABLE 在设置内部时钟使能(InternalClock Enable)和 PLL 使能(PLL Enable)后,主机驱动程序通过该状态两次检查时钟稳定性。该位反映 内部时钟使能设置为 1 后 intclk_stable 引脚的同步值,以及 PLL 使 能设置为 1 后 card_clk_stable 引脚的同步值。 0- 未就绪 1- 就绪 | R |
| 0 | INTERNAL_C | 内部时钟使能 LK_EN 当主机驱动程序不使用主机控制器或主机控制器等待唤醒中断时,该位 被设置为 0。 主机控制器应停止内部时钟,进入低功耗状态。不过,寄存器时钟仍可 读写。该值反映在 intclk_en 引脚上。 当该位未被用于控制内部时钟(baseclock、managerclock)时,建议将 该位设置为1。 0- 停止 1- 振荡 | RW |
超时控制寄存器
TOUT_CTRL_RBASE + 0x2e
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 7:4 | Reserved | 写入无影响,读取为零。 | R |
| 3:0 | TOUT_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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 7:3 | Reserved | 写入无影响,读取为零。 | R |
| 2 | SW_RST_DAT | DAT 线软件复位(仅限 SD/eMMC 模式) 该位只复位部分数据电路,DMA 电路也会复位。 1- 复位 0- 工作 该位将清除下列寄存器和位: Buffer 数据端口寄存器 - 缓冲器被清零并初始化。 当前状态寄存器 - 缓冲区读使能 - 缓冲区写使能 - 读传输有效 - 写传输有效 -DAT 线路有效 - 命令抑制 (DAT) 块间隙控制寄存器 - 继续请求 - 在块间隙请求停止 正常中断状态寄存器 - 缓冲区读就绪 - 缓冲区写就绪 -DMA 中断 - 块间隙事件 -传输完成 | RW |
| 1 | SW_RST_CMD | CMD 线的软件复位 仅复位命令电路的一部分,以便能够发出命令。它还用于初始化 UHS-II 命令电路。该复位仅对命令发出电路有效(包括与命令禁 止 (CMD) 控制相关的响应错误状态),不影响数据传输电路。在 处理子命令响应错误时,即使执行了该复位,主机控制器仍可继续 进行数据传输。 该位将清除下列寄存器和位: - 当前状态寄存器 命令禁止 (CMD) - 正常中断状态寄存器 命令完成 - 错误中断状态寄存器 与命令禁止 (CMD) 有关的响应错误状态 1- 复位 0- 工作 | RW |
| 0 | SW_RST_ALL | 软件复位所有 除卡检测电路外,该复位会影响整个主机控制器。在初始化过程中, 主机驱动程序应将该位设置为 1,以重置主机控制器。除 capabilities寄存器外,所有寄存器都将复位。如果该位被置 1,主 机驱动程序应发出复位命令并重新初始化 SD/eMMC 卡。 1- 复位 0- 工作 | RW |
正常中断状态寄存器
NORMAL_INT_STAT_RBASE + 0x30
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15 | ERR_INT | 错误中断 如果错误中断状态寄存器中的任何位被置位,则该位被置位。 0- 无错误 1- 错误 | R |
| 14 | CQE_EVNT | 命令队列事件 如果发生与命令队列引擎相关的事件,则设置此状态。 C 0- 无事件 1- 检测到命令队列事件 | R/W1C |
| 13 | FX_EVNT | FX 事件 当响应寄存器的 R[14] 设置为 1,且传输模式寄存器中的响应类 型 R1/R5 设置为 0 时,该状态被设置。该中断用于响应检查功 能。 0- 无事件 1- 检测到 FX 事件 | R |
| 12 | RE_TUNE_EVNT | Re-tuning事件(仅限 UHS-I) 如果Re-tuning请求从 0 变为 1,则该位被置位。该版本不支持 Re-Tuning请求。 0- 不需要Re-tuning 1- 应执行Re-tuning | R |
| 11:9 | Reserved | 保持默认 | R |
| 8 | CARD_INTERRUPT | 卡的中断 这个字段反映着同步的值: DAT[1]SD模式的中断输入 UHS-II模式的中断输入 | R |
| 7 | Reserved | 保持默认 | R |
| 6 | Reserved | 保持默认 | R |
| 5 | BUF_RD_RDY | 缓冲区读取就绪 如果缓冲区读取使能从 0 变为 1,则该位被置位。 C 0- 未准备好读取缓冲区 1- 准备读取缓冲区 | R/W1C |
| 4 | BUF_WR_RDY | 缓冲区写就绪 如果缓冲区写入使能从 0 变为 1,则该位被置位。 C 0- 未准备好写缓冲区 1- 准备好写缓冲区 | R/W1C |
| 3 | DMA_INT | DMA 中断 如果主机控制器在传输过程中检测到 SDMA 缓冲区边界,则该位 C 被置位。在 ADMA 情况下,通过设置描述符表中的 int 字段,主 机控制器会产生该中断。传输完成后将不会再产生该中断。 0- 无 DMA 中断 1- 已生成 DMA 中断 | R/W1C |
| 2 | BGAP_EVNT | 块间隙事件 当读取/写入事务因 “在块间隙时停止 ”请求而在块间隙处停止 C 时,该位被置位。 0- 无块间隙事件 1- 交易停止 | R/W1C |
| 1 | XFER_CMPLT | 传输完成 读/写传输和状态繁忙的命令完成时,该位被置位。 C 0- 未完成 1- 命令执行完毕 | R/W1C |
| 0 | CMD_CMPLT | 命令完成 在 SD/eMMC 模式下,除自动 CMD12 和自动 CMD23 外,当 C 响应结束位时,该位被置位。 当传输模式寄存器中的响应中断禁用设置为 1 时,不会产生该中 断。 0- 命令未完成 1- 命令完成 | R/W1C |
错误中断状态寄存器
ERROR_INT_STAT_RBASE + 0x32
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 保留。 | R |
| 15 | VENDOR_ERR3 | 错误中断状态寄存器的第 16 个寄存器字段为保留。它将始终返 RW1 回 0。 C 值: 0:无错误 1:错误 | RW1C |
| 14 | VENDOR_ERR2 | 错误中断状态寄存器的第 15 个寄存器字段为保留。它将始终返 回 0。 C 值: 0:无错误 1:错误 | R/W1C |
| 13 | VENDOR_ERR1 | 错误中断状态寄存器的第 14 个寄存器字段为保留。它将始终返 回 0。 C 值: 0:无错误 1:错误 | R/W1C |
| 12 | BOOT_ACK_ERR | boot应答错误(仅限 eMMC 模式) 当boot应答超时或检测到boot应答状态的值不是 0b010 时,该 C 位被置位。只有在 MSC 的boot功能已使能时,该位才会被设置。 值: 0:无错误 1:错误 | R/W1C |
| 11 | RESP_ERR | 响应错误(SD /eMMC模式) 主机控制器 4.00 版支持响应错误检查功能,以避免主机驱动程 C 序在 DMA 执行期间进行响应错误检查的开销。如果在传输模式 寄存器中将响应错误检查使能设为 1,主机控制器将检查 R1 或 R5 响应。如果在响应中检测到错误,则将该位设置为 1。 1: 错误 0: 无错误 | R/W1C |
| 10 | TUNING_ERR | tuning错误(仅限 UHS-I 模式) 除tuning过程外,当在tuning电路中检测到不可恢复的错误时, C 该位被置位(tuning过程中发生的错误由HostControl2 寄存器 中的采样时钟选择指示)。检测到tuning错误时,主机驱动程序 需要终止命令执行并执行tuning。要重置tuning电路,应在执行 tuning程序前将采样时钟选择设为 0。tuning错误的优先级高于 数据传输过程中产生的其他错误中断。检测到tuning错误时,主 机驱动器应丢弃当前读/写命令传输的数据,并在主机控制器从 tuning电路错误中恢复后重试数据传输。 1:错误 0:无错误 | R/W1C |
| 9 | ADMA_ERR | ADMA 错误 当主机控制器在基于 ADMA 的数据传输过程中检测到错误时, C 该位被置位。错误可能由以下原因造成: 从系统总线(主 I/F)收到的错误响应 ADMA3,ADMA2 描述符无效 CQE 任务或传输描述符无效 发生错误时,ADMA 的状态将保存在 ADMA 错误状态寄存器 中。 在 eMMC CQE 模式下: 当主机控制器在 ST_FDS 状态下检测到描述符数据无效 (Valid=0)时,会产生该中断。ADMA 错误状态中的 ADMA 错 误状态表示 ST_FDS 状态发生错误。主机驱动程序可能会发现 错误描述符的 Valid 比特未置位。 1:错误 0:无错误 | R/W1C |
| 8 | AUTO_CMD_ERR | 自动 CMD 错误(仅限 SD/eMMC 模式) 自动 CMD12 和自动 CMD23 使用此错误状态。当检测到自动 C CMD 错误状态寄存器中 D00 至 D05 的任何位从 0 变为 1 时,该位被置位。D07 对自动 CMD12 有效。当该位设置为 1 时,自动 CMD 错误状态寄存器有效,可通过清除该位来清除(也 允许另一种实现方式)。 1:错误 0:无错误 | R/W1C |
| 7 | CUR_LMT_ERR | 电流限制错误 通过设置电源控制寄存器中的 SD 总线电源位,要求主机控制器 C 为 SD 总线供电。如果主机控制器支持电流限制功能,则可以通 过停止向非法卡供电来保护主机控制器,在这种情况下,该位将 显示故障状态。如果该位读数为 1,则表示主机控制器由于某些 故障而未向 SD 卡供电。如果该位读数为 0,则表示主机控制器 正在供电且未发生错误。主机控制器可能需要一些采样时间来检 测电流限制。如果主控制器不支持该功能,则应始终将该位设置 为 0。 1:电源故障 0:无错误 | R/W1C |
| 6 | DAT_END_BIT_ERR | 数据结束位错误(仅限 SD/eMMC 模式) 在使用 DAT 线读取数据的结束位检测到 0 或在 CRC 状态的 C 结束位位置检测到 0 时,都会发生此错误。 1:错误 0:无错误 | R/W1C |
| 5 | DATA_CRC_ERR | 数据 CRC 错误(仅限 SD/eMMC 模式)。 当使用 DAT 线路传输读取数据时检测到 CRC 错误,当检测到 C 写入 CRC 状态的值不是 010 或写入 CRC 状态超时时,就会 发生此错误。 1:错误 0:无错误 | R/W1C |
| 4 | DATA_TOUT_ERR | 数据超时错误(仅限 SD/eMMC 模式) 检测到下列超时条件之一时,该位被置位: C -R1b 和 R5b 类型的忙超时 - 写入 CRC 状态后忙超时 - 写 CRC 状态超时 - 读数据超时 1:超时 0:无错误 | R/W1C |
| 3 | CMD_IDX_ERR | 命令索引错误(仅限 SD/eMMC 模式) 如果命令响应中出现命令索引错误,则设置该位。 C 1:错误 0:无错误 | R/W1C |
| 2 | CMD_END_BIT_ERR | 命令结束位错误(仅限 SD/eMMC 模式) 当检测到命令响应的结束位为 0 时,该位被置位。 C 1:产生结束位错误 0:无错误 | R/W1C |
| 1 | CMD_CRC_ERR | 命令 CRC 错误(仅限 SD/eMMC 模式) 命令 CRC 错误在两种情况下产生。 C 如果返回响应且命令超时错误设置为 0(表示无超时),则在检 测到命令响应中的 CRC 错误时将该位设置为 1。 当发出命令时,主机控制器通过监控 CMD 线来检测 CMD 线冲 突。如果主机控制器将 CMD 线驱动为高电平,但在下一个SD 的时钟沿检测到 CMD 线为 低 电平,则主机控制器应终止命令 (停止驱动 CMD 线)并将该位设置为 1。 命令超时错误也应 设置为 1,以区分 CMD 线冲突。 1:生成 CRC 错误 0:无错误 | R/W1C |
| 0 | CMD_TOUT_ERR | 命令超时错误(仅限 SD/eMMC 模式) 只有在从命令结束位算起的 64 个 SD 时钟周期内无响应时,才 C 会设置该位。如果主机控制器检测到 CMD 线冲突以及命令 CRC 错误位,则无需等待 64 个 SD/eMMC 卡时钟周期即可将 该位设置为 1。 1:超时 0:无错误 | R/W1C |
正常中断状态使能寄存器
NORMAL_INT_STAT_EN_RBASE + 0x34
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15 | Reserved | 写入无影响,读取为零。 | R |
| 14 | CQE_EVNT_ST_EN | 使能 CQE 事件状态。 1- 使能 0- 屏蔽 | RW |
| 13 | FX_EVNT_ST_EN | FX 事件状态使能。 该位从 4.10 版开始添加。 1- 使能 0- 屏蔽 | RW |
| 12 | RE_TUNE_EVNT_ST_EN | 重新tuning事件(仅限 UHS-I) 状态 使能 1- 使能 0- 屏蔽 | RW |
| 11:6 | Reserved | 写入无影响,读取为零。 | RW |
| 5 | BUF_RD_RDY_ST_EN | 使能缓冲区读取就绪状态 1- 使能 0- 屏蔽 | RW |
| 4 | BUF_WR_RDY_ST_EN | 缓冲区写就绪状态使能 1- 使能 0- 屏蔽 | RW |
| 3 | DMA_INT_ST_EN | 使能 DMA 中断状态 1- 使能 0- 屏蔽 | RW |
| 2 | BGAP_EVNT_ST_EN | 使能块间隙事件状态 1- 使能 0- 屏蔽 | RW |
| 1 | XFER_CMPLT_ST_EN | 传输完成状态使能 1- 使能 0- 屏蔽: | RW |
| 0 | CMD_CMPLT_ST_EN | 命令完成状态 使能 1- 使能 0- 屏蔽 | RW |
错误中断状态使能寄存器
ERROR_INT_STAT_EN_RBASE + 0x36
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15 | VENDOR_ERR_ST_EN3 | 错误中断状态使能寄存器的第 15 位为保留。它将始终返 回 0。 值: 0: 屏蔽 1: 使能 | RW |
| 14 | VENDOR_ERR_ST_EN2 | 错误中断状态使能寄存器的第 14 位为保留。它将始终返 回 0。 值: 0:屏蔽 1:使能 | RW |
| 13 | VENDOR_ERR_ST_EN1 | 错误中断状态使能寄存器的第 13 位为保留。它将始终返 回 0。 值: 0:屏蔽 1:使能 | RW |
| 12 | BOOT_ACK_ERR_ST_EN | 启动应答错误(仅限 eMMC 模式)。 将该位设置为 1 可在错误中断状态寄存器 (ERROR_INT_STAT_R) 中设置启动应答错误。 1:使能 0:屏蔽 | RW |
| 11 | RESP_ERR_ST_EN | 响应错误状态使能(仅SD模式) 1:使能 0:屏蔽 | RW |
| 10 | TUNING_ERR_ST_EN | tuning错误状态使能(仅限 UHS-I 模式)。 1:使能 0:屏蔽 | RW |
| 9 | ADMA_ERR_ST_EN | 使能 ADMA 错误状态。 1:使能 0:屏蔽 | RW |
| 8 | AUTO_CMD_ERR_ST_EN | 自动 CMD 出错状态使能(仅限 SD/eMMC 模式)。 1:使能 0:屏蔽 | RW |
| 7 | CUR_LMT_ERR_ST_EN | 电流限值错误状态使能 1:使能 0:屏蔽 | RW |
| 6 | DAT_END_BIT_ERR_ST_EN | 数据结束位错误状态使能(仅限 SD/eMMC 模式)。 1:使能 0:屏蔽 | RW |
| 5 | DAT_CRC_ERR_ST_EN | 数据 CRC 错误状态使能(仅限 SD/eMMC 模式) 1:使能 0:屏蔽 | RW |
| 4 | DAT_TOUT_ERR_ST_EN | 数据超时错误状态使能(仅限 SD/eMMC 模式) 1:使能 0:屏蔽 | RW |
| 3 | CMD_IDX_ERR_ST_EN | 命令索引错误状态使能(仅限 SD/eMMC 模式) 1:使能 0:屏蔽 | RW |
| 2 | CMD_END_BIT_ERR_ST_EN | 命令结束位错误状态使能(仅限 SD/eMMC 模式) 1:使能 0:屏蔽 | RW |
| 1 | CMD_CRC_ERR_ST_EN | 使能命令 CRC 错误状态(仅限 SD/eMMC 模式) 1:使能 0:屏蔽 | RW |
| 0 | CMD_TOUT_ERR_ST_EN | 命令超时错误状态使能(仅限 SD/eMMC 模式)。 1:使能 0:屏蔽 | RW |
正常中断信号使能寄存器
NORMAL_INT_SIGNAL_EN_RBASE + 0x38
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15 | Reserved | 写入无影响,读取为零。 | R |
| 14 | CQE_EVNT_SIG_EN | 命令队列引擎事件信号使能 1- 使能 0- 屏蔽 | RW |
| 13 | FX_EVNT_SIG_EN | FX 事件信号使能 1- 使能 0- 屏蔽 | RW |
| 12 | RE_TUNE_EVNT_SIG_EN | 重新tuning事件(仅限 UHS-I)信号使能。 1- 使能 0- 屏蔽 | RW |
| 11:6 | Reserved | 保持默认 | RW |
| 5 | BUF_RD_RDY_SIG_EN | 缓冲区读就绪信号使能 1- 使能 0- 屏蔽 | RW |
| 4 | BUF_WR_RDY_SIG_EN | 缓冲区写就绪信号使能 1- 使能 0- 屏蔽 | RW |
| 3 | DMA_INT_SIG_EN | DMA 中断信号使能 1- 使能 0- 屏蔽 | RW |
| 2 | BGAP_EVNT_SIG_EN | 块间隙事件信号使能 1- 使能 0- 屏蔽 | RW |
| 1 | XFER_CMPLT_SIG_EN | 传输完成信号使能 1- 使能 0- 屏蔽 | RW |
| 0 | CMD_CMPLT_SIG_EN | 命令完成信号使能 1- 使能 0- 屏蔽 | RW |
错误中断信号使能寄存器
ERROR_INT_SIGNAL_EN_RBASE + 0x3a
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15 | VENDOR_ERR_SIG_EN3 | 错误中断信号使能的第 16 位为保留。它将始终返回 0。 1- 使能 0- 屏蔽 | RW |
| 14 | VENDOR_ERR_SIG_EN2 | 错误中断信号使能的第 15 位为保留。它将始终返回 0。 1- 使能 0- 屏蔽 | RW |
| 13 | VENDOR_ERR_SIG_EN1 | 错误中断信号使能的第 14 位为保留。它将始终返回 0。 1- 使能 0- 屏蔽 | RW |
| 12 | BOOT_ACK_ERR_SIG_EN | 启动应答错误(仅限 eMMC 模式)。 当错误中断状态寄存器中的 “启动应答错误 ”设置为 “1 ”时,该位将产生中断信号。 1- 使能 0- 屏蔽 | RW |
| 11 | RESP_ERR_SIG_EN | 响应错误信号使能(仅限SD模式) 1- 使能 0- 屏蔽 | RW |
| 10 | TUNING_ERR_SIG_EN | tuning错误信号使能(仅限 UHS-I 模式) 1- 使能 0- 屏蔽 | RW |
| 9 | ADMA_ERR_SIG_EN | ADMA 错误信号使能 1- 使能 0- 屏蔽 | RW |
| 8 | AUTO_CMD_ERR_SIG_EN | 自动 CMD 错误信号使能(仅限 SD/eMMC 模式) 1- 使能 0- 屏蔽 | RW |
| 7 | CUR_LMT_ERR_SIG_EN | 电流限制错误信号使能 1- 使能 0- 屏蔽 | RW |
| 6 | DAT_END_BIT_ERR_SIG_EN | 数据结束位错误信号使能(仅限 SD/eMMC 模式) 1- 使能 0- 屏蔽 | RW |
| 5 | DAT_CRC_ERR_SIG_EN | 数据 CRC 错误信号使能(仅限 SD/eMMC 模式) 1- 使能 0- 屏蔽 | RW |
| 4 | DAT_TOUT_ERR_SIG_EN | 数据超时错误信号使能(仅限 SD/eMMC 模式) 1- 使能 0- 屏蔽 | RW |
| 3 | CMD_IDX_ERR_SIG_EN | 命令索引错误信号使能(仅限 SD/eMMC 模式) 1- 使能 0- 屏蔽 | RW |
| 2 | CMD_END_BIT_ERR_SIG_EN | 命令结束位错误信号使能(仅限 SD/eMMC 模式) 1- 使能 0- 屏蔽 | RW |
| 1 | CMD_CRC_ERR_SIG_EN | 命令 CRC 错误信号使能(仅限 SD/eMMC 模式) 1- 使能 0- 屏蔽 | RW |
| 0 | CMD_TOUT_ERR_SIG_EN | 命令超时错误信号使能(仅限 SD/eMMC 模式) 1- 使能 0- 屏蔽 | RW |
自动 CMD 状态寄存器
AUTO_CMD_STAT_RBASE + 0x3c
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:8 | Reserved | 写入无影响,读取为零。 | R |
| 7 | C_NOT_A_C12 | 因自动 CMD12 错误而未发出命令 如果该位设置为 1,则由于该寄存器中的自动 CMD12 错误 (D04-D01),CMD_wo_DAT 不被执行。 当自动 CMD23 产生自动 CMD 错误时,该位被设置为 0。 1- 未发出 0- 无错误 | R |
| 6 | Reserved | 写入无影响,读取为零。 | R |
| 5 | A_C_RESP_ERR | 自动 CMD 响应错误 当传输模式寄存器中的 ResponseError 检查使能设置为 1,且在 自动 CMD12 或 CMD13 的 R1 响应中检测到错误时,该位被设 置。如果 D00 至 D04 之间的任何位设置为 1,则该状态被忽略。 1- 错误 0- 无错误 | R |
| 4 | A_C_IDX_ERR | 自动 CMD 索引错误 如果命令的响应中发生命令索引错误,则设置该位。 1- 错误 0- 无错误 | R |
| 3 | A_C_EBIT_ERR | 自动 CMD 结束位错误 检测到命令响应的结束位为 0 时设置该位。 1- 产生结束位错误 0- 无错误 | R |
| 2 | A_C_CRC_ERR | 自动 CMD CRC 错误 当检测到命令响应中出现 CRC 错误时,设置该位。 1- 产生 CRC 错误 0- 无错误 | R |
| 1 | A_C_TOUT_ERR | 自动 CMD 超时错误 如果在距离命令结束位 64 个 SDCLK 周期内未返回响应,则设 置该位。 如果该位设置为 1,则错误状态位 (D04-D01) 无效。 1- 超时 0- 无错误 | R |
| 0 | A_C12_NOT_EXEC | 自动 CMD12 未执行 如果由于命令错误而未开始多存储块数据传输,则不会设置该位, 因为没有必要发出 AutoCMD12。将该位设置为 1 意味着主机控 制器因某些错误而无法发出自动 CMD12 以停止多存储块数据传 输。如果将该位设置为 1,则错误状态位 (D04-D01) 无效。 当自动 CMD23 产生自动 CMD 错误时,该位被置 0。 1- 未执行 0- 已执行 | R |
主机控制寄存器 2
HOST_CTRL2_RBASE + 0x3e
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15 | Reserved | 保持默认 | RW |
| 14 | ASYNC_INT_EN | 异步中断使能 如果卡支持异步中断,且 Capabilities寄存器中的 “异步中断支持 ” 设置为 1,则可设置该位。 0- 禁用 1- 使能 | RW |
| 13 | ADDRESSING | 64 位地址 该位在Host Version 4Enable设置为 1 时有效。 0- 32 位地址 1- 64 位地址 | RW |
| 12 | HOST_V4_EN | HostVersion4Enable 该位用于选择 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 |
| 11 | CMD23_EN | 使能 CMD23 该位用于选择 ADMA3 数据传输的自动 CMD23 或自动 CMD12。 0- 禁用自动 CMD23 1- 使能自动 CMD23 | RW |
| 10 | ADMA2_LEN_MD | ADMA2 长度模式 该位用于将 ADMA2 长度模式选择为 16 位或 26 位。 0- 16 位数据长度模式 1- 26 位数据长度模式 | RW |
| 9 | Reserved | 写入无影响,读取为零。 | R |
| 8 | Keep0 | 请将该位保持为 0。 | RW |
| 7 | SMP_CLK_SEL | 采样时钟选择 主机控制器使用该位选择接收 CMD 和 DAT 的采样时钟。该位由 tuning程序设置,并在tuning完成后有效(当执行tuning清零时)。 将该位设置为 1 表示tuning成功完成,将该位设置为 0 表示tuning 失败。该值反映在 sample_cclk_sel 引脚上。 0- 使用固定时钟采样数据 1- 使用tuning时钟采样数据 | RW |
| 6 | EXEC_TUNING | 执行tuning(仅限 UHS-I) 该位设置为 1 时启动tuning程序,tuning程序完成后该位自动清零。 0- 未tuning或tuning完成 1- 执行tuning | RW |
| 5:3 | Reserved | 保持默认 | RW |
| 2:0 | UHS_MODE_SEL | UHS 模式/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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:30 | Resverd | 写入无影响,读取为零。 | |
| 29 | ASYNC_INT_SUPPORT | 异步中断支持(仅限SD卡模式) 1:支持异步中断 0:不支持异步中断 | R |
| 28 | SYS_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 |
| 27 | SYS_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:24 | Reserved | 写入无影响,读取为零。 | |
| 23 | SUS_RES_SUPPORT | 支持暂停/恢复 该位表示主机控制器是否支持暂停/恢复功能。如果该位为 0,则主机驱动程序不得发出暂停或恢复命令,因为不支持 暂停和恢复机制。 1- 支持 0- 不支持 | R |
| 22 | SDMA_SUPPORT | 支持 SDMA 该位指示主机控制器是否能够使用 SDMA 在系统内存和主 机控制器之间直接传输数据。 1- 支持 SDMA 0- 不支持 SDMA | R |
| 21 | HIGH_SPEED_SUPPORT | 支持高速模式 该位表示主机控制器和主机系统是否支持高速模式,是否能 提供 25MHz 至 50MHz 的 SD 时钟频率。 1- 支持高速 0- 不支持高速 | R |
| 20 | Reserved | 写入无影响,读取为零。 | |
| 19 | ADMA2_SUPPORT | 支持 ADMA2 该位指示主机控制器是否能够使用 ADMA2。 1- 支持 ADMA2 0- 不支持 ADMA2 | R |
| 18 | Embedded_8_BIT | 嵌入式设备 8 位支持 该位指示主机控制器是否能够使用 8 位总线宽度模式。当 插槽类型设置为 10b 时,该位无效。 1- 支持 8 位总线宽度 0- 不支持 8 位总线宽度 | R |
| 17:16 | MAX_BLK_LEN | 最大数据块长度 该位表示主机驱动程序可以读取和写入主机控制器缓冲区 的最大块大小。缓冲器传输此大小的数据块无需等待周期。 无论该位如何设置,SD 存储器的传输块长度始终为 512 字节。 00- 512 字节 01- 1024 10- 2048 11- 保留 | R |
| 15:0 | Reserved | 写入无影响,读取为零。 | R |
功能寄存器 2
CAPABILITES2_RBASE + 0x44
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:28 | Reserved | 写入无影响,读取为零。 ADMA3 支持 R | R |
| 27 | ADMA3_SUPPORT | 该位指示主机控制器是否能够使用 ADMA3。 0- 不支持 ADMA3 1- 支持 ADMA3 | |
| 26:16 | Reserved | 写入无影响,读取为零。 Re-tuning模式(仅限 UHS-I) R | R |
| 15:14 | RE_TUNING_MODES | 该字段选择Re-tuning方法并限制最大数据长度。 00b - 模式 1- 定时器 01b - 模式 2- 定时器和Re-tuning请求(不支持) 10b - 模式 3- 自动重调(用于传输) 11b- 保留 为 SDR50 使用tuning(仅限 UHS-I) | R |
| 13 | USE_TUNING_SDR50 | 1-SDR50 需要tuning 0-SDR50 不需要tuning | |
| 12 | Reserved | 写入无影响,读取为零。 重调计时器计数(仅限 UHS-I) R | R |
| 11:8 | RETUNE_CNT | 0x0- 禁用重调计时器; 0x1-1 秒; 0x2-2 秒; 0x3-4 秒; 0xB -1024 秒; 0xC- 保留; 0xD- 保留; 0xE - 保留; 0xF- 从其他来源获取信息; | |
| 7:3 | Revered | 写入无影响,读取为零。 支持 DDR50(仅限 UHS-I) R | R |
| 2 | DDR50_SUPPORT | 1- 支持 DDR50 0- 不支持 DDR50 支持 SDR104(仅限 UHS-I) SDR104 需要调整。 | R |
| 1 | SDR104_SUPPORT | 1- 支持 SDR104 0- 不支持 SDR104 支持 SDR50(仅限 UHS-I),如果支持 SDR104,则该位 | R |
| 0 | SDR50_SUPPORT | 应设为 1。 1- 支持 SDR50 0- 不支持 SDR50 |
电流功能寄存器 1
CURR_CAPABILITES1_RBASE + 0x48
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:24 | Reserved | 写入无影响,读取为零。 | R |
| 23:16 | MAX_CUR_18V | 1.8V最大电流 此位指定卡1.8V VDD1电源的最大电流。 0:通过其他方法获取信息 1:4mA 2:8mA 3:13mA ....... 255:1020mA | R |
| 15:8 | MAX_CUR_30V | 3.0V最大电流 此位指定卡3.0V VDD1电源的最大电流。 0:通过其他方法获取信息 1:4mA 2:8mA 3:13mA ....... 255:1020mA | R |
| 7:0 | MAX_CUR_33V | 此位指定卡片3.3V VDD1电源的最大电流。 0:通过其他方法获取信息 1:4mA 2:8mA 3:13mA ....... 255:1020mA | R |
电流功能寄存器 2
CURR_CAPABILITES2_RBASE + 0x4c
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:8 | Reserved | 写入无影响,读取为零。 | R |
| 7:0 | MAX_CUR_VDD2_18V | 1.8V VDD2最大电流 此位指定UHS-II卡1.8V VDD2电源的最大电流。 0:通过其他方法获取信息 1:4mA 2:8mA 3:13mA ....... 255:1020mA | R |
自动 CMD 错误状态寄存器的强制事件寄存器
FORCE_AUTO_CMD_STAT_RBASE + 0x50
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:8 | Reserved | 写入无影响,读取为零 | R |
| 7 | FC_CMD_NOT_ISS_AC12 | 自动 CMD12 错误未发出命令的强制事件 1- 设置命令未被发送的自动 CMD12错误状态被置位 0- 不受影响 | W |
| 6 | Reserved | 写入无影响,读取为零 | R |
| 5 | FC_AC_RESP_ERR | 自动 CMD 响应错误的强制事件 1- 自动 CMD 响应错误状态被置位 0- 不受影响 | W |
| 4 | FC_AC_IDX_ERR | 自动 CMD 索引错误的强制事件 1- 自动 CMD 索引错误状态被置位 0- 不受影响 | W |
| 3 | FC_AC_EBIT_ERR | 自动 CMD 结束位错误的强制事件 1- 自动 CMD 结束位错误状态已设置 0- 不受影响 | W |
| 2 | FC_AC_CRC_ERR | 自动 CMD CRC 错误的强制事件 1- 自动 CMD CRC 错误状态被置位 0- 不受影响 | W |
| 1 | FC_AC_TOUT_ERR | 自动 CMD 超时错误的强制事件 1- 自动 CMD 超时错误状态被置位 0- 不受影响 | W |
| 0 | FC_AC12_NOT_EXEC | 自动 CMD12 未执行的强制事件 1- 自动 CMD12 未执行状态被置位 0- 不受影响 | W |
错误中断状态的强制事件寄存器
FORCE_ERROR_INT_STAT_RBASE + 0x52
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15 | FC_VENDOR_ERR3 | 强制错误中断状态寄存器的第 16 位为保留。它将始终返回 0。 0: 不受影响 1 : 厂商设置特定错误状态 | W |
| 14 | FC_VENDOR_ERR2 | 强制错误中断状态寄存器的第 15 位为保留。它将始终返回 0。 0: 不受影响 1: 厂商设置特定错误状态 | W |
| 13 | FC_VENDOR_ERR1 | 强制错误中断状态寄存器的第 14 位为保留。它将始终返回 0。 0: 不受影响 1: 厂商设置特定错误状态 | W |
| 12 | FC_BOOT_ACK_ERR | BootAck 错误的强制事件。 0: 不受影响 1: 厂商设置特定错误状态 | W |
| 11 | FC_RESP_ERR | 响应错误的强制事件(仅限SD模式) 0: 不受影响 1: 设置响应错误状态 | W |
| 10 | FC_TUNING_ERR | tuning错误的强制事件(仅限 UHS-I 模式) 1:设置tuning错误状态 0:不受影响 | W |
| 9 | FC_ADMA_ERR | 针对 ADMA 错误的强制事件 1:ADMA 错误状态被置位 0:不受影响 | W |
| 8 | FC_AUTO_C_ERR | 自动 CMD 错误强制事件(仅限 SD/eMMC 模式) 1:自动 CMD 出错状态被置位 0:不受影响 | W |
| 7 | FC_CUR_LMT_ERR | 电流限值错误的强制事件 1:设置电流限值错误状态 0:不受影响 | W |
| 6 | FC_D_END_BIT_ERR | 数据结束位错误的强制事件(仅限 SD/eMMC 模式) 1:数据结束位错误状态被置位 0:不受影响 | W |
| 5 | FC_D_CRC_ERR | 数据 CRC 错误的强制事件(仅限 SD/eMMC 模式) 1:CRC 错误状态被置位 0:不受影响 | W |
| 4 | FC_D_TOUT_ERR | 数据超时错误的强制事件(仅限 SD/eMMC 模式) 1:设置超时错误状态 0:不受影响 | W |
| 3 | FC_C_IDX_ERR | 命令索引错误的强制事件(仅限 SD/eMMC 模式) 1:命令索引错误状态被置位 0:不受影响 | W |
| 2 | FC_C_END_BIT_ERR | 命令结束位错误的强制事件(仅限 SD/eMMC 模式) 1:命令结束位错误状态被置位 0:不受影响 | W |
| 1 | FC_C_CRC_ERR | 命令 CRC 错误的强制事件(仅限 SD/eMMC 模式) 1:命令 CRC 错误状态被置位 0:不受影响 | W |
| 0 | FC_C_TOUT_ERR | 命令超时错误的强制事件(仅限 SD/eMMC 模式) 1:命令超时错误状态被置位 0:不受影响 | W |
ADMA 错误状态寄存器
ADMA_ERR_STAT_RBASE + 0x54
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 7:3 | Reserved | 写入无影响,读取为零。 | R |
| 2 | ADMA_LEN_ERR | ADMA 长度不匹配错误状态 在以下情况下会出现此错误: 设置块计数使能时,描述符表指定的数据总长度与块计数和块长度指 定的数据总长度不同。 数据总长度无法除以块长度 0:无错误 1:错误 | R |
| 1:0 | ADMA_ERR_STA | ADMAError States ADMA 错误状态 这些位指示 ADMA 数据传输过程中发生错误时的 ADMA 状态。 00b- 停止 DMA-SYS_ADR 寄存器指向下一个错误描述符的位置 01b- 取回描述符 -SYS_ADR 寄存器指向错误描述符 10b- 从未设置此状态 - 未使用 11b- 传输数据 - SYS_ADR 寄存器指向下一个错误描述符的位置 | R |
ADMA 系统低位地址寄存器
ADMA_SA_LOW_RBASE + 0x58
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | ADMA_SA_LOW | ADMA 系统地址 这些位表示 ADMA 系统地址的低 32 位。 SDMA 如果HostVersion4Enable设置为 1,则该寄存器保存数据位置的系 统地址。 ADMA2 该寄存器保存描述符表中执行命令的字节地址。 ADMA3 该寄存器由 ADMA3 设置。每次获取描述符行时,ADMA2 都会递增 该寄存器中指向下一行的地址。 | RW |
ADMA 系统高位地址寄存器
ADMA_SA_HIGH_RBASE + 0x5c
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | ADMA_SA_HIGH | ADMA 系统地址 这些位指示 ADMA 系统地址的高 32 位。 | RW |
ADMA3 集成描述符地址寄存器 - 低电平
ADMA_ID_LOW_RBASE + 0x78
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | ADMA_ID_LOW | ADMA 集成描述符地址 该位表示 ADMA 集成描述符地址的低 32 位。集成描述符的起始地 址设置为该寄存器。ADMA3 获取一个描述符地址并递增该字段以指 示下一个描述符地址。 | RW |
ADMA3 集成描述符地址寄存器 - 高电平
ADMA_ID_HIGH_RBASE + 0x7c
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | ADMA_ID_HIGH | ADMA 集成描述符地址 这些位指示 ADMA 集成描述符地址的高 32 位。 | RW |
初始化预置值寄存器
PRESET_INIT_RBASE + 0x60
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:14 | DRV_SEL_VAL | 驱动强度选择值 这些位表明1.8V信号总线速度模式支持的驱动强度。这些位对3.3V 信号无意义。 取值: 0x0(TYPEB):选择驱动类型B 0x1(TYPEA):选择驱动类型A 0x2(TYPEC):选择驱动类型C 0x3(TYPED):选择驱动类型D | R |
| 13:11 | RSVD_13_11 | 写入无影响,读取为零。 | R |
| 10 | CLK_GEN_SEL_V | 时钟生成器选择值 AL 当主机控制器支持可编程时钟生成器时,此位有效。 取值: 0:主机控制器Ver2.0兼容时钟生成器 1:可编程时钟生成器 | R |
| 9:0 | FREQ_SEL_VAL | SDCLK/RCLK频率选择值 10位预置值,将由主机系统设置的时钟控制寄存器中的 SDCLK/RCLK频率选择字段。 | R |
DS 模式预置值寄存器
PRESET_DS_RBASE + 0x62
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:14 | DRV_SEL_VAL | 驱动强度选择值 这些位表明1.8V信号总线速度模式支持的驱动强度。在DS模式下 使用3.3V信号时,这些位无意义。 取值: 0x0(TYPEB):选择驱动类型B 0x1(TYPEA):选择驱动类型A 0x2(TYPEC):选择驱动类型C 0x3(TYPED):选择驱动类型D | R |
| 13:11 | RSVD_13_11 | 写入无影响,读取为零。 | R |
| 10 | CLK_GEN_SEL_VAL | 时钟生成器选择值 当主机控制器支持可编程时钟生成器时,此位有效。 取值: 0:主机控制器Ver2.0兼容时钟生成器 1:可编程时钟生成器 | R |
| 9:0 | FREQ_SEL_VAL | SDCLK/RCLK频率选择值 10位预置值,将由主机系统设置的时钟控制寄存器中的 SDCLK/RCLK频率选择字段。 | R |
HS 模式预置值寄存器
PRESET_HS_RBASE + 0x64
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:14 | DRV_SEL_VAL | 驱动强度选择值 这些位表明1.8V信号总线速度模式支持的驱动强度。在HS模式下 使用3.3V信号时,这些位无意义。 取值: 0x0(TYPEB):选择驱动类型B 0x1(TYPEA):选择驱动类型A 0x2(TYPEC):选择驱动类型C 0x3(TYPED):选择驱动类型D | R |
| 13:11 | RSVD_13_11 | 写入无影响,读取为零。 | R |
| 10 | CLK_GEN_SEL_VAL | 时钟生成器选择值 当主机控制器支持可编程时钟生成器时,此位有效。 取值: 0:主机控制器Ver2.0兼容时钟生成器 1:可编程时钟生成器 | R |
| 9:0 | FREQ_SEL_VAL | SDCLK/RCLK频率选择值 10位预置值,将由主机系统设置的时钟控制寄存器中的 SDCLK/RCLK频率选择字段。 | R |
SDR12模式预置值寄存器
PRESET_SDR12_RBASE + 0x66
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:14 | DRV_SEL_VAL | 驱动强度选择值 这些位表明SDR12总线速度模式支持的驱动强度。当使用3.3V信 号时,这些位无意义。 取值: 0x0(TYPEB):选择驱动类型B 0x1(TYPEA):选择驱动类型A 0x2(TYPEC):选择驱动类型C 0x3(TYPED):选择驱动类型D | R |
| 13:11 | RSVD_13_11 | 写入无影响,读取为零。 | R |
| 10 | CLK_GEN_SEL_VAL | 时钟生成器选择值 当主机控制器支持可编程时钟生成器时,此位有效。 取值: 0:主机控制器Ver2.0兼容时钟生成器 1:可编程时钟生成器 | R |
| 9:0 | FREQ_SEL_VAL | SDCLK/RCLK频率选择值 10位预置值,将由主机系统设置的时钟控制寄存器中的 SDCLK/RCLK频率选择字段。 | R |
SDR25模式预置值寄存器
PRESET_SDR25_RBASE + 0x68
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:14 | DRV_SEL_VAL | 驱动强度选择值 这些位表明SDR25总线速度模式支持的驱动强度。当使用3.3V信 号时,这些位无意义。 取值: 0x0(TYPEB):选择驱动类型B 0x1(TYPEA):选择驱动类型A 0x2(TYPEC):选择驱动类型C 0x3(TYPED):选择驱动类型D | R |
| 13:11 | RSVD_13_11 | 写入无影响,读取为零。 | R |
| 10 | CLK_GEN_SEL_VAL | 时钟生成器选择值 当主机控制器支持可编程时钟生成器时,此位有效。 取值: 0:主机控制器Ver2.0兼容时钟生成器 1:可编程时钟生成器 | R |
| 9:0 | FREQ_SEL_VAL | SDCLK/RCLK频率选择值 10位预置值,将由主机系统设置的时钟控制寄存器中的 SDCLK/RCLK频率选择字段。 | R |
SDR50模式预置值寄存器
PRESET_SDR50_RBASE + 0x6a
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:14 | DRV_SEL_VAL | 驱动强度选择值 这些位表明SDR50总线速度模式支持的驱动强度。当使用3.3V信 号时,这些位无意义。 取值: 0x0(TYPEB):选择驱动类型B 0x1(TYPEA):选择驱动类型A 0x2(TYPEC):选择驱动类型C 0x3(TYPED):选择驱动类型D | R |
| 13:11 | RSVD_13_11 | 写入无影响,读取为零。 | R |
| 10 | CLK_GEN_SEL_VAL | 时钟生成器选择值 当主机控制器支持可编程时钟生成器时,此位有效。 取值: 0:主机控制器Ver2.0兼容时钟生成器 1:可编程时钟生成器 | R |
| 9:0 | FREQ_SEL_VAL | SDCLK/RCLK频率选择值 10位预置值,将由主机系统设置的时钟控制寄存器中的 SDCLK/RCLK频率选择字段。 | R |
SDR104模式预置值寄存器
PRESET_SDR104_RBASE + 0x6c
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:14 | DRV_SEL_VAL | 驱动强度选择值 这些位表明SDR104总线速度模式支持的驱动强度。当使用3.3V信 号时,这些位无意义。 取值: 0x0(TYPEB):选择驱动类型B 0x1(TYPEA):选择驱动类型A 0x2(TYPEC):选择驱动类型C 0x3(TYPED):选择驱动类型D | R |
| 13:11 | RSVD_13_11 | 写入无影响,读取为零。 | R |
| 10 | CLK_GEN_SEL_VAL | 时钟生成器选择值 当主机控制器支持可编程时钟生成器时,此位有效。 取值: 0:主机控制器Ver2.0兼容时钟生成器 1:可编程时钟生成器 | R |
| 9:0 | FREQ_SEL_VAL | SDCLK/RCLK频率选择值 10位预置值,将由主机系统设置的时钟控制寄存器中的 SDCLK/RCLK频率选择字段。 | R |
DDR50模式预置值寄存器
PRESET_DDR50_RBASE + 0x6e
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:14 | DRV_SEL_VAL | 驱动强度选择值 这些位表明DDR50总线速度模式支持的驱动强度。当使用3.3V信 号时,这些位无意义。 取值: 0x0(TYPEB):选择驱动类型B 0x1(TYPEA):选择驱动类型A 0x2(TYPEC):选择驱动类型C 0x3(TYPED):选择驱动类型D | R |
| 13:11 | RSVD_13_11 | 写入无影响,读取为零。 | R |
| 10 | CLK_GEN_SEL_VAL | 时钟生成器选择值 当主机控制器支持可编程时钟生成器时,此位有效。 取值: 0:主机控制器Ver2.0兼容时钟生成器 1:可编程时钟生成器 | R |
| 9:0 | FREQ_SEL_VAL | SDCLK/RCLK频率选择值 10位预置值,将由主机系统设置的时钟控制寄存器中的 SDCLK/RCLK频率选择字段。 | R |
UHS2 模式预置值寄存器
PRESET_UHS2_RBASE + 0x74
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:14 | DRV_SEL_VAL | 驱动强度选择值 这些位表明SD模式下1.8V信号总线速度模式支持的驱动强度值。 0x0(TYPEB):选择驱动类型B 0x1(TYPEA):选择驱动类型A 0x2(TYPEC):选择驱动类型C 0x3(TYPED):选择驱动类型D | R |
| 13:11 | RSVD_13_11 | 写入无影响,读取为零。 | R |
| 10 | CLK_GEN_SEL_VAL | 时钟生成器选择值 当主机控制器支持可编程时钟生成器时,此位有效。 取值: 0:主机控制器Ver2.0兼容时钟生成器 1:可编程时钟生成器 | R |
| 9:0 | FREQ_SEL_VAL | SDCLK/RCLK频率选择值 10位预置值,将由主机系统设置的时钟控制寄存器中的 SDCLK/RCLK频率选择字段。 | R |
插槽中断状态寄存器
SLOT_INTR_STATUS_RBASE + 0xfc
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:8 | Reserved | 写入无影响,读取为零。 | R |
| 7:0 | INTR_SLOT | 各插槽的中断信号 这些状态位指示每个插槽的中断信号和唤醒信号的逻辑 OR。最多可定义 8 个插槽。如果一个中断信号与多个插槽相关联,主机驱动程序可通过读取这 些状态位来了解哪个中断发生。通过上电复位或设置软件全部复位,中断信 号将被无效,该状态读数为 00h。 ... ... | R |
主机控制器版本寄存器
HOST_CNTRL_VERS_RBASE + 0xfe
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:8 | VENDOR_VERSION_NUM | Vendor版本编号,不可配置。 | R |
| 7:0 | SPEC_VERSION_NUM | HostController协议版本编号,不可配置。 | R |
MSHC版本 ID寄存器
MSHC_VER_ID_RBASE + 0x500
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | MSHC_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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | MSHC_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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 7:5 | RSVD | 写入无影响,读取为零。 | R |
| 4 | SW_CG_DIS | 内部时钟门控取消控制位 在需要时,该字段必须用于取消IP的内部时钟门控。当被取消时,时钟 并未被屏蔽掉。当编程该位时到达核的时钟(除hclk)必须被停止。 0:内部时钟有效,时钟门控由内部控制 1:内部时钟门控无效,时钟不会被内部屏蔽。 | RW |
| 3:1 | RSVD | 写入无影响,读取为零。 | R |
| 0 | CMD_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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 15:11 | Reserved | 写入无影响,读取为零。 | R |
| 10 | CQE_PREFETCH_ | 使能或禁用 CQE 的数据预取功能 DISABLE 此字段设置为 1 时,软件可禁用 CQE 的数据预取功能。 0:数据预取已使能 1:禁用数据预取功能 | RW |
| 9 | CQE_ALGO_SEL | 选择执行的调度算法 该位选择用于从众多准备就绪的任务中选择一个执行的算法。 0:高优先级任务优先于普通优先级任务。DBR rings的顺序(先到 先服务)用于解决同等优先级任务之间的争夺。 1:先到先得,DBR环的顺序决定任务的优先执行顺序 | RW |
| 8:4 | Reserved | 写入无影响,读取为零。 | R |
| 3 | EMMC_RST_N_OE | eMMC卡复位信号PAD输出使能控制 该位驱动msc控制器的sd_rst_n_oe输出 1:sd_rst_n_oe为1 0:sd_rst_n_oe为0 | RW |
| 2 | EMMC_RST_N | eMMC卡复位信号 该位驱动msc控制器的sd_rst_n输出 1:无效 0:有效 | RW |
| 1 | DISABLE_DATA_C | 禁用数据 CRC 校验 RC_CHK 该位控制屏蔽 eMMC 模式下写入卡的 CRC16 错误。这对 eMMC 设备的总线测试 (CMD19) 非常有用。在总线测试中,eMMC 卡不 发送块的 CRC 状态,这可能会产生 CRC 错误。在总线测试期间, 可使用该位屏蔽 CRC 错误。 1:禁用数据 CRC 校验 0:使能数据 CRC 校验 | RW |
| 0 | CARD_IS_EMMC | 存在 eMMC 卡 该位表示所连接卡的类型。应用程序可根据连接到 MSHC 的卡对该 位进行编程。 1:eMMC 卡 0:非 eMMC 卡 校准/自动校准控制寄存器 (AT_CTRL_R, 0x500+0x40) | RW |
校准/自动校准控制寄存器
AT_CTRL_RBASE + 0x500 + 0x40
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:27 | Reserved | 写入无影响,读取为零。 | R |
| 26:24 | SWIN_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:21 | Reserved | 写入无影响,读取为零。 | R |
| 20:19 | POST_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:17 | PRE_CHAN | cclk_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 |
| 16 | TUNE_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:5 | Reserved | 写入无影响,读取为零。 | R |
| 4 | SW_TUNE_ | 该位使能软件管理的校准流程。 EN 0x1:软件管理校准使能。AT_STAT_R.CENTER_PH_CODE位可写入。 0x0:软件管理校准无效。 | RW |
| 3 | RPT_TUNE_ERR | Frameerr在执行校准期间不会生成。该debug位用于报告这些错误 0x1:用于报告frameerr的debug模式。 0x0:默认模式,不会报告错误。 | |
| 2 | SWIN_TH_ | 采样窗口阈值使能,用于选择校准模式。该位仅在SAMPLE_CLK_SEL=0 EN 时可编程。 0x1:校准时选择第一个完整的满足SWIN_TH_VAL所定义的阈值的采样窗 口。 0x0:采样时遍历完整的delayline,选择长度最大的采样窗口。 | RW |
| 1:0 | Reserved | 写入无影响,读取为零。 校准/自动校准状态寄存器 (AT_STAT_R, 0x500+0x44) | R |
tuning /auto-tuning 状态寄存器
AT_STAT_RBASE + 0x500 + 0x44
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:3 | Reserved | 写入无影响,读取为零。 | R |
| 2:0 | PH_SEL_C | 自动校准时采样窗口中心相位,反应在msc控制器的tuning_cclk_sel输出 ODE 端口上。 低功耗控制寄存器 (LP_CTRL_R, 0x500+0x50) | RW |
低功耗控制寄存器
LP_CTRL_RBASE + 0x500 + 0x50
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15:8 | LP_TH_VAL | 写等待阈值寄存器。当MSC写卡时,在DMA等待DDR返回数据期间,当 缓存RAM中的写数据量大于XFER_BLOCK_SIZE -LP_TH_VAL时,打开 卡的时钟,否则关闭卡的时钟。仅在LP_TH_EN=1时有效。 | RW |
| 7 | LP_TH_EN | 写等待阈值使能寄存器。 0x0(DISABLE):写等待期间一直打开时钟; 0x1(ENABLE):写等待期间根据缓存RAM存储的写数据量判断是否打开 时钟。 | RW |
| 6:0 | LP_CNT | 当卡处于空闲状态时,MSC 会在 LP_CNT 个周期之后关闭卡时钟。仅在 CARD_LP_EN=1时有效。 | RW |