CMD8 命令就是用于验证卡接口操作条件的(主要是电压支持)。卡会根据命令的参数来检测操作条件匹配性,如果卡支持主机电压就产生响应,否则不响应。而主机则根据响应内容确定卡的电压匹配性。 CMD8 是 SD卡标准 V2.0 版本才有的新命令,所以如果主机有接收到响应,可以判断卡为 V2.0 或更高版本 SD 卡。 ACMD41 命...
在发送CMD8后,发送ACMD41(注意发送ACMD41之前要先发送CMD55),来进一步确认卡的操作电压范围,并通过HCS位来告诉SD卡,主机是不是支持高容量卡(SDHC)。对于支持CMD8指令的卡,主机通过ACMD41的参数设置HCS位为1,来告诉SD卡主机支SDHC卡,如果设置为0,则表示主机不支持SDHC卡,SDHC卡如果接收到HCS为0,则永...
我发送了 CMD1 却没有任何响应,搜了下网上资料,这条命令是MMC卡支持的,SD卡不支持…… (汗,ST也写该注明一下吧) 根据我下载的 "SD Physical Layer Spec 2.0" 文档,应该使用 CMD8: 于是我发送CMD8, 设置电压为2.7~3.6V档,SD卡依然没有反应。哪里出问题了?命令返回的状态是 timeout, 我用简易示波器看...
3、复位卡(CMD0),进入IDLE状态; 4、发送CMD8,检查是否支持2.0协议; 5、根据不同协议检查SD卡(命令包括:CMD55、CMD41、CMD58和CMD1等); 6、取消片选,发多8个CLK,结束初始化 这样我们就完成了对SD卡的初始化,注意末尾发送的8个CLK是提供SD卡额外的时钟,完成某些操作。通过SD卡初始化,我们可以知道SD卡的类...
SD卡的上电和初始化发送CMD0:软件复位命令,将卡置于空闲状态。发送CMD8:根据卡端的响应识别SD卡的版本型号和支持的电压范围。 如果卡端回复了响应,这说明是V2.00或更新的SD卡。再判断响应是否有效,如响应无效,则支持的电压范围不兼容;如有效,则支持的电压范围是兼容的。
第二步就是发送一系列命令识别SD卡,首先发送CMD0命令,进行SDIO初始化。再接收SD卡回发数据,查看相应的状态位,检查SD卡是否回发数据。第三步发送CMD8命令,检测SD的供电电压。此时注意,在发送ACMD41命令前应该先发送CMD55命令,所以第四步先发送CMD55,将电压标志位置位。第五步然后就发送ACMD41命令,此命令为...
这里我们使用参数 0X1AA,即告诉 SD 卡,主机供电为 2.7~3.6V 之间,如果 SD 卡支持CMD8,且支持该电压范围,则会通过 CMD8 的响应(R7)将参数部分原本返回给主机,如果支持 CMD8,或者不支持这个电压范围,则不响应。 在发送 CMD8 后,发送 ACMD41(注意发送 ACMD41 之前要先发送 CMD55),来进一步确认卡的操作电压...
该函数首先发送复位命令(不过该命令只有SDIO类型的卡才能够识别),然后发送CMD0,让设备进入IDLE模式,紧接着发送CMD8,获取该卡所支持的电压值,最后就是重点了(从1998-2003行),从所调用的各个函数名字可以看出,它是在试探该卡是否为SDIO? SD? MMC? 那么接下来的文章就是要分析上面的三个函数,看它是如何识别SDIO...
CMD8: SEND_IF_COND * 发送 CMD8 检查SD卡的电压操作条件 * * 参数: - [31:12]: 保留 (要被设置为 '0') * - [11:8] : 支持的电压 (VHS) 0x1 (范围: 2.7-3.6 V) * - [7:0]: 校验模式 (推荐 0xAA) * 响应类型: R7 */ /* 接收到命令sd会返回这个参数 */SDIO_CmdInitStructure....
(2) SDIO_CmdIndex:命令号选择,它设定 SDIO 命令寄存器(SDIO_CMD)的 CMDINDEX位的值。 (3) SDIO_Response:响应类型,SDIO 定义两个响应类型:长响应和短响应。根据命令号选择对应的响应类型。SDIO 定义了四个 32 位的 SDIO 响应寄存器(SDIO_RESPx,x=1…4),短响应只用SDIO_RESP1,长响应使用4个(SDIO_RESPx...