MMC控制器,能读写MMC卡或者SD卡。
每个MMC控制器包括:
1 支持MMC或者SD卡
2 支持MMC/SD协议或SPI协议
3 可供未来扩展的面向软件的实现
4 为MMC控制器的操作提供可编程频率
5 为控制MMC和SD卡之间发送定时的时钟,提供可编程频率
1 MMC控制器的任务
如上图,MMC在CPU或者DMA控制,和一个或者多个存储卡之间发送数据。CPU或DMA扩展器可以读写MMC控制器的控制和状态寄存器。需要的时候,CPU或DMA控制器可以存储或者恢复DSP存储器或其他外设寄存器里的数据。
遵循控制器的本地协议或基于SPI协议进行通信。本地协议使用1条双向数据线(MMC),或4条并行的数据线(SD)。SPI协议使用两条串行的数据线,一条用来存储数据到卡上,一条用来从卡上恢复数据。
2 MMC控制器引脚
3 功能时钟和存储时钟
在MMC模块里,必须置位功能时钟和存储时钟的工作频率
功能时钟决定了MMC控制器的工作频率。DSP时钟发生器从一个外部时钟源接收一个信号,产生CPU时钟,MMC控制器里的分频器将其分配,产生功能时钟。通过初始化功能时钟MMCFCLKn的FDIV段,就可得到分频值,得到的功能时钟频率为 CPU时钟频率/(FDIV+1)。
存储时钟是MMC控制器CLK引脚所传递的时钟信号,该时钟控制MMC控制器与所连接的MMC卡之间的通信速率。存储时钟是对工作时钟分频产生的,分频值由MMCCLKx寄存器中的CDIV决定。
4 MMC/SD模式
该模式又称本地模式。
MMC/SD模式下CMD引脚主要用来传递MMC控制器对存储卡的控制命令和参数,并传送存储卡对命令的回复;
数据线传送读写的数据,而CLK则被控制器用来传送给存储卡的时钟信号。该模式下控制器可以连接多个存储卡,控制器将为这些卡分配不同的地址。下面给出MMC/SD模式的读写时序。
位
|
字段
|
数值
|
说明
|
8
|
DMAEN
|
0
1
|
禁止
DMA
事件
使能
DMA
事件
|
7~6
|
DATEG
|
00
01
10
11
|
禁止
DAT2
边沿检测
DAT3
上升沿检测
DAT3
下降沿检测
DAT3
上升和下降沿都进行检测
|
5
|
SPIEN
|
0
1
|
MMC/SD
模式
SPI
模式
|
2
|
WIDTH
|
0
1
|
MMC
卡(使用
DAT0
)
SD
卡(使用
DAT0~3
)
|
1
|
CMDRST
|
0
1
|
MMC
控制器的命令逻辑使能
MMC
控制器的命令逻辑在复位状态
|
0
|
DATRST
|
0
1
|
MMC
控制器的数字逻辑使能
MMC
控制器的数字逻辑在复位状态
|
位
|
字段
|
数值
|
说明
|
8
|
IDLEEN
|
0
1
|
MMC
控制器不能被停止;
如果PERI=1,则IDLE命令后MMC控制器进入静止状态 |
7~0
|
FDIV
|
0~255
|
工作时钟分频数
|
位
|
字段
|
数值
|
说明
|
4
|
CLKEN
|
0
1
|
CLK
信号被禁止,该引脚的信号为低;
CLK
信号使能
|
3~0
|
CDIV
|
0~15
|
存储时钟分频数
|
要注意的是,MMC/SD控制器选择SPI协议的话,MMC/SD卡也要选择SPI协议。