理论教育 实践:基于物联网的STM32单片机SD卡驱动实现

实践:基于物联网的STM32单片机SD卡驱动实现

时间:2023-11-09 理论教育 版权反馈
【摘要】:CMD13:读Card_Status寄存器。读卡命令集CMD16:设置块的长度。CMD18:读多块,直至主机发送CMD12为止。CMD27:写CSD寄存器。擦除卡命令集CMD32:设置擦除块的起始地址。CMD38:擦除所选择的块。查询OCR,获取供电情况。读取CSD,获取存储卡的其他信息发送8CLK后,禁止片选。发送两个字节的伪CRC。

实践:基于物联网的STM32单片机SD卡驱动实现

1.SPI模式下的主要操作命令

(1)卡的识别、初始化等基本命令集

CMD0:复位SD卡。

CMD1:读OCR寄存器。

CMD9:读CSD寄存器。

CMD10:读CID寄存器。

CMD12:停止读多块时的数据传输。

CMD13:读Card_Status寄存器。

(2)读卡命令集

CMD16:设置块的长度

CMD17:读单块。

CMD18:读多块,直至主机发送CMD12为止。

(3)写卡命令集

CMD24:写单块。

CMD25:写多块。

CMD27:写CSD寄存器。

(4)擦除卡命令集

CMD32:设置擦除块的起始地址

CMD33:设置擦除块的终止地址。

CMD38:擦除所选择的块。

(5)写保护命令集

CMD28:设置写保护块的地址。

CMD29:擦除写保护块的地址。

2.SD卡的初始化

(1)初始化硬件配置,SPI配置,IO配置等。(www.daowen.com)

(2)上电延时。(>74CLK)

(3)复位卡。(CMD0)

(4)激活卡,内部初始化并获取卡的类型。

(5)查询OCR,获取供电情况。

(6)是否使用CRC(CMD59)。

(7)设置读写块数据长度(CMD16)。

(8)读取CSD,获取存储卡的其他信息(CMD9)

(9)发送8CLK后,禁止片选。

3.SPI模式下的读取数据过程,采用CMD17来实现

(1)发送CMD17。

(2)接收卡响应R1。

(3)接收数据起始令牌0XFE。

(4)接收数据。

(5)接收两个字节的CRC,如果没有开启CRC。这两个字节在读取后可以丢掉。

(6)8CLK之后禁止片选。

4.SPI模式下的写数据过程,采用CMD24来实现

(1)发送CMD24。

(2)接收卡响应R1。

(3)接收数据起始令牌0XFE。

(4)接收数据。

(5)发送两个字节的伪CRC。

(6)8CLK之后禁止片选。

5.代码实现

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

我要反馈