首页 理论教育 SD卡功能描述-原理及应用

SD卡功能描述-原理及应用

时间:2023-11-17 理论教育 版权反馈
【摘要】:如果SD卡不支持所提供的电压,则不会发出任何响应信息,SD卡将继续处于空闲状态。若SD卡在指定范围内不能进行数据传输,应放弃进一步的总线操作,而进入非激活状态。当卡发送完CID号后,SD卡将进入识别状态。此时,如果主机想要给SD卡分配一个新的RCA,只需发送另一条CMD3命令给SD卡即可,最后发布的RCA就是实际使用的RCA了。

SD卡功能描述-原理及应用

主机和卡之间的所有通信都是由主机控制的,主机所发送的命令包括广播和寻址(点对点)命令两种通信类型。

SD卡的操作可分为两种模式:卡识别模式;数据传输模式。

表15-5表达了卡状态与操作模式之间的关系。

表15-5 卡状态与操作模式

978-7-111-51624-8-Chapter15-13.jpg

1.卡识别模式

在该模式下,主机将检测SD卡的电压范围,识别SD卡类型,并要求其发送各自的相对地址,这一切操作都是通过命令线(CMD线)来实现的,所有操作均采用默认的SD卡识别时钟频率。

(1)卡复位

当卡上电或收到GO_IDLE_STATE(CMD0)命令之后,SD卡都将进入空闲状态(非激活的卡除外)。即卡上电至少延迟74个时钟周期后方可进行总线传输(发送复位命令CMD0),待复位完成后(即接收到01h响应,如图15-12所示),在得到响应0x00前需连续发送CMD55+ACMD41。当处于空闲状态时,SD卡的CMD线处于输入模式,等待下一个命令的起始令牌。默认的相对地址RCA为0x0000。

(2)工作条件验证

①在主机和SD卡通信之前,主机并不知道SD卡支持的电压范围,这时主机先用一个特定的电压发送一条复位命令(CMD0),然后发送SEND_IF_COND(CMD8)命令来获取SD卡所支持的电压范围。如果SD卡不支持所提供的电压,则不会发出任何响应信息,SD卡将继续处于空闲状态。

②在空闲(Idle)模式下,SD_SEND_OP_COND(ACMD41)命令旨在提供一种SD卡主机识别并拒绝与主机给定电压VDD不匹配卡的机制。主机通过发送命令操作数来作为所需电压VDD窗口的大小。若SD卡在指定范围内不能进行数据传输,应放弃进一步的总线操作,而进入非激活状态。注意:A开头的命令可看作“ApplicationCommand”的伴随命令,在发任何一条ACMD命令之前,必须首先发一条CMD55命令,因此在发送ACMD41命令时,必须先行发送CMD55命令,然后方可发送ACMD41命令。

③在准备“就绪”模式下,主机将发送ALL_SEND_CID(CMD2)命令到每个卡中来获取它们的唯一卡标识号(CID)。当卡发送完CID号后,SD卡将进入识别状态。

④当主机发送SEND_RELATIVE_ADDR(CMD3)命令来要求各个SD卡发送一个新的相对地址(RCA)时,RCA用于其后在数据传输模式中的卡寻址。一旦获取RCA,卡状态将变成待机状态。此时,如果主机想要给SD卡分配一个新的RCA,只需发送另一条CMD3命令给SD卡即可,最后发布的RCA就是实际使用的RCA了。这个唯一地址发送给主机就进入了下一个阶段的数据传输模式,每张SD卡将与主机进行点对点的传输。

注意:当主机发出CMD0命令来复位SD卡时,应先发出CMD8命令再发送ACMD41命令来重新初始化SD卡。

SD卡的状态图(卡识别模式)如图15-7所示;而SD卡的初始化与识别流程(SD模式)如图15-8所示。

978-7-111-51624-8-Chapter15-14.jpg

图15-7 SD卡的状态图(卡识别模式)

2.数据传输模式

在SD卡识别模式结束之后,主机先不停地发送SEND_CSD(CMD9)命令来获取卡的CSD信息,包括块长度、卡容量等。广播命令SET_DSR(CMD4)为各个已识别的SD卡配置驱动阶段。它会向SD卡的DSR寄存器写入相关的信息,包括数据总线宽度、总线上卡的个数、总线频率等,这里SET_DSR命令是可选的。(www.xing528.com)

CMD7命令可使指定地址的SD卡进入传输模式,在指定时间段内,只有一个卡能处于传输状态。当某个原先被选中的处于传输状态的SD卡接收到CMD7命令后,会释放与主机的连接,并进入待机状态。当CMD7使用保留地址0x0000时,所有的SD卡都将进入待机状态。CMD13用于得到卡的CSD的相关设置值;ACMD6用于配置数据总线的宽度;读操作使用CMD17、CMD18、CMD30、CMD56(r)、ACMD13、ACMD22、ACMD51命令;写操作使用CMD24、CMD25CMD26、CMD27、CMD42、CMD56(w)命令;读/写停止操作使用CMD12命令。有关SD卡数据传输模式更多的信息如图15-9所示。

3.SD卡的读写操作

(1)SD卡的数据读取

在SPI模式下,读命令支持单块(CMD17)和多个块(CMD18)的读操作。由命令CMD16设定块的长度为512B。块数据读取操作如图15-10所示;读取单块数据流程如图15-11所示。

978-7-111-51624-8-Chapter15-15.jpg

图15-8 SD卡的初始化与识别流程(SD模式)

978-7-111-51624-8-Chapter15-16.jpg

图15-10 (多)块数据读取操作

(2)SD卡的数据写入

在SPI模式下,写数据块命令将把单块(CMD24)或多块(CMD27)数据写入SD卡中,支持块写入操作的SD卡要求由命令CMD16来设置块的长度为512B。若出现BLOCK_LEN_ERROR或ADDRESS_ERROR,写命令将被禁止。块数据写入操作如图15-12所示;写入单块数据的流程如图15-13所示。

注意:在进行SD卡的数据写操作时,最好首先对该卡进行擦除操作,然后再做写数据操作。

(3)SD卡的数据擦除

在SPI模式下,首先发送CMD32命令和参数来指定要擦除的起始地址(即块号),然后再发送CMD33命令来指定结束地址,最后发送CMD38命令来擦除指定单元的数据,注意这3个操作步骤不可更改。

978-7-111-51624-8-Chapter15-17.jpg

图15-11 读取单块数据流程

978-7-111-51624-8-Chapter15-18.jpg

图15-12 (多)块数据写入操作

978-7-111-51624-8-Chapter15-19.jpg

图15-13 写入单块数据流程

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈