SD卡初始化及读取程序.pdf
时间:01-22 14:31
查看:1625次
下载:162次
简介:
首先是SD 卡的初始化问题。SD 卡的初始化很简单,各个论坛上写的也很详细,个人认为基本不存在太大问题。首先是74 个 clk,然后CS_LOW;发送CMD0,收到的应答是0x01;接着发送 CMD1,收到的应答应该是0x00;最后CS_HIGH。至此,初始化完成。需要注意的问题:初始化的时钟不宜太快,可以在SD 卡初始化完成后可提高数据读写速度;在发送命令之前和收到应答位之后,主控制器应该发送8 个时钟完成相应操作;CMD0 的CRC 是0x95,其余命令的 CRC 无所谓。
读取单块数据流程:CS_LOW‐‐>8 个 clk‐‐>发送CMD17‐‐>接收响应 R1‐‐>接收读数据起始令牌0xFE‐‐>接收数据‐‐>接收 CRC‐‐>8 个 clk‐‐>CS_HIGH;
写入单块数据流程:CS_LOW‐‐>8 个 clk‐‐>发送CMD24‐‐>接收响应 R1‐‐>写入读数据起始令牌0xFE‐‐>写入数据‐‐>接收 CRC‐‐>8 个 clk‐‐>CS_HIGH;
读写操作指令:单块写命令 CMD24,多块写命令CMD25;单块读命令 CMD17,多块读命令 CMD18。单块读写时,数据块的长度为512 字节,多块读写时SD 卡收到 1 个停止命令CMD12 后停止读写。
本程序参考自 bozai 的 SD 卡驱动程序, 增加了 SD、MMC 卡判断的功能,SD、MMC初始化成功后能返回卡的类型参数供主程序使用。