当前位置: 首页 > news >正文

sd协议的大致通信过程

SD(Secure Digital)协议是用于存储卡与主机设备(如手机、相机、嵌入式系统)通信的标准协议,其过程涉及物理层、命令响应机制和数据传输。以下是SD协议的核心流程概述:


  1. 初始化阶段:设备识别与电压配置
  • 步骤1:上电与时钟同步
    主机上电后,向SD卡发送初始时钟信号(通常为低速模式,如400kHz),同时保持CMD和DAT线处于高电平(空闲状态)。
  • 步骤2:发送CMD0(GO_IDLE_STATE)
    主机通过CMD线发送CMD0命令(复位指令),强制SD卡进入空闲状态(Idle State),此时DAT线未激活。
  • 步骤3:电压检测(CMD8)
    主机发送CMD8命令,附带电压参数(如2.7-3.6V),SD卡返回响应确认支持的电压范围。若卡不支持,主机需调整电压或终止通信。
  • 步骤4:初始化流程(CMD55+ACMD41)
    • 主机发送CMD55(APP_CMD),通知SD卡后续命令为应用特定命令。
    • 接着发送ACMD41(SD_SEND_OP_COND),携带主机支持的工作电压和容量类型(标准容量SDSC或高容量SDHC/SDXC)。
    • SD卡返回OCR(Operating Conditions Register)寄存器值,确认就绪状态。

  1. 卡识别模式(Card Identification Mode)
  • 步骤5:分配相对地址(CMD2、CMD3)
    • 主机发送CMD2(ALL_SEND_CID),要求所有未初始化的SD卡发送唯一的CID(Card Identification Number)。
    • 主机通过CMD3(SEND_RELATIVE_ADDR)为SD卡分配一个相对地址(RCA),用于后续通信(多卡系统中区分不同卡)。

  1. 数据传输模式(Data Transfer Mode)
  • 步骤6:切换至数据传输状态(CMD7)
    主机发送CMD7(SELECT/DESELECT_CARD),附带RCA地址,激活目标SD卡,使其进入传输状态(Transfer State),DAT线激活。
  • 步骤7:读取/写入数据块
    • 读操作(CMD17/CMD18)
      • CMD17(READ_SINGLE_BLOCK):读取单个数据块(默认512字节)。
      • CMD18(READ_MULTIPLE_BLOCK):连续读取多个块,直到主机发送CMD12(STOP_TRANSMISSION)终止。
    • 写操作(CMD24/CMD25)
      • CMD24(WRITE_BLOCK):写入单个块。
      • CMD25(WRITE_MULTIPLE_BLOCK):连续写入多个块,结束时需发送CMD12。
    • 数据传输流程:
      1. 主机发送读/写命令(附带起始地址)。
      2. SD卡返回响应(R1状态),确认命令有效。
      3. 数据通过DAT线传输,每个数据块附加CRC校验码。
      4. 主机验证CRC,若错误则重传。

  1. 协议层关键机制
  • 命令与响应格式
    • 命令(CMD):6字节结构,包括命令号、参数、CRC7。
    • 响应(RSP):长度可变(如R1为1字节状态 + 3字节附加信息),包含操作状态或错误码。
  • 总线拓扑
    • SD总线模式:支持1位或4位DAT线(高速模式)。
    • SPI模式:兼容SPI接口,但性能较低(CMD、DAT线复用)。
  • 错误处理
    • CRC校验失败、超时、非法命令等会触发错误状态(通过RSP返回)。
    • 主机可通过CMD13(SEND_STATUS)查询卡状态。

  1. 高级功能(可选)
  • 高速模式切换(CMD6)
    主机发送CMD6(SWITCH_FUNC)切换总线速度、块大小或驱动强度。
  • 擦除操作(CMD32-38)
    指定地址范围后,通过CMD38(ERASE)擦除数据。
  • 安全协议(CMD42)
    用于加密数据传输(如SDSC卡的安全功能)。

协议流程图精简版
上电 → CMD0复位 → CMD8电压检测 → CMD55+ACMD41初始化 → CMD2获取CID → CMD3分配RCA
→ CMD7进入传输模式 → 读写操作(CMD17/18/24/25) → 数据块传输(CRC校验) → 终止(CMD12)


总结
SD协议通过分层命令交互和CRC校验机制实现可靠通信,核心流程包括初始化、卡识别、数据传输三个阶段。其设计兼容多种存储容量(SDSC/SDHC/SDXC)和总线模式(SD/SPI),广泛应用于嵌入式存储场景。

相关文章:

  • 图论之并查集——含例题
  • Agno 开源程序是一个轻量级库,用于构建具有内存、知识、工具和原生多模态支持的推理代理。使用 Agno 构建推理代理、多模态代理、代理团队和代理工作流。
  • 【编写Node接口;接口动态获取VUE文件并异步加载, 并渲染impoort插件使用】
  • tcp特点+TCP的状态转换图+time_wait详解
  • 负载均衡nginx中的FIN包传递
  • QDataStream 解析网络,或串口传来的数据
  • 计算机组成原理-存储器
  • c/c++ 使用libgeotiff读取全球高程数据ETOPO
  • Prompt工程提示词(1-6章)
  • Python中NumPy的统计运算
  • 控制单元设计(Control Unit, CU)
  • 【C++初学】课后作业汇总复习(七) 指针-深浅copy
  • 批量将文件名称、文件路径、文件扩展名提取到 Excel 清单
  • QMT美林时钟策略(15年11倍,年化13.5%策略)
  • 【C++算法】57.哈希表_判断是否互为字符重排
  • AF3 Cropper类解读
  • 音视频转换器 AV 接口静电保护方案
  • 状态压缩dp
  • Odrive源码分析(六) 相关控制变量传递
  • 基于redis 实现我的收藏功能优化详细设计方案
  • 中国室内设计网站官网/永久免费不收费的污染app
  • 工程造价定额在哪查/兰州网络推广关键词优化
  • 传统文化网站建设/谷歌手机网页版入口
  • 摄影网站的意义/百度搜索广告