基于STM32F103完成对SD卡的数据读取操作
目录
一、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卡的数据读取操作相关推荐
- 基于STM32F103完成对SD卡的数据读取(fat文件模式)
文章目录 实验内容 一.SD卡协议 (一).SD卡简介 (二).SD 卡物理结构 (三).SD卡总线 二.基于STM32F103完成对SD卡的数据读取 (一).创建工程 (二).修改代码 (三).串口 ...
- STM32F103完成对SD卡的数据读取(fat文件模式)
目录 一.关于SD卡 1.简介 2.SD卡的寄存器 3.SD卡读取与写入(SPI模式) 二.实验操作 1.仪器 2.代码 3.连线 4.烧录程序 5.串口调试助手初始化并写入文件 6.sd卡里hell ...
- 使用Altium Designer 绘制原理图并且使用STM32F103完成对SD卡的数据读取
使用Altium Designer 绘制原理图并且使用STM32F103完成对SD卡的数据读取 前言 实验要求 一. 电路原理图绘制 软件安装配置过程 (一)绘制stm32最小系统的电路原理图 1.新 ...
- STM32F103完成对SD卡的数据读取
目录 一.SD卡介绍 1.概述 2.SD模式 3.SD卡读取与写入(SPI模式) 二. STM32F103完成对SD卡的数据读取 1.代码部分 2.U盘格式化 3.电路连接 4.具体实现 三.参考资料 ...
- 【嵌入式20】STM32F103完成对SD卡的数据读取详细操作
本文主要利用STM32F103完成对SD卡的数据读取,介绍该实验的详细操作 一.题目要求 二.SD卡协议原理 1.SD卡简述 2.SD卡物理结构 3.SD卡寄存器 4.SD卡操作模式 5.SD卡初始化 ...
- 用STM32F103完成对SD卡的数据读取
目录 SD卡协议原理 STM32+SD卡 的系统原理图设计 具体原理 代码 所用软件及硬件: 成果 参考文献 SD卡协议原理 功能 SD卡是存储卡,它的功能就是存储. 分类 SD卡按容量分类,可以分为 ...
- STM32F103完成对SD卡的数据读取详细操作
SD卡协议原理 SD卡简述 关于SPI协议 通讯的起始和停止信号. 数据有效性 连线 代码完整工程 修改代码 烧录结果 总结 SD卡简述 很多单片机系统都需要大容量存储设备,以存储数据.目前常用的有 ...
- STM32F103之完成对SD卡的数据读取
文章目录 一. 认识SD卡 1. 介绍SD卡 2. SD卡的物理结构 3. SD卡寄存器 4. SD卡模式 5. 初始化SD卡过程 6. SD卡读取数据 二. 实验操作--对SD卡进行数据读取 1. ...
- STM32+SD卡的原理图绘制以及用32完成对SD卡的数据读取(fat文件模式)
目录 一.下载安装AD 1.1安装方法一 1.2安装方法二 二.绘制STM32最小系统原理图 2.1元件库 2.2新建工程 2.3绘制原理图 三.SD卡协议原理 3.1SD卡简介 3.2SD卡接口 3 ...
- STM32F103最小板完成对SD卡的数据读取(fat文件模式)
目录 一.SD卡协议原理介绍 1.SD卡简介 2.SDIO设备分类 3.SD卡物理结构 4.SD卡寄存器 5.SD模式 驱动模式 传输模式 二. 实现对SD卡的数据读取 1.硬件准备 2.芯片模块与S ...
最新文章
- linux 9.0挂载驱动
- torch.where用法
- Codeup墓地-问题 A: 还是畅通工程
- lin通讯从节点同步间隔场_汽车行业必须知识--CAN FD通讯
- 【渝粤教育】国家开放大学2018年春季 0014-21T秘书学(一) 参考试题
- lora网关软件设计_SX1301网关设计 LoRaWAN网关 评估开发套件sx1278双向测试云平台LPKT001...
- hadoop hbase java_Hadoop、Hbase伪分布式安装
- 带进度条的Flash多文件上传面板(SwfUploadPanel) (转载)
- datax参数设置_DataX-操作HDFS
- android 音效,音效 | Android 开源项目 | Android Open Source Project
- 五点差分法求解偏微分方程(PDE)
- PDF打开口令、PDF编辑限制如何解决
- Ribbon负载均衡服务调用
- 小米互联网音箱升级部分殉难者留言
- python中占位符包括_python中占位符
- 百度TV运营商随视传媒发布新广告平台AdMan
- UCGUI使用外部字库芯片显示汉字
- 长沙互联网活动基地2019年年会活动纪实
- Sun Solaris
- 【不专一的开发】UML(二)---行为图(状态图、活动图、序列图、协同图)