目录

一、SD卡协议和原理

1、SD卡简述

2、SD卡物理结构

3、SD卡寄存器

4、SD 卡总线

5、SD 总线协议

二、项目配置与代码

1、创建项目

2、完整工程代码如下

3、代码修改

4、接线

三、实验结果

四、总结

五、参考资料


一、SD卡协议和原理

1、SD卡简述

很多单片机系统都需要大容量存储设备,以存储数据。目前常用的有 U 盘,FLASH 芯片,SD 卡等。他们各有优点,综合比较,最适合单片机系统的莫过于 SD 卡了,它不仅容量可以做到很大(32GB 以上),支持 SPI/SDIO 驱动,而且有多种体积的尺寸可供选择(标准的 SD 卡尺寸,以及 TF 卡尺寸等),能满足不同应用的要求。
只需要少数几个 IO 口即可外扩一个高达 32GB 以上的外部存储器,容量从几十 M 到几十G 选择尺度很大,更换也很方便,编程也简单,是单片机大容量外部存储器的首选。

2、SD卡物理结构

一般SD卡包括有存储单元、存储单元接口、电源检测、卡及接口控制器和接口驱动器 5个部分。

存储单元是存储数据部件,存储单元通过存储单元接口与卡控制单元进行数据传输;

电源检测单元保证SD卡工作在合适的电压下,如出现掉电或上状态时,它会使控制单元和存储单元接口复位;

卡及接口控制单元控制SD卡的运行状态,它包括有8个寄存器; 接口驱动器控制SD卡引脚的输入输出。

3、SD卡寄存器

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

4、SD 卡总线

SD 卡一般都支持 SDIO 和 SPI 这两种接口。

SD 卡使用 9-pin 接口通信,其中 3 根电源线、1 根时钟线、1 根命令线和 4 根数据线。

SDIO 的通信时序要简单许多,SDIO 不管是从主机控制器向 SD 卡传输,还是 SD 卡向主机控制器传输都只以 CLK 时钟线的上升沿为有效。

5、SD 总线协议

SD 总线通信是基于 命令 和 数据 传输的。

通讯由一个起始位(“0”),由一个停止位(“1”)终止。SD 通信一般是主机发送一个命令(Command),从设备在接收到命令后作出响应(Response),如有需要会有数据(Data)传输参与。
SD 总线的基本交互是命令与响应交互。
SD 数据是以块(Black)形式传输的,SDHC 卡数据块长度一般为 512 字节,数据可以从主机到卡,也可以是从卡到主机。数据块需要 CRC 位来保证数据传输成功。CRC 位由 SD 卡系统硬件生成。STM32 控制器可以控制使用单线或 4 线传输。
主机向 SD 卡写入数据块操作示意如下:

SD 总线—命令

SD 命令由主机发出,以广播命令和寻址命令为例,广播命令是针对与 SD 主机总线连接的所有从设备发送的,寻址命令是指定某个地址设备进行命令传输。

SD 命令格式固定为 48bit,都是通过 CMD 线连续传输的(数据线不参与)

SD 总线—响应

响应由 SD 卡向主机发出,部分命令要求 SD 卡作出响应,这些响应多用于反馈 SD 卡的状态。SDIO 总共有 7 个响应类型(代号:R1~R7),其中 SD 卡没有 R4、R5 类型响应。特定的命令对应有特定的响应类型,比如当主机发送 CMD3 命令时,可以得到响应 R6。与命令一样,SD 卡的响应也是通过 CMD 线连续传输的。根据响应内容大小可以分为短响应和长响应。短响应是 48bit 长度,只有 R2 类型是长响应,其长度为 136bit。

二、项目配置与代码

1、创建项目

打开 CubeMX,创建形工程,选择 STM32F103C8T6 芯片,具体配置我在这里就不多说了,之前我们已经配置过很多次了,相信大家也已经很熟悉了,具体可参考:

STM32用cube配置FATFS模式下SPI读写SD卡_Drive World的博客-CSDN博客

基于 STM32F103 在 FATFS 模式下对 SD 卡的数据读取_L-GRAZY的博客-CSDN博客

2、完整工程代码如下

链接:百度网盘 请输入提取码

提取码:e63q

3、代码修改

main.c

在红色方框中输入你想要在hello.txt中输出的。

while循环中

4、接线

注意: SD卡模块要接5v,STM32也要接5v,不然会失败。

三、实验结果

编译烧录后,打开串口调试助手,结果如下

注意:有可能你前面都做好了,但是在这一步串口依旧会没有回应,你可能需要检查一下线是不是没有接好,反正我在这一步做了好久,后面串口莫名其妙的 就有了回应。

然后打开sd卡可以看到有一个hello文本文件,打开,结果如下:

可以看到,第一行结果输出正确,后面输出的第二个字母变了,这是因为我在main函数中修改代码时将下面图片中红框旁的01删掉了,因为位于1的这一位每次输出就要加一,所以导致了后面输出i,j,k。。。

四、总结

这一次实验还是花了蛮多时间的,很多时间都是花在了串口那里,不知道是SD卡的原因还是接线原因,想要SD卡初始化成功以及后面的内容,是很不容易的,有可能你做很久都不行,有可能你一下就行了,这很需要耐心。

五、参考资料

基于STM32F103 完成对SD卡的数据读取(FAT文件模式)_我想恰鱼的博客-CSDN博客

STM32用cube配置FATFS模式下SPI读写SD卡_Drive World的博客-CSDN博客

基于 STM32F103 在 FATFS 模式下对 SD 卡的数据读取_L-GRAZY的博客-CSDN博客

基于STM32F103完成对SD卡的数据读取操作相关推荐

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

    文章目录 实验内容 一.SD卡协议 (一).SD卡简介 (二).SD 卡物理结构 (三).SD卡总线 二.基于STM32F103完成对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 ...

  10. STM32F103最小板完成对SD卡的数据读取(fat文件模式)

    目录 一.SD卡协议原理介绍 1.SD卡简介 2.SDIO设备分类 3.SD卡物理结构 4.SD卡寄存器 5.SD模式 驱动模式 传输模式 二. 实现对SD卡的数据读取 1.硬件准备 2.芯片模块与S ...

最新文章

  1. linux 9.0挂载驱动
  2. torch.where用法
  3. Codeup墓地-问题 A: 还是畅通工程
  4. lin通讯从节点同步间隔场_汽车行业必须知识--CAN FD通讯
  5. 【渝粤教育】国家开放大学2018年春季 0014-21T秘书学(一) 参考试题
  6. lora网关软件设计_SX1301网关设计 LoRaWAN网关 评估开发套件sx1278双向测试云平台LPKT001...
  7. hadoop hbase java_Hadoop、Hbase伪分布式安装
  8. 带进度条的Flash多文件上传面板(SwfUploadPanel) (转载)
  9. datax参数设置_DataX-操作HDFS
  10. android 音效,音效  |  Android 开源项目  |  Android Open Source Project
  11. 五点差分法求解偏微分方程(PDE)
  12. PDF打开口令、PDF编辑限制如何解决
  13. Ribbon负载均衡服务调用
  14. 小米互联网音箱升级部分殉难者留言
  15. python中占位符包括_python中占位符
  16. 百度TV运营商随视传媒发布新广告平台AdMan
  17. UCGUI使用外部字库芯片显示汉字
  18. 长沙互联网活动基地2019年年会活动纪实
  19. Sun Solaris
  20. 【不专一的开发】UML(二)---行为图(状态图、活动图、序列图、协同图)

热门文章

  1. 人体姿态识别OpenPose
  2. 非直角平面坐标系下的坐标换算
  3. n2android,刚上车,中国移动N2开箱评测,好给力的说!
  4. allennlp手动安装教程
  5. CSS行内样式内部样式外部样式
  6. 阿里云企业邮箱使用步骤
  7. 直方图规定化计算过程
  8. 初识Quartz之CronTrigger
  9. 高频分类ISO1443, ISO15693, ISO18000-3
  10. PPT排版细节,写给大家看的设计书,完美总结