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

本文详细介绍了SD卡的物理结构、寄存器以及SPI模式下的读写流程,并结合STM32F103微控制器,讲述了硬件准备、连接方式以及HAL库的使用。在实验中,通过读写函数实现了SD卡的数据操作,遇到的初始化问题也进行了分析,强调了5V电源的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、SD卡协议原理

1、SD卡物理结构

一般SD卡包括有存储单元、存储单元接口、电源检测、卡及接口控制器和接口驱动器 5个部分。
在这里插入图片描述
在这里插入图片描述

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

2、SD卡寄存器

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

3、SD卡读取与写入(SPI模式)

1、发送CMD17;
2、接收卡响应R1;
3、接收数据起始令牌0XFE;
4、接收数据;
5、接收2个字节的CRC,如果不使用CRC,这两个字节在读取后可以丢掉。
6、禁止片选之后,发多8个CLK;
以上就是一个典型的读取SD卡数据过程,SD卡的写于读数据差不多,写数据通过CMD24来实现,具体过程如下:
1、发送CMD24;
2、接收卡响应R1;
3、发送写数据起始令牌0XFE;
4、发送数据;
5、发送2字节的伪CRC;
6、禁止片选之后,发多8个CLK;
以上就是一个典型的写SD卡过程。

二、实验准备与操作

1、硬件准备

SD卡模块及SD卡
在这里插入图片描述
在这里插入图片描述

2、连线

在这里插入图片描述
请添加图片描述
请添加图片描述
两个usb接口全接入电脑插口就行了,只是串口传输助手记得看并对应串口号。

3、hal库以及相关代码

链接:https://pan.baidu.com/s/1EpFh744MGUeSnjkz0b_KCw
提取码:520g

三、实验结果分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当文件写入、SD卡初始化循环11次后会出现while。

四、代码分析

主函数

int main(void)
{
   
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
  

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值