STM32之完成对SD卡的数据读取

news/2024/10/18 5:37:35/

目录

  • 一、SD卡的简介
  • 二、SD卡引脚定义
  • 三、实验过程
    • 2.1 代码下载
    • 2.2 SD卡写入文件名和写入内容
    • 2.3 main函数
    • 2.4 SD卡写入函数
  • 四、连线
  • 五、编译并烧录
  • 六、实验验证
  • 七、代码修改
  • 八、结果显示
  • 九、总结
  • 十、参考

一、SD卡的简介

SD存储卡是一种基于 半导体 快闪记忆器的新一代记忆设备,由于它体积小、 数据传输 速度快、可 热插拔 等优良的特性,被广泛地于便携式装置上使用,例如 数码相机 、 平板电脑 和 多媒体播放器 等。

二、SD卡引脚定义

在这里插入图片描述

三、实验过程

2.1 代码下载

链接:https://pan.baidu.com/s/1XTmLumQPlV6dUrWkSPc9pQ
提取码:i3qe

2.2 SD卡写入文件名和写入内容

char SD_FileName[] = "hello.txt";
uint8_t WriteBuffer[] = "马睿睿 631907030219 \r\n";

2.3 main函数

int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_SPI1_Init();MX_FATFS_Init();MX_USART1_UART_Init();HAL_UART_Receive_IT(&huart1,&aRxBuffer1,1); 	//enable uart	printf(" mian \r\n");Get_SDCard_Capacity();	//得到使用内存并选择格式化while (1){WritetoSD(WriteBuffer,sizeof(WriteBuffer));	//写入SD卡	HAL_Delay(500);WriteBuffer[0] = WriteBuffer[0] +10;WriteBuffer[1] = WriteBuffer[1] +10; write_cnt ++;while(write_cnt > 10){	printf(" while \r\n");HAL_Delay(500);}		}
}

2.4 SD卡写入函数

void WritetoSD(BYTE write_buff[],uint8_t bufSize)
{FATFS fs;FIL file;uint8_t res=0;UINT Bw;	res = SD_init();		//SD卡初始化if(res == 1){printf("SD卡初始化失败! \r\n");		}else{printf("SD卡初始化成功! \r\n");		}res=f_mount(&fs,"0:",1);		//挂载//	if(test_sd == 0)		//用于测试格式化if(res == FR_NO_FILESYSTEM)		//没有文件系统,格式化{
//		test_sd =1;				//用于测试格式化printf("没有文件系统! \r\n");		res = f_mkfs("", 0, 0);		//格式化sd卡if(res == FR_OK){printf("格式化成功! \r\n");		res = f_mount(NULL,"0:",1); 		//格式化后先取消挂载res = f_mount(&fs,"0:",1);			//重新挂载	if(res == FR_OK){printf("SD卡已经成功挂载,可以进进行文件写入测试!\r\n");}	}else{printf("格式化失败! \r\n");		}}else if(res == FR_OK){printf("挂载成功! \r\n");		}else{printf("挂载失败! \r\n");}	res = f_open(&file,SD_FileName,FA_OPEN_ALWAYS |FA_WRITE);if((res & FR_DENIED) == FR_DENIED){printf("卡存储已满,写入失败!\r\n");		}f_lseek(&file, f_size(&file));//确保写词写入不会覆盖之前的数据if(res == FR_OK){printf("打开成功/创建文件成功! \r\n");		res = f_write(&file,write_buff,bufSize,&Bw);		//写数据到SD卡if(res == FR_OK){printf("文件写入成功! \r\n");			}else{printf("文件写入失败! \r\n");}		}else{printf("打开文件失败!\r\n");}	f_close(&file);						//关闭文件		f_mount(NULL,"0:",1);		 //取消挂载
}

四、连线

SD卡STM32
CSPA4
SCKPA5
MISOPA6
MISIPA7
VCC5V
GUNGUN

在这里插入图片描述

五、编译并烧录

编译无误
在这里插入图片描述
烧录成功
在这里插入图片描述

六、实验验证

在这里插入图片描述
在这里插入图片描述
实验显示串口收到的数据,包括总内存、可使用内存以及已使用内存,SD卡初始化成功、挂载成功、文件写入成功等显示,若写入超过10次后,输出变为while。
在这里插入图片描述
使用读卡器打开SD卡可以看到里面生成了一个HELLO.TXT文件,里面的文件第一行正确,后面就会出现问题。

七、代码修改

对main函数进行修改如下,注释掉红框里面的代码:
在这里插入图片描述

八、结果显示

在这里插入图片描述

九、总结

实验并不难,但是需要细心,而且也需要有耐心,等待虽然很漫长,但是等来的结果会很让人快乐的。

十、参考

https://blog.csdn.net/m0_58414679/article/details/122036435?spm=1001.2014.3001.5501


http://www.ppmy.cn/news/355588.html

相关文章

linux读取sd卡文件数据,Linux系统和SD卡读写部分程序.doc

Linux系统和SD卡读写部分程序 11.1.1 SD卡系统概念 Linux系统移植》第11章SD卡驱动移植,本章重点为SD卡协议介绍和SD卡驱动分析,后面也介绍SD卡驱动移植过程。随着SD卡存储容量增加和价格下降,其应用越来越广泛,SD卡驱动在嵌入式系统中也将会受到关注。本节为SD卡系统概念。…

STM32F103完成对SD卡的数据读取

目录 一、SD卡介绍 1.概述 2.SD模式 3.SD卡读取与写入(SPI模式) 二、 STM32F103完成对SD卡的数据读取 1.代码部分 2.U盘格式化 3.电路连接 4.具体实现 三、参考资料 一、SD卡介绍 1.概述 SD存储卡(Secure Digital Memory Card)是一种基于半导体快闪存储器的新一代高速…

sd卡卡槽_SD卡无法读取最完整解决办法汇总

经常有朋友遇到sd卡无法读取的问题,而如果你以为这个问题就靠一个办法就可以解决那就错了,内存卡本身就很脆弱,所以一旦出现不能读的情况就说明问题已经很严重了,所以我们总结了经验教训,总结了目前所有有几率解决的方案给大家,大家需要做的就是一个一个的排除并试着去修…

SD卡的读取与写入

文章目录 一、SD卡简介二、实验过程三、总结 一、SD卡简介 安全数字卡(简称SD卡),最初引进应用于手持式可携带电子产品,在一个小尺寸产品上可靠的存储数据,如移动电话,数码相机等。 SD卡内部包含一个控制器,能控制内部…

计算机无法读取手机内存,手机sd卡无法读取,教您解决手机sd卡无法读取的方法...

手机的内存是分为自带内存和外接内存的。所以我们一般下载的应用、拍的照片也是保存在自带内存卡或者外接内存卡里的。但要是我们的手机SD卡无法读取读了该怎么办呢?SD卡里的应用、照片之类的也都无法打开了。今天小编就来给小伙伴们说说手机SD卡无法读取读这个问题的解决方法…

sd卡无法读取怎么修复?还能恢复数据吗?

相机sd卡插在电脑上没反应?sd卡是一种基于半导体快闪记忆器的新一代记忆设备,被广泛应用在手机、数码相机等便携式装置中,但有时候相机sd卡会出现无法读取的现象,这是什么原因?里面的数据还能恢复吗?下面就…

相机SD卡无法读取提示格式化 相机SD卡无法读取怎么修复

相机SD卡中储存着的照片和视频,承载着我们美好的回忆。因为相机SD卡的容量有限,我们会定期对SD卡中的数据进行云盘备份,然后清理相机SD卡中的数据。在打开相机SD卡时,可能会遇到SD卡无法读取的情况。那么,相机SD卡无法…

数码相机SD卡无法读取怎么办?照片怎么恢复

数码相机SD卡无法读取怎么办?SD卡被广泛应用于数码相机、手机等便携式设备上,里面必然存储了不少照片,但有时候也会发生一些故障,如相机SD卡连接电脑时无法读取,这是什么原因呢? 当相机SD卡出现无法读取问题…