主机接口模块 (HIF)
9 Apr 2024
Read time: 1 minute(s)
寄存器单元
通过 AHB 接口访问 SDMC 控制器,控制器内部使用 AHB 从机接口连接 AHB 主机。以下为主机接口模块相关单元的具体描述:
寄存器单元提供了寄存器的读写访问功能,寄存器位宽为 32 位。所有的寄存器都属于 HIF 时钟域。
- 当一个命令发送到
Card 时,设置 0x00C SDMC_CMD 寄存器的 START_CMD
位为 1。
所有需要 CIF 操作的相关寄存器均发送到 CIF 模块。
- 一旦 START_CMD 置
1,在没有硬件清零之前,从
HIF 到 CIF 的下列寄存器不能被写入。注: 寄存器单元具有硬件锁功能,防止非法写入寄存器。
- CMD
- CMDARG
- CLKCTRL
- TTMC
- HCTRL2
- 等待硬件清零 START_CMD 位,即可写入上述寄存器。
中断控制单元
中断控制单元用于产生中断信号。中断信号的产生必须满足以下条件:
- 中断使能寄存器 0x03C SDMC_INTEN 相应的中断位置 1。
- 使能全局中断使能位。
FIFO 控制单元
FIFO 控制单元连接内部 FIFO 到 Host 接口以及卡接口模块。FIFO 深度为 128,FIFO 位宽为 32 位。由于读和写传输不会同时发生, 使用共享 FIFO 用于读写传输,以节省芯片面积。
卡检测单元
卡检测单元用于检测 SD 卡插入和拔出时信号电平变化。上电后,控制器读取卡检测端口的状态值并将其存储到内存里,每次检测的状态值都与之前的状态值进行异或比较并更新到
0x054 SDMC_CDET 中的
CDET_STAT
位。
注: 仅 SDMC1 控制器支持硬件卡检测单元,其他控制器可以通过 GPIO
进行卡检测。
卡检测信号连接到卡座上,需要外部上拉:
- 当没有卡插入时,检测到高电平,CDET_STAT 位为 1。
- 当检测到卡插入时,卡检测引脚通过卡座连接到地, 检测到低电平,CDET_STAT 位为 0。
通过一个去抖计时器来延迟检测时间,避免由于机械插拔造成的信号抖动,并产生一个中断信号发送给 CPU。用户可以通过编程 DEBC_CNT 位域设置去抖时间。