【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡

原本SD协议是用在存储上的,后来扩展了一个叫SDIO的协议(全名:Secure Digital Input and Output)
这个协议属于外设接口,使得它能连接一些外设,例如:GPS 相机 Wi-Fi 调频广播 条形码读卡器 蓝牙,从而跳出存储这个局限。

STM32F4里,只支持SD 2.0协议,SD和SDHC属于这个范畴,SDXC是4.0协议,所以不支持
另外SDHC卡,有些数据块大小是512,有的是1024,STM32F4只支持读取512大小的,也就是说,SDHC卡的一部分也不支持的其他相关的技术,下面来说明一下SD卡的引脚

SD卡的读取方式有两种:SDIO、SPI
【SDIO模式】CLK:时钟,通信过程需要的东西,没这个东西,数据会不稳定CMD:命令,可下达命令,例如读取SD卡的信息,或是写入数据等等DAT0、1、2、3:数据线VCC、VSS:电源和地【SPI模式】CLK:时钟,理由同SDIO里面的CLKMOSI:命令或数据输出到SD卡MISO:SD卡传输数据到主机CS:片选,选择是否要操作当前的SD卡 SDIO的存储速度会高于SPI,假设都是SD卡传输数据到主机SPI只有MISO这1条数据线,而SDIO有4条数据线(当然,SDIO也可以只使用1条数据线来传输)另外,SDIO相当于总线,它可以挂载很多SD卡,但是STM32F4只支持一张SD卡在与SD卡操作的过程中,会有两种不同的操作频率第一种:识别SD卡阶段的时钟频率FOD,最高为400KHz第二种:后续数据传输的时钟频率FPP,默认最高为25MHz,还可以透过寄存器修改,修改后最高为50MHz 下面介绍SD卡的8个寄存器

CID:卡识别寄存器,一些制造商ID、版本、日期等相关讯息
RCA:相对卡地址寄存器,初始化时,动态由主机确定,后续挂载在SDIO总线上时,透过RCA找到对应的SD卡来进行操作DSR:驱动级寄存器,配置卡的输出驱动CSD:卡的特殊数据寄存器,SD卡的操作信息SCR:SD配置寄存器,SD卡的特殊信息OCR:操作条件寄存器,例如SD卡的电压信息SSR:SD状态寄存器,SD卡专有的特征信息CSR:SD卡状态寄存器,SD卡的状态信息。 下一章来说明命令(CMD)的部分。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F4基于SDIO总线的SD需要使用FATFS文件系统。要实现这个功能,首先需要配置STM32F4的SDIO接口以及相应的GPIO引脚。接下来,我们可以按照以下步骤进行SD: 1. 初始化SDIO接口:初始化SDIO控制器,并设置时钟和数据传输属性。 2. 初始化GPIO引脚:配置SDIO通信需要使用的GPIO引脚,包括CMD线、CLK线、以及数据线(D0-D3)。 3. 初始化SD使用SDIO发送SD初始化命令,以便与SD进行通信。这个过程包括等待SD响应、发送上电命令、以及SD的OCR(操作条件寄存器)。 4. 检查SD状态:通过发送CMD13命令,SD状态信息。这个过程可以确保SD正常工作并准备好取或入数据。 5. 挂载文件系统:使用FATFS库中的函数,将SD上的文件系统挂载到指定的逻辑驱动器。 6. 打开文件使用FATFS库中的函数,打开指定的文件。 7. 取或入数据:使用FATFS库中的函数,取或入数据到SD上的文件。 8. 关闭文件使用FATFS库中的函数,关闭文件。 9. 卸载文件系统:使用FATFS库中的函数,卸载SD上的文件系统。 需要注意的是,在进行操作时,需要确保SD已经插入并且正确连接到SDIO接口上。此外,还需要根据SD的规格以及相应的存储格式,进行适当的操作。 以上就是基于SDIO总线的SD的基本步骤。通过使用FATFS库,我们可以很方便地实现对SD操作,以便进行数据存储和取。希望这个回答能够对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值