• SD卡spi读写流程


    SD卡spi读写流程

    1.SD卡的命令格式:

    SD卡的指令由6字节(Byte)组成,如下:

    Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的CMD39第一字节为01100111,即0x27+0x40)
    Byte2-5:Command Arguments,命令参数,有些命令没有参数
    Byte6:前7位为CRC(Cyclic Redundacy Check,循环冗余校验)校验位,最后一位为停止位0

    2.SD卡的命令
    SD卡命令共分为12类,分别为class0到class11,

    不同的SDd卡,主控根据其功能,支持不同的命令集 如下:

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

    CMD0 的CRC 是0x95, 
    其余命令的 CRC 无所谓。

    CMD0:复位SD 卡.

    CMD1:读OCR寄存器.

    CMD9:读CSD寄存器.

    CMD10:读CID寄存器.

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

    CMD13:读 Card_Status 寄存器

    Class2 (读卡命令集):

    CMD16:设置块的长度

    CMD17:读单块.

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


    Class4(写卡命令集) :

    CMD24:写单块.

    CMD25:写多块.

    CMD27:写CSD寄存器 .

    Class5 (擦除卡命令集):

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

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

    CMD38: 擦除所选择的块.

    Class6(写保护命令集):

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

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

    CMD30: Ask the card for the status of the write protection bits


    class7:卡的锁定,解锁功能命令集

    class8:申请特定命令集 。

    class10 -11 :保留

    其中 class1, class3,class9:SPI模式不支持

    SD卡中的响应有许多种,R1为标准响应,最为常用。与R1响应相似的还有R1b、R2和R3。R1响应在除SEND_STATUS外其它命令后发送,也是最高位先发送,共1个字节。R1的格式如图7所示。响应说明如下:

    0x01:空闲状态   //0表示空闲,1表示忙

    0x02:擦除错误

    0x04:命令错误

    0x08:CRC通信错误

    0x10:擦除次序错误

    0x20:地址错误

    0x40:参数错误

    MMC_write_Blocks: 
    1,初始化,进入SPI模式, 
    2,发CMD25命令, 
    3,连读2字节,好象读1字节也可以, 
    4,发start(发一字节0xfc到sd卡), 
    5,发一个数据块到sd卡, 
    6,发2字节0xff到sd卡,当作CRC16, 
    7,读忙信息,直到不忙, 
    8,如果所有数据没有发完,跳到4, 
    9,结束,发end(发一字节0xfb到sd卡), 
    10,发CMD12命令。 

    SMMC_read_Blocks: 
    1,初始化,进入SPI模式, 
    2,发CMD18命令, 
    3,循环读到0xfe字节, 
    4,读1个数据块到sd卡, 
    5,读2字节CRC16, 
    6,如果所有数据没有读完,跳到3, 
    7,结束,发CMD12命令。

  • 相关阅读:
    消融实验(Ablation experiment)& 控制变量法
    reduce的方向
    深度学习和推荐系统的资料
    [Tailwind] Transitioning Rounded Corners using the JIT Compiler
    [JS Pattern] Proxy pattern
    git base cmd
    python app
    gitcmd ins tortoiseGitGUI
    vs vscode vs+ qt
    git branch tag
  • 原文地址:https://www.cnblogs.com/ransn/p/8682088.html
Copyright © 2020-2023  润新知