发新帖我要提问
12
返回列表
打印
[STM32F1]

用STM32F103完成对SD卡数的读写

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
21
结合国际经验|  楼主 | 2023-10-19 12:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
六、硬件准备
咱们用于读取SD卡的模块为

使用特权

评论回复
22
结合国际经验|  楼主 | 2023-10-19 12:50 | 只看该作者
咱们可以去其店铺下载对应资料
由于采用SPI方式,所以我们的连线方式为

使用特权

评论回复
23
结合国际经验|  楼主 | 2023-10-19 12:50 | 只看该作者

使用特权

评论回复
24
结合国际经验|  楼主 | 2023-10-19 12:51 | 只看该作者
注:这里特别说明一下!!!大家一定要注意,我们在用USB转TTL为STM32供电的时候一定需要接到5V上面去,并且在用32给SD卡模块供电的时候一定一定要接到5V电源上,否则我们无法驱动该SD模块

使用特权

评论回复
25
结合国际经验|  楼主 | 2023-10-19 12:51 | 只看该作者
在我第一次做这个实验的时候,我就将供电接的3V,发现除了能按一下复位键发送一个“main”以外并没有什么其他作用了,更别说对于SD卡的读取了。
经过长时间的探索后面才发现原来是3.3V的电压无法驱动我们的SD卡模块,也就无法进入到我们的SD卡初始化步骤了,咱们只需要将供电改成5V就可以得到正确结果了!
正确接线方式:
STM32上的5V引脚为SD卡模块供电

使用特权

评论回复
26
结合国际经验|  楼主 | 2023-10-19 12:52 | 只看该作者
USB转TTL为整个系统提供5V电压

使用特权

评论回复
27
结合国际经验|  楼主 | 2023-10-19 12:52 | 只看该作者
结果展示

使用特权

评论回复
28
结合国际经验|  楼主 | 2023-10-19 12:53 | 只看该作者
可以看到咱们的程序一共写入了六次文件,写入完成之后将进入while循环一直循环输出while。
我们可以根据这段代码来分析一下:

使用特权

评论回复
29
结合国际经验|  楼主 | 2023-10-19 12:54 | 只看该作者
可以看出当我们的数据写入6次之后:write_cnt > 5就会进入一个死循环,每过0.5秒输出一个while。
接下来咱们再来验证一下,将SD卡拔出用读卡器插到我们的PC上看我们写入的文件

使用特权

评论回复
30
结合国际经验|  楼主 | 2023-10-19 12:56 | 只看该作者
可以看到我们写入的文件为6行“01 write buff to sd”,这与我们的代码对应

使用特权

评论回复
31
结合国际经验|  楼主 | 2023-10-19 12:57 | 只看该作者
但是大家可以看到我们打开的文件显示出来的结果是乱码的,我们要得到正确的结果就必须在main.c文件中修改一下我们写入数据的数组

使用特权

评论回复
32
结合国际经验|  楼主 | 2023-10-19 12:57 | 只看该作者
这里建议循环次数小于10次,因为要想改变我们序号的十位就必须加一个计数十次的标志位,多此一举

修改写入文件的数据

使用特权

评论回复
33
结合国际经验|  楼主 | 2023-10-19 12:58 | 只看该作者
再次实验 得到正确结果

使用特权

评论回复
34
结合国际经验|  楼主 | 2023-10-19 12:58 | 只看该作者
、总结
在实验的过程中我遇到了不少难题,比如一开始的供电不足导致无法驱动SD卡模块,但是在大家的帮助下我终于还是解决了这个问题,另外就是咱们在移植代码的时候一定要仔细,稍微错一点可能就很麻烦会报很多错。最后,这篇博客是基于16G内存的SD卡的,小于16G内存的SD卡都可以用该工程来读取,大一些的SD卡就不得而知了,欢迎大家与我交流。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则