博客
关于我
STM32笔记之 SDIO(SD Card操作)
阅读量:783 次
发布时间:2019-03-24

本文共 1198 字,大约阅读时间需要 3 分钟。

STM32 SDIO接口实现

一、SDIO接口

SDIO(SD Input(Output)接口),即SD的I/O接口,是解决嵌入式系统中模块间高速通信的重要方法。其传输速度可达到25Mbps。在实际应用中,SDIO常与MMC和SD密切结合,形成MMC/SD/SDIO的发展脉络。

从技术演化来看,MMC(MultiMediaCard)注重多媒体存储功能,SD(Secure Digital)则聚焦于数据安全保护,SDIO则强调I/O接口的扩展性,对接口类型和设备类型持无关性态(如支持WIFI、Bluetooth、GPS等)。此外,SDIO接口在STM32实现中主要包含两个部分:

  • SDIO适配器模块:负责实现MMC/SD/SDIO卡的相关功能,如时钟管理、命令传输、数据处理等。
  • AHB总线接口:为SDIO适配器模块提供操作权限,包括寄存器访问、中断和DMA请求。
  • 二、SD卡

    1. SD卡构架

    SD卡采用了 [错误:无法识别图片src] 针状结构,核心部件包括芯片接口_modules与读写保护区。其物理布局符合anki标准,支持多种操作模式。

    2. 接口定义

    SD卡定义了多个寄存器(错误:无法识别图片src)用于存储卡片信息与配置参数。这些寄存器包括:

    OCR寄存器
    存储卡片唯一标识信息。
    CID寄存器
    存储卡片生产商及产品信息。
    CSD寄存器
    存储卡片特殊数据结构。
    RCA寄存器
    存储卡片的物理地址。
    DSR寄存器
    配置总线参数。
    SCR寄存器
    存储特殊控制命令。

    3. SD卡操作流程图

    SD卡的数据读写过程通过命令和数据传输完成,具体流程图如下:

    [错误:无法识别图片src]

    4. SD卡寄存器详解

    SD卡寄存器主要用于存储设备特性信息:

  • OCR寄存器:通过命令访问,存储卡片生产商和产品标识。
  • CID寄存器:包含卡片ID、制造日期等信息。
  • CSD寄存器:存储卡片序列号、过滤器等特殊数据。
  • RCA寄存器:初始化时由卡片提供,用于寻址。
  • DSR寄存器:配置总线参数,对总线性能有重要影响。
  • SCR寄存器:存储特殊控制命令,供应用程序调用。
  • 三、代码实验操作

    基于STM32标准库,在[错误:无法识别路径中找到SD卡操作模块,需要实现以下接口:

  • SD_LowLevel_Init()函数:配置SDIO总线,包括时钟和命令线控制。
  • SD_LowLevel_DeInit()函数:复位SDIO模块,包括总线和相关信号控制。
  • SD_LowLevel_DMA_TxConfig()和SD_LowLevel_DMA_RxConfig()函数:配置DMA传输,实现高效数据传输。
  • 此外,SD卡检测逻辑可通过宏控制实现:

    [错误:无法识别图片src}

    实验验证

    通过ST官方提供的模板代码,编写测试程序验证各功能:

    [错误:无法识别图片src}

    [此处依次对应上述各部分,完整文章可跳转查看]

    转载地址:http://kgtkk.baihongyu.com/

    你可能感兴趣的文章
    mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
    查看>>
    MySql 查询以逗号分隔的字符串的方法(正则)
    查看>>
    MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
    查看>>
    mysql 查询数据库所有表的字段信息
    查看>>
    【Java基础】什么是面向对象?
    查看>>
    mysql 查询,正数降序排序,负数升序排序
    查看>>
    MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
    查看>>
    mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
    查看>>
    mysql 死锁(先delete 后insert)日志分析
    查看>>
    MySQL 死锁了,怎么办?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 添加列,修改列,删除列
    查看>>
    mysql 添加索引
    查看>>
    MySQL 添加索引,删除索引及其用法
    查看>>
    mysql 状态检查,备份,修复
    查看>>
    MySQL 用 limit 为什么会影响性能?
    查看>>
    MySQL 用 limit 为什么会影响性能?有什么优化方案?
    查看>>
    MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
    查看>>
    mysql 用户管理和权限设置
    查看>>