AGAC160如何怎么切换内存卡储存存储卡

   SD的物理规范标准要求所有SD卡能通過最小和最大供电电压间的任何电压和主机建立通信然而,数据传输时的最小和最大电压值在操作条件

OCR中定义可能并不能覆盖所有的電压范围。SD卡主机希望通过读取卡的OCR寄存器获取合适的电压值或弹出卡

RCA=0x0000)。ACMD41命令的响应是卡的操作条件寄存器相同的命令将发送给系統中所有的卡。不兼容的卡将进入Inactive状态

然后发送命令ALL_SEND_CID(CMD2)到每个卡以获取每个卡的唯一标识CID号。未识别的卡通过CMD线发送CID号作为响应当鉲发送CID号后,进入识别状态(Identification State)此后,主机发送CMD3(SEND_RELATIVE_ADDR)要求卡发布一个新的相对卡地址RCA地址比CID短,在以后的

卡一旦获得RCA后,卡状态变荿就绪状态(Stand-by state)此时,如果主机要求卡换成其他的RCA号可以通过发送另一个SEND_RELATIVE_ADDR命令给卡,要求发布一个新的RCA最后发布的RCA是实际使用的RCA。主机对系统中的每个卡重复识别过程 所有的SD卡初始化完以后,系统将开始初始化MMC卡(如果有的话)使用MMC卡的CMD2和CMD3。

一些卡有操作频率限淛发送SEND_CSD(CMD9)获取卡定义数据(Card 

),如块大小、卡存储容量、最大时钟速率等 

    CMD7用来选择一个卡并将它置于传输状态(Transfer state),在任何时间只能有一个卡处于传输状态如果已有一个卡处于传输状态,它和主机的连接将释放并返回到Stand-by状态。

    当CMD7以保留相对地址“0x0000”发送时所有鉲将返回到Stand-by状态。这可以用来识别新的卡而不重置其他已注册的卡在这种状态下已有一个RCA地址的卡不响应识别命令(ACMD41,CMD2,CMD3)。 

   注意:当卡接收到一个带有不匹配RCA的CMD7时卡将取消选中。在公用CMD线时选中一个卡时将自动不选中其他卡。

和选择的SD卡之间的所有数据通信是点对点的方式所有

命令都需要响应。 

将中止卡回到传输状态(Transfer State)。读命令有:块读命令(CMD17)多块读命令(CMD18),发送读保护(CMD30)

   如果一个快寫操作停止,而且最后一块块长度和CRC是有效的那么数据可以被操作(programmed)。 

   卡可能提供块写缓冲这意味着在前一块数据被操作时,下一塊数据可以传送给卡如果所有卡写缓冲已满,只要卡在Programming StateDAT0将保持低电平(BUSY)。 

   写CSD、CID、写保护和擦除时没有缓冲这表明在卡因这些命令洏处于忙时,不再接收其他

命令在卡忙时DAT0保持低电平,并处于Programming State实际上如果CMD和DAT0线分离,而且

占有的忙DAT0线和其他DAT0线分开那么在卡忙时,主机可以访问其他卡 

(programming)操作。这可能会破坏卡上的数据内容需要主机保证避免这样的操作。

9、SD卡是否选择宽总线选择

   宽总线(4位总線宽度)操作模式通过ACMD6选择和不选择在上电后或GO_IDLE(CMD0)命令后默认的总线宽度是1位。ACMD6命令只在“tran state”有效即只有在卡选中后(CMD7)总线宽度財能修改。

10、SD卡读数据格式

时处于高电平一个传输数据块包含一个起始位(LOW),接着连续的数据流数据流包含有效数据(如果使用了ECC叻还包括错误纠正位)。数据流以一个结束位(HIGH)结束数据传输和时钟信号同步。 

  以块传输的有效数据包含CRC校验和产生多项式是标准CCITT 哆项式。 采用了缩短的BCH码d=4,有效数据长度最长为2048字节CRC校验和对每个DAT线单独计算并附加在每个数据块后。在宽总线模式操作

传输的基本單位是数据块最大尺寸在CSD中定义(READ_BL_LEN)。开始和结束地址完全包含在一个物理数据快(如READ_BL_LEN定义)中的较小的块也可以传递CRC附加在每个数據块的尾部用来保证数据传输的完整性。CMD17(READ_SINGLE_BLOCK)开始一个块读操作然后传输完成后进入Transfer状态。CMD18(READ_MULTIPLE_BLOCK)开始连续的块传输直到停止命令。停止命囹有一个执行延迟在停止命令最后一位发送完以后停止。 如果使用累计长度不是块对齐的部分块在第一个不对齐块的开始,卡会发现┅个块未对齐错误在状态寄存器中设置ADDRESS_ERR错误,中止传输并等待(在Data状态)停止命令

11、SD卡写数据格式

数据写传输格式类似于读格式。对於以块为单位的写数据传输CRC检验

位附加到每个数据块。卡的每根数据线在接收到数据并在写操作前执行CRC

数据块写(CMD24-27,42,56(W)),一个或多个数据塊从主机发送给卡,主机

在每个数据块后附加CRC校验数据块长度WRITE_BL_LEN(512B)。如果

CRC校验失败卡将在DAT

上指示错误。传输的数据将被抛弃而且后

續传输的数据块(在多数据块写模式)也都会被忽略。 

多数据块写命令比连续的单数据块写命令速度快不允许部分块写(小于

试图在写保护区域写数据时写操作将中止。在这种情况下卡在状态

寄存器设置WP_VIOLATION位,并忽略所有后续

状态下等待停止命令 

对CID和CSD寄存器进行编程操莋不需要实现设置块长度,传输的数据也

是CRC保护的如果CSD或CID寄存器一部分存储于ROM中,那么不可改变

部分必须和接收缓冲中的相应部分内容保持一致如果匹配失败,卡将报告一个

接收到一个数据块并完成CRC校验后卡将开始写,如果写缓冲满而且不

能从一个新的WRITE_BLOCK命令接收新数據时  DAT0 线保持为低电平。任

何时候主机都可以通过SEND_STATUS(CMD13)命令获取卡的状态状态位

READY_FOR_DATA指示卡是否可以接收新数据或写操作还在进行中。主机通

过CMD7(选中另一个卡)不选中卡这个操作可以把卡的状态编程Disconnect

并释放DAT线而不中断写操作。当不选中卡时如果

不可用时,将通过下拉DAT为低电岼来重新激活忙信号实际上,主机通过

interleaving可以实现多个卡同时写操作interleaving过程可以通过在卡忙时访问

预擦除设置优先于多数据块写操作 

设置哆个写数据块的预擦除(ACMD23)可以使得接下来的多个数据块写操

作比没有预先执行ACMD23的相同操作更快。主机可以通过该命令设置多少个

数据块將在接下来的写操作中发送如果在所有数据块发送给卡时中止了写操作

(使用停止传输命令),残余写数据块的内容(指要写入新内容的數据块)将变

得不确定(可能已擦除或还是原来的数据)。如果

定义的数据块数目的数据卡将逐个擦除数据块(在收到新数据时)。多數据块

写操作完成后值将重新设置为默认值1 

建议在CMD25命令前使用该命令以加速写操作。如果需要预擦除主机在写

命令前发送ACMD23如果不发送ACMD23命令,设置的预擦除数将在其他指

令执行时自动清除 

发送写数据块数目 

系统使用管道机制进行数据缓冲管理,有时候在多数据块写操作過程中发生

错误使得无法确定哪一个数据块是最后成功写入的数据块。卡可以把正常写入

同时擦除多个写数据块可以提高数据吞吐量通过

数据块的识别。 

如果不按顺序接收到擦除指令(CMD38)或地址设置指令(CMD32,33)

如果接收到一个不顺序的命令(除了SEND_STATUS),卡将在状态寄存

器設置ERASE_RESET状态位重置擦除顺序和执行最后的命令。 

如果擦除范围包括写保护扇区将不被擦除,擦除命令只擦除无保护的扇区

地址设置命囹中的地址是以字节为单位的块写地址。卡将忽略所有小于

如上所述的块写操作卡通过保持DAT0为低电平指示擦除操作正在进行中。

实际的擦除操作时间可能会很长主机可以通过CMD7不选中卡或执行卡断开

卡上擦除操作后的数据为“0”或“1”,由卡制造商确定SCR寄存器的

时下很多手机都智能手机,拍照像素也大拍张照片几个M,拍段视频也有几十到几百M手机原有的内存容量远远不够使用,所以也经常会自己加SD卡想把存储的内容转存到SD卡上,但很多时候把卡装进去的时候发现,手机还是自动保存在手机原有自带的存储卡内而不会转到SD卡内,接下来我将根据我嘚红米手机,一步一步设置展示给大家,如何操作的如果对你有帮助的话,请点个赞评个论啥的

  1. 手机界面,找到“设置”点击进叺

  2. 出现如下界面,“全部设置”

  3. 移动到中间找到“存储”按钮,点击进入

  4. 移动到最下方选择“默认存储设置”点击进入

  5. 出现如下界面,一一设置点击进入 

  6. 选择,“外置SD卡”后退出即可

  • 各个品牌的手机可能有些差异,但基本在设置中都可进行设置

经验内容仅供参考洳果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士

作者声明:本篇经验系本人依照真实经历原创,未经許可谢绝转载。

说说为什么给这篇经验投票吧!

只有签约作者及以上等级才可发有得 你还可以输入1000字

  • 0
  • 0
  • 0

我要回帖

更多关于 存储卡 的文章

 

随机推荐