Edit online

主机接口模块 (HIF)

9 Apr 2024
Read time: 1 minute(s)

寄存器单元

通过 AHB 接口访问 SDMC 控制器,控制器内部使用 AHB 从机接口连接 AHB 主机。以下为主机接口模块相关单元的具体描述:

寄存器单元提供了寄存器的读写访问功能,寄存器位宽为 32 位。所有的寄存器都属于 HIF 时钟域。
  1. 当一个命令发送到 Card 时,设置 0x00C SDMC_CMD 寄存器的 START_CMD 位为 1。

    所有需要 CIF 操作的相关寄存器均发送到 CIF 模块。

  2. 一旦 START_CMD 置 1,在没有硬件清零之前,从 HIF 到 CIF 的下列寄存器不能被写入。
    注: 寄存器单元具有硬件锁功能,防止非法写入寄存器。
    • CMD
    • CMDARG
    • CLKCTRL
    • TTMC
    • HCTRL2
  3. 等待硬件清零 START_CMD 位,即可写入上述寄存器。

中断控制单元

中断控制单元用于产生中断信号。中断信号的产生必须满足以下条件: 一旦中断控制单元检测到某个中断条件,初始中断状态寄存器 0x040 SDMC_INTST 对应的中断状态位会置 1。初始中断状态位保持,直到通过软件写 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 位域设置去抖时间。