应用专用命令app_cmd (CMD55)
当卡接收到这个命令时,会使卡将下面的命令解释为一个特定于应用程序的命令ACMD。ACMD提供命令扩展,具有与常规命令相同的结构,并且可能具有相同的CMD号。卡通过它出现在APP_CMD之后的事实将其识别为ACMD。当没有定义ACMD时,卡将其视为常规命令。
例如,如果一张卡有ACMD13的定义,但没有ACMD7的定义,则APP_CMD后的命令13被解释为非规则CMD13,而APP CMD后的CMD7被解释为规则CMD7。为了使用一个ACMD,主机应该是:
(1)当发送APP_CMD时,响应设置了APP_CMD位,向主机发出ACMD现在被期望的信号。
(2) ACMD55不存在。如果连续发出多个CMD55,则每个响应中的APP_CMD位设置为1 ,紧跟在最后一个CMD55之后发出的命令解释为ACMD。当在CMD55之后直接发出多个命令时(CMD55除外),第一个命令解释为ACMD,后面的命令解释为普通命令
(3)如果发送了已定义的ACMD并且是合法的,则响应设置了APP CMD位,表明接受的命令被解释为ACMD。
(4)如果发送了一个未定义的ACMD并且它是合法的,则响应将清除APP_CMD位,表明接受的命令被解释为正常的CMD。
(5)如果发送了已定义或未定义的ACMD,且该ACMD是非法的,则按非法命令处理。下一个R1/R6响应中指示“非法命令错误”,主机应忽略响应中的APP_CMD状态。下一个命令作为普通命令处理。
主机不能使用未定义的acmd作为常规命令,即使规范中有定义。以下ACMD号码是为SD存储卡专有应用保留的,任何SD存储卡制造商不得使用:ACMD6、ACMD13、ACMD17-26、ACMD38-49、ACMD51。
在上述解释中,在详细命令描述部分中定义的命令是“已定义”命令,而在该部分中未定义的命令是“未定义”命令。“合法”表示在当前状态下接受已定义或未定义的命令,“非法”表示在当前状态下不接受已定义或未定义的命令。
通用命令- GEN_CMD(CMD56)
GEN_CMD (CMD56)是一个特定于厂商的可选命令。命令操作由本规范定义。GEN CMD的总线事务与单个块读或写命令(CMD24或CMD17)相同,并且仅在“传输状态”下接受。响应类型为R1。两者的区别在于参数表示数据传输的方向(而不是地址),数据块不是内存有效负载数据,而是具有特定于供应商的格式和含义。在发送CMD56之前,需要选中卡片(“tran_state”)。
在标准容量SDl存储卡的情况下,数据块大小是用CMD16定义的block_LEN。在SDHCl和SDXC卡的情况下,块长度固定为512byte。参数的位0表示数据传输的方向;0表示写操作,1表示读操作。厂商可以对该命令的参数和数据块内容的第31-1位定义特定的格式。
然而,应该考虑到卡应该防止损坏卡接收到意外的格式。主机在发放CMD56前应确认CID,使卡支持CMD56格式。
切换功能命令
切换功能命令(CMD6)用于切换或扩展内存卡功能。
目前定义了四个功能组:
(1)接入方式:SD总线接口速度模式的选择。
(2)指挥系统:特定的功能可以通过一组共享命令进行扩展和控制。
(3)驾驶员强度在UHS-I模式中选择合适的输出驱动器强度取决于主机环境。
(4)限流选择在UHS-I模式下限制卡的最大电流取决于主机的供电能力和放热能力。
这是在物理层规范版本1.10中引入的。因此,与早期版本的规范兼容的卡不支持它。在使用CMD6之前,主机应该检查SCR寄存器中的“SD_SPEC”字段,以确定卡符合哪个版本的规范。也可以通过CSD中CCC的bit10来检查对CMD6的支持。
版本1.10及更高版本的SD存储卡必须支持CMD6。CMD6在“转移状态”下有效。一旦选择,通过switch命令,所有功能只在一个电源周期后,CMD6(每个功能组中功能0的模式1操作)或CMDO返回到默认功能。执行电源周期或发出CMDO将使卡复位到“空闲”状态,所有功能切换回默认功能。
作为对CMD6的响应,SD存储卡将在CMD线上发送R1响应,在DAT线上发送512位状态。从SD总线事务的角度来看,这是一个标准的单块读事务,该命令的超时值为100毫秒,与读命令相同。如果状态数据发生CRC错误,主机应该发出一个电源周期。CMD6功能切换周期在状态数据结束位后的8个时钟内。当CMD6改变总线行为(即访问模式)时,主机被允许使用新功能(增加/减少CLK频率超过当前最大CLK频率),至少8个时钟后在交换机命令事务结束见下方图表。
响应CMDO,切换周期在CMDO结束位后的8个时钟内。当CMD6改变了总线行为(即访问模式)时,主机被允许启动初始化过程,至少在CMDO后8个时钟。
CMD6支持6个功能组,每个功能组支持16个分支(功能)。
在给定的功能组中只能选择并激活一个功能。每个功能组中的函数0为默认函数(与Spec. 1.01兼容)。
CMD6有两种使用模式:
模式0(检查功能)用于查询卡是否支持某项功能。
模式1(设置功能)用于切换卡的功能。
以上内容由杭州瀚海微科技整理