在SPI通讯模式下,指令从 CMD0 到 CMD63。Command Argument 为附加命令,有些 CMD 命令有,有些无,CRC 为校验字节。下图是 SPI 模式下的命令分类表。
SPI 命令分为 11 个组,各个组是多个命令的集合,每个组中的命令有相似的功能。这里介绍三个常用命令。CMD0,CMD1,CMD16。CMD0 为复位,CMD1 为激活初始化,CMD16 设置一个读写块的长度。
有些命令发送出去后会有返回值,表示的是错误码。比如 CMD0,CMD1 返回值是 R1 格式的。一个字节长,0,7 位是 0,其它位表示错误码。
SD 卡初始化
在上电后,主机启动 SCK 及在 CMD 线上发送 74 个高电平的信号,接着发送 CMD0 进入 SPI模式,然后发送 CMD1 激活初始化进程。
读扇区:SD 卡允许以块数据进行读写,在这里我们用 CMD16 命令设定每读写的块为 512 字节,正好是一个扇区。设置好后用 CMD17 读块命令读取 512 放入缓冲区既可。