IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于STM32F103完成对SD卡的数据读取(fat文件模式) -> 正文阅读

[嵌入式]基于STM32F103完成对SD卡的数据读取(fat文件模式)

实验内容

掌握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供电):

STM32F103C8T6SD卡
PA4CS
PA5SCK
PA6MISO
PA7MOSI

2.打开串口助手,按下RESET按键
在这里插入图片描述
在这里插入图片描述
3.读取SD卡,打开文本文件
在这里插入图片描述
在这里插入图片描述
文件写入成功!

三、总结

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

四、参考文献

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

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:21:45  更:2021-12-26 22:23:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 15:32:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码