1. ARM PrimeCell MCI接口架构解析
ARM PrimeCell MCI(MultiMediaCard Interface)是一种专为嵌入式系统设计的高效存储控制器接口,它通过APB(Advanced Peripheral Bus)总线与处理器核心连接。这个接口在现代嵌入式系统中扮演着关键角色,特别是在需要与SD卡、MMC卡等存储设备通信的场景中。
1.1 APB接口基础架构
APB作为AMBA总线家族中的低功耗成员,其设计哲学是简单高效。PrimeCell MCI的APB接口模块包含三个关键组成部分:
- 数据路径单元:负责在APB总线和MCI内部寄存器/FIFO之间传输数据。这个32位宽的数据通道采用双向设计,支持字节、半字和全字访问。
- 寄存器解码逻辑:将APB地址总线映射到MCI的各个功能寄存器。值得注意的是,MCI的基地址是可配置的,这为系统集成提供了灵活性。
- 中断/DMA控制单元:产生中断请求和DMA传输信号,这是接口能够高效工作的关键。
实际开发中,APB接口的时钟域(PCLK)通常独立于MCI工作时钟(MCLK)。这种异步设计需要在接口处添加适当的同步逻辑,避免亚稳态问题。
1.2 中断逻辑工作机制
中断系统是MCI接口响应异步事件的核心机制。如图2-14所示的中断请求逻辑,其工作流程具有以下特点:
-
双中断通道设计:MCI提供两个独立的中断请求信号(IRQ0和IRQ1),每个通道有自己的掩码寄存器(MCIMask0和MCIMask1)。这种设计允许对中断源进行分类管理。
-
状态-掩码联动机制:当中断状态寄存器的某位被置位,且对应掩码位也同时被使能时,中断请求信号才会被触发。这种"与逻辑"关系提供了精确的中断控制能力。
-
时钟域独立性:中断请求的生成不受PCLK时钟是否使能的限制。这意味着即使APB接口处于低功耗状态,存储卡产生的事件仍能唤醒系统。
典型的中断源包括:
- 命令响应完成(CmdRespEnd)
- 数据传输结束(DataEnd)
- FIFO溢出/欠载(RxOverrun/TxUnderrun)
- CRC校验错误(CmdCrcFail/DataCrcFail)
1.3 DMA控制器接口特性
D
