383_实现SD卡文件系统所需要的指令梳理

         全部的学习记录汇总:https://github.com/GreyZhang/SdFatFs

         这一份命令集合不是来自于SD卡的文档,尽管我也找那份文档参考过。我整理的主要依据还是Arduino的库文件实现。

         涉及到的命令整理如下:

  1. CMD0,在片选拉低的时候让SD卡切换到SPI模式;
  2. CMD8,验证SD卡接口工作状态;
  3. CMD9,读取CSD寄存器,其中CSDN的缩写为:Card Specific Data;
  4. CMD10,读取SD卡的ID信息;
  5. CMD13,读取卡的状态信息;
  6. CMD17,从SD卡中读取单个block信息;
  7. CMD24,向SD写入一个block的信息;
  8. CMD25,写入多个block的数据,直到遇到一个停止传输位置;
  9. CMD32,设置第一个即将被擦除的block的地址;
  10. CMD33,设置连续擦除的block的最后一块block的地址;
  11. CMD38,擦除前面所选择的所有的block;
  12. CMD55,转义为特殊应用命令?
  13. CMD58,读取OCR寄存器,其中OCR的含义为:操作条件寄存器;
  14. ACMD23,特殊应用命令,设置写入前预擦除的写入块;
  15. ACMD41,特殊应用命令,发送主机容量支持信息并激活卡的初始化过程;

以上是这个文件系统实现涉及到的命令,此外再增加一部分状态信息定义:

  1. R1_READY_STATE,ready中的卡状态;
  2. R1_IDLE_STATE,idle中的卡状态;
  3. R1_ILLEGAL_COMMAND,非法指令的状态位;
  4. DATA_START_BLOCK,读取或写入单个块的起始数据令牌;
  5. STOP_TRAN_TOKEN,写入多个块的停止令牌;
  6. WRITE_MULTIPLE_TOKEN,写入多个块的启动令牌;
  7. DATA_RES_MASK,写块操作后数据响应令牌的掩码;
  8. DATA_RES_ACCEPTED,写数据接受令牌。

以上是这个文件系统中涉及到的状态。

整个文件系统的实现应该就是建立在这些命令以及状态概念上实现出来的,而实现的基础则是FATXX的文件系统标准。不过,先理解SD卡的操作实现对于后期做文件系统的移植是最有帮助的。

你可能感兴趣的:(C++,Arduino,嵌入式)