zoukankan      html  css  js  c++  java
  • 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命令。

  • 相关阅读:
    在日本被禁止的コンプガチャ設計
    Starling常见问题解决办法
    Flixel引擎学习笔记
    SQLSERVER中修复状态为Suspect的数据库
    T4 (Text Template Transformation Toolkit)实现简单实体代码生成
    创建Linking Server in SQL SERVER 2008
    Linq to Sql 与Linq to Entities 生成的SQL Script与分页实现
    Linq to Entity 的T4 模板生成代码
    在VisualStudio2008 SP1中调试.net framework 源代码
    使用HttpModules实现Asp.net离线应用程序
  • 原文地址:https://www.cnblogs.com/ransn/p/8682088.html
Copyright © 2011-2022 走看看