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

本文主要讲述SD卡协议原理,用STM32F103 完成对SD卡的数据读取(FAT文件模式)

目录

一 基本知识 

1.1 SD卡简述

1.2 SPI协议

1.3 SD卡物理结构

二 代码配置与修改

2.1 源码下载

2.2 硬件连线

2.3 代码修改

2.4 编译烧录

2.5 结果展示

三、可能的错误原因

四、参考网站


一 基本知识 

1.1 SD卡简述


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

1.2 SPI协议

关于SPI协议可以看我之前写的博客

基于SPI协议 AHT20+OLED屏显_我想恰鱼的博客-CSDN博客

1.3 SD卡物理结构

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

 

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

二 代码配置与修改

具体的从cubemx创建工程到源代码移植修改代码等教程可以看博客: 

stm32芯片使用STM32cube配置TFAST模式SPI读写SD卡_浩923的博客-CSDN博客

这里我就不过多赘述了,我前面的博客也介绍了很多利用cubemx创建工程的教程,感兴趣可以去看看

下面我就直接贴出配置好的工程便于大家下载学习。

2.1 源码下载

github下载:GitHub - cdsgsjx/-

2.2 硬件连线

STM32SD卡
CSPA4
SCKPA5
MISOPA6
MOSIPA7

2.3 代码修改

  • main.c

while循环中

while (1)
  {
		
		
		
		WritetoSD(WriteBuffer,sizeof(WriteBuffer));		
 
		
		
		HAL_Delay(500);
		/*WriteBuffer[0] = WriteBuffer[0] +10;
		WriteBuffer[1] = WriteBuffer[1] +10;*/
		write_cnt ++;
		
		while(write_cnt > 0)
		{	
			printf(" while \r\n");
			HAL_Delay(500);
		}
}

2.4 编译烧录

 编译后无错。

2.5 结果展示

 

 

三、可能的错误原因

由于stm32最小开发板性能确实有限,导致本次实验失败率及其高,确实一分钱一分货,有条件的还是推荐买高级一点的板子。错误的原因可能有:

1、编译运行后无反应一直显示main,可能是由于我们的stm最小系统和SD卡需要更高的电压来驱动它,可将3.3V电压换成5V电压,SD卡与串口都要上5V电压。

2、可能是因为一些杜邦线的接触不良或太长,可以试着移动SD卡,更换较短的杜邦线,在玄学的作用下可能就成功了。

3、SPI协议是高速运作的,需要尽可能的降低时钟速率。

四、参考网站

用STM32F103 完成对SD卡的数据读取(FAT文件模式)_Laul Ken-Yi的博客-CSDN博客

stm32芯片使用STM32cube配置TFAST模式SPI读写SD卡_浩923的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值