再上一篇:5.8 多媒体通讯器单元
上一篇:5.8.2 内部集成电路声音(I2S)控制器
主页
下一篇:第六章 Xscale 应用处理器开发及应用实例
再下一篇:6.1.2 Sitsang 板存储器及地址空间映射
文章列表

5.8.3 多媒体卡控制器

嵌入式系统(修订本)——Intel XScale 结构与开发 陈章龙 著

一、简介
PXA250/210 应用处理机的多媒体卡(MMC)控制器作为应用处理机与MMC 栈(一套 存贮器卡)的连接桥。MMC 控制器可支持MMC 系统,它为一种低价数据存贮通讯系统。 可从MMC 协会的网页www.mmca.org 了解MMC 系统的详细介绍。应用处理机的MMC 控 制器支持MMC 系统定义V2.1,除了不支持1 和3 字节数据传送,最大块大小为1023。

MMC 控制器支持至MMC 栈的标准MMC 或串行外围接口(SPI)总线的翻译规程。访 问应用处理机的软件必须指定使用MMC 或SPI 方式作为与MMC 控制器通讯的规程。

MMC 控制器特性如下:

z 数据传送速率可高至20Mbs。

z 一个响应FIFO。

z 双接收数据FIFO。

z 双发送FIFO。

z 支持MMC 或SPI 方式的两个MMC。

MMC 控制器包含卡指定功能,作为 MMC 系统的总线主机,实现与卡栈接口的标准接

口。控制器处理卡的初始化,产生和检验CRC;进行命令、响应和数据传送。

MMC 总线把卡栈连接至控制器。软件和控制器能开、关 MMC 时钟。卡栈和控制器通 过命令和数据线进行串行通讯,实现以消息(Message)为基础的规程。

信息包含下列令牌(Token):

z 命令:一个6 字节的命令令牌启动一次操作。命令集包含卡初始化、卡寄存器读出 和写入、数据传送字。MMC 控制器仅从MMCMD 线串行发送命令令牌。命令令牌 格式见表5-41。

表 5-41 命令令牌格式

47

46

[45:40]

[39:8]

[7:1]

0

宽度(位)

1

1

6

32

7

1

0

1

X

X

X

1

描述

开始位

传输位

命令索引

参数

CRC7

结束位

z 响应:一个响应令牌是对命令令牌的回答。各个命令有指定回答类型或无回答类型。

具体响应令牌格式与响应和卡方式有关。

z 数据:数据在控制器和卡之间以高至 20Mbps 速率和 8 位块形式串行传送。数据令 牌格式与卡的方式有关。表 5-42 为 MMC 数据令牌格式。表 5-43 为 SPI 数据令牌 格式。

表 5-42 MMC 数据令牌格式

流数据

1

X

没有CRC

1

块数据

0

X

X

1

描述

开始位

数据

CRC7

结束位

表 5-43 SPI 数据令牌格式

11111110

X

X

描述

开始字节

数据

CRC16

在MMC 方式,所有操作包含命令令牌,大多数命令有相关的响应令牌。读和写命令也
有数据令牌。命令和响应在双向MMCMD 线上传送,数据令牌在双向MMDAT 线上传送。 一个典型的有或无响应MMC 方式命令时序图见图5-23。图5-24 为顺序读或写的典型MMC 方式时序图。

图 5-23 无数据令牌的 MMC 方式操作

图 5-24 有数据令牌的 MMC 方式操作
在SPI 方式,不支持全部命令。可用的命令具有命令和响应令牌。在SPI 方式,MMCMD 和MMDAT 线并非双向。对应用处理机MMCMD 为输出,MMDAT 为输入。命令和写数据 令牌通过 MMCMD 发送,响应和读数据令牌通过 MMDAT 接收。图 5-25 为典型的无数据 令牌的SPI 方式时序图。图5-26 和5-27 分别为SPI 方式读和写时序图

图 5-25 无数据令牌的 SPI 方式操作

图 5-26 SPI 方式读操作

图 5-27 SPI 方式写操作
二、MMC 控制器功能
软件必须读和写入MMC 控制器寄存器和FIFO 启动一次与卡的通讯。

MMC 卡控制器是软件和 MMC 总线的接口。它控制软件和 MMC 总线之间的定时和规 程。它包含控制和状态寄存器,一个 8 单元的 16 位响应 FIFO,两个 32 单元的 8 位接收数 据FIFO,两个32 单元8 位发送FIFO。

1、引脚描述

MMC 控制器有以下引脚,它们为GPIO 的第二功能。

z MMCLK:输出到MMC 的时钟。

z MMCMD:双向的命令线。

z MMDAT:双向的数据线。

z MMCCS0:片选0 输出(仅用于SPI 方式)。

z MMCCS1:片选1 输出(仅用于SPI 方式)。

2、卡初始化操作

在复位后,必须置位MMC_CMDAT 的INIT 位,以发送80 个时钟至MMC 卡。在这以 后,软件应通过把相应的命令索引装入MMC_CMD 寄存器来连续发CMDI,直到卡指出完 成了上电操作。以后软件可向卡赋予地址或把它置为SPI 方式。

3、MMC 和 SPI 方式

复位后,MMC 卡为 MMC 方式。可通过置位 MMC_SPI 寄存器的位来把它设置为 SPI
方式。
(1)MMC 方式
在MMC 方式,MMCMD 和MMDAT 线为双向,需外部拉高电阻。
在 MMC 卡上电后,它被赋予缺省的 0x0001 的相对卡地址(RCA)。在初始化期 间,软件应向每一张卡赋予不同的地址。卡以后被由 7 位 CRC 保护的命令令牌的主 题(argument)部分的新的相对地址所寻址。
在写数据传送,数据后接来的卡的 5 位 CRC 状态令牌。在 CRC 状态令牌后,卡 可通过拉低MMDAT 线表明它为忙。
读出操作的起始地址可为卡存贮器有效地址空间的任何随机字节地址。对写操作, 起始地址必须是段边界,数据长度必须为段长度的整数倍。段是在写操作中将被擦除 的块数,对每一张MMC 卡它是固定的。一个块为传送的字节数。

MMC 方式支持以下数据传送方式:

z 单块读/写:在单块方式,传送单个块数据。读或写命令牌中指定起始地址。 软件必须把传送的字节数写入 MMC_BLKLEN 寄存器。数据块由 16 位 CRC 保护,它附于最后一个数据位后。

z 多块读/写:在多块方式,传送多块数据。每块大小由MMC_BLKLEN 指定。 数据放于连续存贮器地址,其起始地址由命令令牌指定。软件必须在 MMC_NOB 寄存器中指定传送的块数目。每一个数据块由16 位CRC 保护。 多块数据传送以停止传送命令结束。

z 成串读/写:在成串方式,传送连续数据串。开始地址在读或写命令令牌中指 定。数据串以停止传送命令结束。对写传送,停止传送命令必须与最后六字 节数据一起传送。这保证正确数据数量写入卡内。对读传送,停止传送命令 可在数据传送后发生。该方式中数据无CRC 保护。

(2)SPI 方式

SPI 方式是可选的第二种通讯规程。在SPI 方式,MMCMD 和MMDAT 线非双向。 仅允许单块数据传送。MMCMD 线是控制器输出,向MMC 卡发命令令牌和写数据。 MMDAT 线是控制器输入,接收来自MMC 卡的响应令牌和读出数据。

注意:当卡处于SPI 方式,只有开关卡的电源才可返回MMC 方式。 卡的寻址通过硬件片选MMCCS1 和MMCCS0 实现。所有命令、响应和数据令牌
均为8 位长,在片选有效后发送。
命令令牌由7 位CRC 保护。卡总发送对命令令牌的响应。响应令牌有四种格式, 包括8 种出错响应。响应令牌的长度为1、2 或4 字节。

SPI 方式提供非保护方式。在这种方式里,命令、响应和数据令牌中仍有CRC 位, 但卡和控制器忽略这些位。

在写数据传送里,数据后接来自卡的8 位CRC 状态令牌。如同MMC 方式,卡可 在状态令牌后拉低MMDAI 线以表示它为忙。在读数据传送里,卡可以数据或一字节 长的数据出错令牌来响应。

4、错误保护

MMC 控制器可检测以下MMC 总线的错误,并反映在MMC_STAT 寄存器中。

z 响应CRC 出错:命令响应的CRC 计算错。

z 响应超时:响应不在指定时钟数前发生。

z 写数据CRC 错:卡返回数据的CRC 状态错。

z 读数据CRC 错:数据的CRC 计算错。

z 读超时:在指定时钟数前没开始读操作。

z SPI 数据错:在SPI 方式发现读数据错令牌。

5、时钟控制

MMC 控制器和软件都能通过开、关来控制MMC 总线时钟(MMCLK)。这帮助控制数 据流不产生下溢出和溢出,也可节省电源。软件也可随时改变频率以对某一种卡实现最高的 数据传送速率。

MMC 控制器有内部频率发生器,可启动、停止、分频MMC 总线时钟。可选择20MHZ

和它的六种分频值。软件必须先停止时钟,再改变时钟频率。
在两个接收FIFO 都变满,或软件在读出一个接收FIFO 时而另一个接收FIFO 变满,或 在数据写期间两个发送FIFO 都变空,或软件在写入一个发送FIFO 而另一个发送FIFO 变空, 控制器将自动关闭时钟以防止数据发生溢出或下溢出。对读数据传送,在接收FIFO 变空后 控制器重新允许时钟;对写数据传送,在发送FIFO 不再空时控制器重新允许时钟。

6、数据 FIFO

(1)响应数据FIFO(MMC_REC)
响应 FIFO(MMC_REC)存放在从控制器发命令至 MMC 卡后收到的响应。

MMC_REC 只可读出,为16 位8 单元FIFO。

FIFO 将存放所有可能的响应长度。仅为一字节的响应存放于FIFO 16 位单元的高 位字节。从响应 FIFO 读出第一个半字为接收到的响应的高半字。FIFO 不存放响应 CRC。CRC 检验的状态存放于状态寄存器MMC_STAT。

(2)接收数据FIFO(MMC_RXFIFO)
有两个接收数据 FIFO,只可由软件以字节方式读出。它们为双 FIFO,每个 FIFO
为32 单元深1 字节宽。访问FIFO 由控制器控制,依赖于FIFO 的状态。 在系统复位后和命令序列开始时,清0 两个FIFO 和它们的控制位。

FIFO 在软件和MMC 总线间变换。任何时候,软件读出访问一个FIFO,MMC 写 访问另一个FIFO。

FIFO 读请求只能每个FIFO(32 字节)访问有效一次。因而每次请求必须读出32

字节,除了最后一次读出,它可能少于32 字节。
如使用DMA,它必须设置为32 字节成批方式的1 字节读出。
(3)发送数据FIFO(MMC_TXFIFO)
有两个发送数据 FIFO,只可由软件以字节方式写入。它们为双 FIFO,每个 FIFO
为32 单元深1 字节宽。访问FIFO 由控制器控制,依赖于MMC 的状态。 在系统复位后命令序列开始时,清0 两个FIFO 和它们的控制位。

FIFO 在软件和MMC 总线间交换。任何时候,软件写入访问一个FIFO,MMC 读 访问另一个FIFO。

FIFO 写入请求只能每个 FIFO(32 字节)访问有效一次,因而每次请求必须写入

32 字节,除了最后一次写入,它可能少于32 字节。

如使用DMA,它必须设置为32 字节成批方式的1 字节写入。 如最后一次的写入少于 32 字节,必须置位 MMC_PRTBUF 的 BUF_PART_FULL
位。使用 DMA 时,最后的描述器必须程控为允许在 DMA 数据写入前产生中断。在 发生中断后,软件必须置位MMC_PRTBUF 的BUF_PART_FULL 位。
三、卡通讯规程

1、基本的无数据命令和响应序列 初始时,软件应如下执行:

(1)停止时钟
(2)向MMC_I_MASK 写入0x6F,并等待MMC_I_REG 的CLK_IS_OFF 中断。
(3)需要时写入MMC_CMD、MMC_ARGH、MMC_ARGL、MMC_CMDAT(即使它 不改变,也必须写入)、MMC_CLKRT、MMC_SPI、MMC_RESTU。
(4)启动时钟
(5)向MMC_I_MASK 写入0x7F,并等待MMC_I_REG 的END_CMD_RES 中断。
(6)读出MMC_RES FIFO 和MMC_STAT 寄存器。

2、数据传送

在进行数据传送时,与前相比,在启动时钟前,软件还必须写入 MMC_RDTO、

MMC_BLKLEN、MMC_NOB 寄存器。

在软件写入这些寄存器和启动时钟后,软件必须读出 MMC_RES,并读出或写入

MMC_RXFIFO 或MMC_TXFIFO。

在完成读或写数据 FIFO 后,软件必须等待相应的中断。可读出 MMC_STAT 来保证已 完成传送和检查传送的状态。
在使用 DMA 请求时,在 FIFO 准备读出或写入时,控制器向 DMA 发标志。要求所有 FIFO 读和写将读空或写满连接的FIFO。如任何时候,MMC_TXFIFO 没装满32 字节,软件 必须置位 MMC_PRTBUF 的 BUF_PART_FULL 位。软件可向 MMC_TXFIFO 写入多于需要 的字节,但控制器只发送由MMC_BLKLEN 指定的字节数。
在任何数据传送的结束或MMC 总线发生忙信号时,MMC 控制器等待8 个MMC 时钟, 然后发出MMC_I_REG 的DATA_TRAN_DONE 中断以告诉软件,数据传送已完成。

3、忙序列

MMC 控制器在每次块数据写入后检测来自卡的忙信号,它也在每次软件指定要检测忙 信号时在命令结束检测忙信号。

在MMC 总线上发生忙信号,软件只发送以下两个命令之一:

z 发送状态命令(CMD13) z 断开命令(CMD7) 在软件断开一个处于忙状态的卡时,停止忙信号,软件可连接至另一个卡。在卡忙时,

软件不可对它执行另一个序列。
四、MMC 控制器寄存器

MMC 控制器共有18 个寄存器,见表5-44。

表 5-44 MMC 控制器寄存器

地址

寄存器名称

描述

0x4110 0000

MMC_STRPCL

控制启动和停止MMC 时钟

0x4110 0004

MMC_STAT

MMC 状态寄存器(只读)

0x4110 0008

MMC_CLKRT

MMC 时钟速率

0x4110 000c

MMC_SPI

SPI 方式控制位

0x4110 0010

MMC_CMDAT

命令/响应/数据顺序控制

0x4110 0014

MMC_RESTO

期望的响应时间超时

0x4110 0018

MMC_RDTO

期望的读数据超时

0x4110 001c

MMC_BLKLEN

数据传输块的长度

0x4110 0020

MMC_NOB

针对块模式,块的数目,

0x4110 0024

MMC_PRTBUF

Partial MMC_TXFIFO FIFO written

0x4110 0028

MMC_I_MASK

中断屏蔽

0x4110 002c

MMC_I_REG

中断寄存器(只读)

0x4110 0030

MMC_CMD

当前命令的索引

0x4110 0034

MMC_ARGH

现行命令的 MSW 部分参数(高 16

位)

0x4110 0038

MMC_ARGL

现行命令的 LSW 部分参数(低 16

位)

0x4110 003c

MMC_RES

FIFO 响应(只读)

0x4110 0040

MMC_RXFIFO

接收FIFO(只读)

0x4110 0044

MMC_TXFIFO

传送FIFO (只写)

1、MMC_STRPCL 寄存器


位31~2:保留
位1、0:STRPCL——启动/停止MMC 时钟

00=无操作

01=停止MMC 时钟

10=启动MMC 时钟

11=保留

2、MMC_STAT 寄存器


位31~14:保留
位13:END_CMD_RES——结束命令响应

0=没完成命令和响应序列

1=完成命令和响应序列 位12:PRG-DONE——编程完成

0=卡没完成编程,正忙。

1=卡已完成编程,不忙。

位11:DATA_TRAN_DONE——数据发送完成

0=没完成向卡的数据发送

1=完成向卡的数据发送 位10、9:保留

位8:CLK_EN——时钟允许

0=关闭MMC 时钟

1=打开MMC 时钟

位7:RECV_FIFO_FULL——接收FIFO 满

0=接收FIFO 不满

1=接收FIFO 满

位6:XMIT_FIFO_EMPTY——发送FIFO 空

0=发送FIFO 不空

1=发送FIFO 空

位5:RES_CRC_ERR——响应CRC 错

0=响应CRC 没错

1=响应发生CRC 错

位4:SPI_READ_ERROR_TOKEN——SPI 读错令牌

0=没接收到SPI 读数据错令牌

1=接收到SPI 读数据错令牌 位3:CRC_READ_ERROR——CRC 读错

0=接收数据无错

1=接收数据发生CRC 错

位2:CRC_WRITE_ERROR——CRC 写错

0=发送数据无错

1=卡发现发送的数据有错

位1:TIME_OUT_RESPONSE——超时响应

0=卡响应没超时

1=卡响应超时

位0:READ_TIME_OUT——读超时

0=卡数据读出没超时

1=卡数据读出超时

3、MMC_CLKRT 寄存器


位31~3:保留
位2~0:CLK_RATE ——选择MMC 时钟速率

000=20 MHZ

001=10 MHZ

010=5 MHZ

011=2.5 MHZ

100=1.25 MHZ

101=0.625 MHZ

110=0.3125MHZ

111=保留

4、MMC_SPI 寄存器


位31~4:保留
位3:SPI_CS_ADDRESS——指定活动卡的SPI 的片选

0=允许CS0

1=允许CS1

位2:SPI_CS_EN——SPI 片选允许

0=禁止SPI 片选

1=允许SPI 片选

位1:CRC_ON——CRC 发生允许

0=禁止CRC 发生和检验

1=允许CRC 发生和检验 位0:SPI_EN——SPI 方式允许

0=禁止SPI 方式

1=允许SPI 方式

5、MMC_CMDAT 寄存器


位31~8:保留
位7:MMC_DMA_EN——DMA 方式允许

0=程控I/O 方式

1=DMA 方式

在使用DMA 方式时,这位屏蔽RXFIFO_RD_REQ 和TXFIFO_WR_REQ 中断 位6:INIT——80 初始化时钟

0=不在命令序列前发80 个时钟

1=在命令序列前发80 个时钟

位5:BUSY——指定是否在现行命令后等待忙信号。这位仅用于无数据命令/响应传送。 位4:STREAM_BLOCK——读方式

0=现行命令序列的数据传送不是读方式

1=现行命令序列的数据传送是读方式 位3:WRITE/READ——读或写操作

0=指定现行命令的数据传送为读操作

1=指定现行命令的数据传送为写操作 位2:DATA_EN——允许数据传送

0=现行命令无数据传送

1=指定现行命令包括数据传送

位1、0:RESPONSE_FORMAT——指定现行命令的响应格式

00=MMC 方式无响应,不支持SPI 方式

01=MMC 方式中的R1、R1b、R4 和R5 格式。SPI 方式中的R1 和R1b 格 式。

10=MMC 和SPI 方式的R2 格式。

11=MMC 和SPI 方式的R3 格式

6、MMC_RESTO 寄存器 位31~7:保留

位6~0:RES_TO——响应的超时等待值(单位为MMC 时钟)

7、MMC_RDTO 寄存器

MMC_RDTO 指定在命令后,接收数据的超时等待值。它的位 15~0 为 READ_TO,高

16 位为保留位。单位为256 个20MHZ 周期。

8、MMC_BLKLEN 寄存器

MMC_BLKLEN 指定一块中数据的字节数。它的位9~0 为BLK_LEN,位31~10 为保留

位。

9、MMC_NOB 寄存器

在块方式,MMC_NOB 指定块数目。它的位15~0 为MMC_NOB,位31~16 为保留位。

10、MMC_PRTBUF 寄存器

MMC_PRTBUF 仅有一位(位0)——BUF_PART_FULL。它为缓冲器部分满标志。

0=缓冲器没部分满。

1=缓冲器部分满,必须与另一个发送缓冲器交换。软件在发下一个命令前, 必须清0 这位。

11、MMC_I_MASK 寄存器


位31~7:保留
位6:TXFIFO_WR_REQ——发送FIFO 写请求中断屏蔽。

0=不屏蔽

1=屏蔽

位5:RXFIFO_RD_REQ——接收FIFO 读请求中断屏蔽

0=不屏蔽

1=屏蔽

位4:CLK_IS_OFF——时钟关闭中断屏蔽

0=不屏蔽

1=屏蔽

位3:STOP_CMD——停止传送命令准备好中断屏蔽

0=不屏蔽

1=屏蔽

位2:END_CMD_RES——结束命令响应中断屏蔽

0=不屏蔽

1=屏蔽

位1:PRG_DONE——编程完成中断屏蔽

0=不屏蔽

1=屏蔽

位0:DATA_TRAN_DONE——数据传送完成中断屏蔽

0=不屏蔽

1=屏蔽

12、MMC_I_REG 寄存器


位31~7:保留
位6:TXFIFO_WR_REQ——发送FIFO 写请求

0=没有MMC_TXFIFO 写数据请求。

1=发生MMC_TXFIFO 写数据请求。

在每次写入TXFIFO 后清0,但立即再次置位,除非FIFO 中无单元。 位5:RXFIFO_RD_REQ——接收FIFO 读请求

0=没有从MMC _RXFIFO 读数据请求。

1=发生从MMC _RXFIFO 读数据请求。

每次读出RXFIFO 后清0,但立即再次置位,除非FIFO 为空。 位4:CLK_IS_OFF——时钟关闭

0=MMC 时钟没关闭

1=由于STRPCL 的停止位关闭了MMC 时钟 在启动时钟时,由MMC_STAT 的CLK_EN 位清0。

位3:STOP_CMD——用于流方式写

0=MMC 没准备好停止发送命令

1=MMC 准备停止发送命令

在CMD12 装入MMC_CMD 寄存器且启动时钟时清0
位2:END_CMD_RES——结束命令响应

0=MMC 没收到响应

1=MMC 收到响应或发生响应超时

由MMC_STAT 的END_CMD_RES 位清0
位1:PRG_DONE——编程完成

0=卡没完成编程,在忙。

1=卡完成编程,不忙。

由MMC_STAT 的PRG_DONE 位清0
位0:DATA_TRAN_DONE——数据传送完成

0=没完成数据传送。

1=完成数据传送,或发生读数据超时。

由MMC_STAT 的DATA_TRAN_DONE 位清0

13、MMC_CMD 寄存器


位31~8:保留
位7:保留——只可读出,总为0。为命令序列的启动位,不能改变。 位6:保留——只可读出,总为1。为命令序列的发送位,不能改变。 位5~0:CMD_INDEX——命令索引,见表5-44。
表 5-44 MMC 命令索引值

CMD 索引

命令

方式

缩写

000000

CMD0

MMC/SPI

GO_IDLE_STATE

000001

CMD1

MMC/SPI

SEND_OP_COND

000010

CMD2

MMC

ALL_SEND_CID

000011

CMD3

MMC

SET_RELATIVE_ADDR

000100

CMD4

MMC

SET_DSR

000101

CMD5

保留

000110

CMD6

保留

000111

CMD7

MMC

SELECT/DESELECT_CARD

001000

CMD8

保留

001001

CMD9

MMC/SPI

SEND_CSD

001010

CMD10

MMC/SPI

SEND_CID

001011

CMD11

MMC

READ_DAT_UNTIL_STOP

001100

CMD12

MMC

STOP_TRANSMISSION

001101

CMD13

MMC/SPI

SEND_STATUS

001110

CMD14

保留

001111

CMD15

MMC

GO_INACTIVE_STATE

010000

CMD16

MMC/SPI

SET_BLOCKLEN

010001

CMD17

MMC/SPI

READ_SINGLE_BLOCK

010010

CMD18

MMC

READ_MULTIPLE_BLOCK

010011

CMD19

保留

010100

CMD20

MMC

WRITE_DAT_UNTIL_STOP

010101

CMD21

保留

010110

CMD22

保留

010111

CMD23

保留

011000

CMD24

MMC/SPI

WRITE_BLOCK

011001

CMD25

MMC

WRITE_MULTIPLE_BLOCK

011010

CMD26

MMC

PROGRAM_CID

011011

CMD27

MMC/SPI

PROGRAM_CSD

011100

CMD28

MMC/SPI

SET_WRITE_PROT

011101

CMD29

MMC/SPI

CLR_WRITE_PROT

011110

CMD30

MMC/SPI

SEND_WRITE_PROT

011111

CMD31

保留

100000

CMD32

MMC/SPI

TAG_SECTOR_START

100001

CMD33

MMC/SPI

TAG_SECTOR_END

100010

CMD34

MMC/SPI

UNTAG_SECTOR

100011

CMD35

MMC/SPI

TAG_ERASE_GROUP_START

100100

CMD36

MMC/SPI

TAG_ERASE_GROUP_END

100101

CMD37

MMC/SPI

UNTAG_ERASE_GROUP

100110

CMD38

MMC/SPI

ERASE

100111

CMD39

MMC

FAST_IO

101000

CMD40

MMC

GO_IRQ_STATE

101001

CMD41

保留

101010

CMD42

MMC/SPI

LOCK_UNLOCK

101011

CMD43

保留

101100

CMD44

保留

101101

CMD45

保留

101110

CMD46

保留

101111

CMD47

保留

110000

CMD48

保留

110001

CMD49

保留

110010

CMD50

保留

110011

CMD51

保留

110100

CMD52

保留

110101

CMD53

保留

110110

CMD54

保留

110111

CMD55

MMC/SPI

APP_CMD

111000

CMD56

MMC/SPI

GEN_CMD

111001

CMD57

保留

111010

CMD58

SPI

READ_OCR

111011

CMD59

SPI

CRC_ON_OFF

111100

CMD60

MMC

制造商保留

111101

CMD61

MMC

制造商保留

111110

CMD62

MMC

制造商保留

111111

CMD63

MMC

制造商保留

14、MMC_ARGH 寄存器

MMC_ARGH 包含现行命令参数的高16 位(位31~16 为保留位)

15、MMC_ARGL 寄存器

MMC_ARGL 包含现行命令参数的低16 位(位31~16 为保留位)。

16、MMC_RES FIFO(只读)

MMC_RES FIFO 存放命令的响应。它为 16 位 8 单元(位 31~16 为保留位)。它不包含 响应的7 位CRC。读出的第一个半字是接收响应的最高半字。

17、MMC_RXFIFO(只读)

MMC_RXFIFO 包含两个FIFO,每个FIFO 为8 位32 单元。这FIFO 存放从卡读出的数 据。每次读出一字节,位于位7~0(位31~8 为保留位)

18、MMC_TXFIFO(只写)

MMC_TXFIFO 包含两个FIFO,每个FIFO 为8 位32 单元。这FIFO 包含准备写入卡的 数据。每次写入一字节,位于7~0(位31~8 为保留位)。