文章目录

  • 实验内容
  • 一、SD卡协议
    • (一)、SD卡简介
    • (二)、SD 卡物理结构
    • (三)、SD卡总线
  • 二、基于STM32F103完成对SD卡的数据读取
    • (一)、创建工程
    • (二)、修改代码
    • (三)、串口烧录
    • (四)、结果展示
  • 三、总结
  • 四、参考文献

实验内容

掌握SD卡协议原理,用STM32F103完成对SD卡的数据读取(fat文件模式)。

一、SD卡协议

(一)、SD卡简介

SD 卡(Secure Digital Memory Card)在我们生活中已经非常普遍了,控制器对 SD 卡进行读写通信操作一般有两种通信接口可选,一种是 SPI 接口,另外一种就是 SDIO 接口。SDIO 全称是安全数字输入/输出接口,多媒体卡(MMC)、SD 卡、SD I/O 卡都有 SDIO 接口。STM32F10x 系列控制器有一个 SDIO 主机接口,它可以与 MMC 卡、SD 卡、SD I/O 卡以及CE-ATA 设备进行数据传输。MMC 卡可以说是 SD 卡的前身,现阶段已经用得很少。SD
I/O 卡本身不是用于存储的卡,它是指利用 SDIO 传输协议的一种外设。比如 Wi-Fi Card,它主要是提供 Wi-Fi 功能,有些 Wi-Fi 模块是使用串口或者 SPI 接口进行通信的,但 Wi-Fi SDIO Card 是使用 SDIO 接口进行通信的。并且一般设计 SD I/O 卡是可以插入到 SD 的插槽。CE-ATA 是专为轻薄笔记本硬盘设计的硬盘高速通讯接口。
SDIO 接口的设备:

(二)、SD 卡物理结构

一张SD卡包括有存储单元、存储单元接口、电源检测、卡及接口控制器和接口驱动器5 个部分,见下图。存储单元是存储数据部件,存储单元通过存储单元接口与卡控制单元进行数据传输;电源检测单元保证SD卡工作在合适的电压下,如出现掉电或上状态时,它会使控制单元和存储单元接口复位;卡及接口控制单元控制SD卡的运行状态,它包括有8 个寄存器;接口驱动器控制 SD 卡引脚的输入输出。
SD 卡物理结构:

SD 卡总共有 8 个寄存器,用于设定或表示 SD 卡信息,参考下表。这些寄存器只能通过对应的命令访问,对 SD 卡进行控制操作并不是像操作控制器 GPIO 相关寄存器那样一次读写一个寄存器的,它是通过命令来控制,SDIO 定义了 64 个命令,每个命令都有特殊意义,可以实现某一特定功能,SD 卡接收到命令后,根据命令要求对 SD 卡内部寄存器进行修改,程序控制中只需要发送组合命令就可以实现 SD 卡的控制以及读写操作。
SD 卡寄存器:

(三)、SD卡总线

1.总线拓扑
SD 卡一般都支持 SDIO 和 SPI 这两种接口,本篇内容只介绍 SDIO 接口操作方式。
SD 卡总线拓扑参考下图。虽然可以共用总线,但不推荐多卡槽共用总线信号,要求一个单独 SD 总线应该连接一个单独的 SD 卡。
SD 卡总线拓扑:

SD 卡使用 9-pin 接口通信,其中 3 根电源线、1 根时钟线、1 根命令线和 4 根数据线,
具体说明如下:
CLK:时钟线,由 SDIO 主机产生,即由 STM32 控制器输出;
CMD:命令控制线,SDIO 主机通过该线发送命令控制 SD 卡,如果命令要求 SD 卡提供应答(响应),SD 卡也是通过该线传输应答信息;
D0-3:数据线,传输读写数据;SD 卡可将 D0 拉低表示忙状态;
VDD、VSS1、VSS2:电源和地信号。
实际上,SDIO 的通信时序简单许多,SDIO 不管是从主机控制器向 SD 卡传输,还是 SD 卡向主机控制器传输都只以 CLK 时钟线的上升沿为有效。SD 卡操作过程会使用两种不同频率的时钟同步数据,一个是识别卡阶段时钟频率 FOD,最高为 400kHz,另外一个是数据传输模式下时钟频率 FPP,默认最高为 25MHz,如果通过相关寄存器配置使 SDIO 工作在高速模式,此时数据传输模式最高频率为 50MHz。
对于 STM32 控制器只有一个 SDIO 主机,所以只能连接一个 SDIO 设备,开发板上集成了一个 Micro SD 卡槽和 SDIO 接口的 WiFi 模块,要求只能使用其中一个设备。SDIO 接口的 WiFi 模块一般集成有使能线,如果需要用到 SD 卡需要先控制该使能线禁用 WiFi 模块。
2.总线协议
SD 总线通信是基于命令和数据传输的。通讯由一个起始位(“0”),由一个停止位(“1”)终止。SD 通信一般是主机发送一个命令(Command),从设备在接收到命令后作出响应(Response),如有需要会有数据(Data)传输参与。SD 总线的基本交互是命令与响应交互。
命令与响应交互:

SD 数据是以块(Black)形式传输的,SDHC 卡数据块长度一般为 512 字节,数据可以从主机到卡,也可以是从卡到主机。数据块需要 CRC 位来保证数据传输成功。CRC 位由 SD卡系统硬件生成。STM32 控制器可以控制使用单线或 4 线传输,本开发板设计使用 4 线传输。下图为主机向 SD 卡写入数据块操作示意。
多块写入操作:

二、基于STM32F103完成对SD卡的数据读取

(一)、创建工程

工程文件如下,请自行下载 链接:https://pan.baidu.com/s/1L5E4BG8cqvpvtDxOdUUXoQ
提取码:e63q

1.打开STM32CUBEMX,选择ACCESS TO MCU SELECTCR创建新项目

2.在Pat Number那输入自己的芯片,我选择的是stm32F103C8, 选中你要的芯片的封装类型,然后点击Start Project

3.cube配置



配置 PA4 引脚为 GPIO_Output,并命名为 SD_CS




进入Project Manager界面输入你的项目名称和你项目保存的地址,将IDE那项改为MDK-ARM

注:项目保存的地址不能有中文,否则会出错


然后点击Generate Code,生成工程文件

(二)、修改代码

提供的工程文件是以修改好了的,详细修改过程请参考:
https://blog.csdn.net/qq_39758638/article/details/103573843

代码分析:


(三)、串口烧录

详情请参考: https://blog.csdn.net/lengyuefeng212/article/details/104178386

(四)、结果展示

1.连接方式(供电需5V供电):

STM32F103C8T6 SD卡
PA4 CS
PA5 SCK
PA6 MISO
PA7 MOSI

2.打开串口助手,按下RESET按键


3.读取SD卡,打开文本文件


文件写入成功!

三、总结

此次实验操作并不复杂,但其连线需要十分谨慎细致,且需注意硬件供电需要使用5V供电,如果检查了代码、连线接口等所有相关都无问题,但仍无法成功初始化,则应该便是供电问题,这一步我尝试了很久,很神奇的是在一台笔记本电脑上USB供电可以轻易成功实现,但在其他三台笔记本电脑上却无法成功,祝你们好运!(๑`・ᴗ・´๑)

四、参考文献

https://blog.csdn.net/qq_39758638/article/details/103573843
《零死角玩转STM32—F103指南者》

基于STM32F103完成对SD卡的数据读取(fat文件模式)相关推荐

  1. STM32F103读取SD卡的数据(fat文件模式)

    实验目的 掌握SD卡协议原理,用STM32F103完成对SD卡的数据读取(fat文件模式). 实验原理 SD卡寄存器 SD卡总共有8个寄存器,用于设定或表示SD卡信息. 这些寄存器只能通过对应的命令访 ...

  2. STM32F103完成对SD卡的数据读取(fat文件模式)

    目录 一.关于SD卡 1.简介 2.SD卡的寄存器 3.SD卡读取与写入(SPI模式) 二.实验操作 1.仪器 2.代码 3.连线 4.烧录程序 5.串口调试助手初始化并写入文件 6.sd卡里hell ...

  3. 使用Altium Designer 绘制原理图并且使用STM32F103完成对SD卡的数据读取

    使用Altium Designer 绘制原理图并且使用STM32F103完成对SD卡的数据读取 前言 实验要求 一. 电路原理图绘制 软件安装配置过程 (一)绘制stm32最小系统的电路原理图 1.新 ...

  4. STM32F103完成对SD卡的数据读取

    目录 一.SD卡介绍 1.概述 2.SD模式 3.SD卡读取与写入(SPI模式) 二. STM32F103完成对SD卡的数据读取 1.代码部分 2.U盘格式化 3.电路连接 4.具体实现 三.参考资料 ...

  5. 【嵌入式20】STM32F103完成对SD卡的数据读取详细操作

    本文主要利用STM32F103完成对SD卡的数据读取,介绍该实验的详细操作 一.题目要求 二.SD卡协议原理 1.SD卡简述 2.SD卡物理结构 3.SD卡寄存器 4.SD卡操作模式 5.SD卡初始化 ...

  6. 用STM32F103完成对SD卡的数据读取

    目录 SD卡协议原理 STM32+SD卡 的系统原理图设计 具体原理 代码 所用软件及硬件: 成果 参考文献 SD卡协议原理 功能 SD卡是存储卡,它的功能就是存储. 分类 SD卡按容量分类,可以分为 ...

  7. STM32F103完成对SD卡的数据读取详细操作

    SD卡协议原理 SD卡简述 关于SPI协议 通讯的起始和停止信号. 数据有效性 连线 代码完整工程 修改代码 烧录结果 总结 SD卡简述 很多单片机系统都需要大容量存储设备,以存储数据.目前常用的有 ...

  8. STM32F103之完成对SD卡的数据读取

    文章目录 一. 认识SD卡 1. 介绍SD卡 2. SD卡的物理结构 3. SD卡寄存器 4. SD卡模式 5. 初始化SD卡过程 6. SD卡读取数据 二. 实验操作--对SD卡进行数据读取 1. ...

  9. STM32+SD卡的原理图绘制以及用32完成对SD卡的数据读取(fat文件模式)

    目录 一.下载安装AD 1.1安装方法一 1.2安装方法二 二.绘制STM32最小系统原理图 2.1元件库 2.2新建工程 2.3绘制原理图 三.SD卡协议原理 3.1SD卡简介 3.2SD卡接口 3 ...

最新文章

  1. SpringBoot最新面试题及答案,汇总版
  2. JDK注解(内置和自定义)
  3. cf552 G Minimum Possible LCMn个数,求最小得一对lcm
  4. 如何知道网站的IP,然后利用IP登陆网站?
  5. 中国聚氨酯胶粘剂行业现状研究分析及市场前景预测报告(2022年)
  6. 2019牛客暑期多校训练营(第七场)
  7. Netflix数据库架构变革:缩放时间序列的数据存储
  8. c 求最小公倍数_公务员备考-最小公倍数和最小公约数问题
  9. java POI 写入百万数据到 excel
  10. 分解 python_面试官:如何用Python实现将一个整数分解成质因数?
  11. git 操作二进制文件
  12. 零基础入门Python I/O:从print函数开始
  13. Hibernate 修改数据
  14. http://blog.sina.com.cn/s/blog_6a01140c0100wimi.html
  15. 怎么求平均数_小学奥数知识点趣味学习——平均数问题
  16. 警告!不要购买安桥Htx22hdx直到你读这
  17. 使用git命令提交远程github仓库的时候提示rejected(拒绝)解决办法
  18. android 画圆形图 获取圆形bitmap
  19. 聊聊mq中消息消费的几种方式
  20. 机器学习在美团配送系统的实践:用技术还原真实世界-笔记

热门文章

  1. 【二十四讲】ControllerAdvice 之 @InitBinder
  2. Solid Edge 放样使用引导曲线
  3. 在linux系统中删除目录的命令是,在Linux中使用rmdir、rm和find命令删除目录的方法...
  4. 阿里月报目录 方便查询
  5. 2019新闻列表_每日新闻摘要:2019年3月12日以来的热门故事
  6. 原创|搞钱才是硬道理!
  7. 1024程序员日:还有这种操作,舒适!
  8. Python打造一款仿CE工具
  9. SOLIDWORKS软件不仅仅是三维机械设计软件
  10. 如何在 Linux 上使用 Neural Compute Stick 2 运行 OpenVINO