stm32f103c8t6--sd卡的读写&&flash地址空间的数据读取

目录

准备

一、SD卡的数据读写

1.目标

2.连线

3.写入数据

4.读出数据

二、Flash地址空间的数据读取

1.目的

2.配置

3.代码修改

三、总结

参考


准备

  • 所需的软件

STM32CubeMX、keil5、串口调试助手、mcuisp烧录程序

  • 所需硬件

stm32f103c8t6、SD卡以及卡槽、ST-link

一、SD卡的数据读写

工程代码:

链接:https://pan.baidu.com/s/15OKDTTh3jUxreny_cY_2IQ 
提取码:asdf 

1.目标

欲达成目标:在SD卡创建一个文件,循环(不加延时)分批一次写入256字节,累计写入不少于64KB字节;然后读取此文件数据,通过串口显示出来。分析写入和读取的速率。

2.连线

stm32与串口之间的连线,我之前的博客有写,不在赘述

3.写入数据

打开工程文件

main.c

添加256字节的数据

 循环写入250,写完就有64k数据了

 

编译烧录

 

 串口写入

 出现finish代表写入完成

用读卡器查看是否写入成功

确实成功写入那么多数据

4.读出数据

打开工程文件

修改mian.c

定义读出函数,指针标志s,且定义字节类型格式br和一个存储读取的数组READBUFF 

 

 修改f_open函数的第三个打开状态为FA_READ模式。文件指针移至相应位置,否则无输出。指针加地址使用FATS的read函数,第一个参数是指针,第二个是存储数组,第三个是数组大小,第四个是强制转换br为UINT格式。输出

 

编译烧录,串口输出

 依次输出,我用了a,b,c,d,e来区分不同读出次序

二、Flash地址空间的数据读取

工程代码链接:https://pan.baidu.com/s/14BeaTowYg0zw2V1G1p85nQ 
提取码:asdf

1.目的

Flash地址空间的数据读取。stm32f103c8t6只有20KB 内存(RAM)供程序代码和数组变量存放,因此,针对内部Flash的总计64KB存储空间(地址从0x08000000开始),运行一次写入8KB数据,总计复位运行代码4次,将32KB数据写入Flash。并验证写入数据的正确性和读写速率

2.配置

把ST-link与stm32c8t6按下图连接好

 打开工程文件,点魔术棒,设置一下

 

点击setting看看有没有检测到ST-link 

 

3.代码修改

mian.c 箭头处添加8k数据

flash.h

结束地址修改,起始地址加上64k数据16进制表示就是0X0801BA00

  

编译、下载、调试(一件三连)

 View->memory windows->memory 1打开内存观察窗口,并在地址栏中输入:0x800c000,观察将要修改的flash区间区容

 

然后看看结束地址与运算的结束地址是否一致,可以看到结束地址是0x0800DF40,正好是起始地址加上8k数据后的位置

 逐次修改起始地址三次,每次加8k的数据即16进制为1F40

分别修改为0x0800DF40、0X0800FE7F、0x08011DBF

检验是否写入32k的数据,memory输入最后的结束地址0X08013CFF

可以看到最后一个数据“5”在那个位置,说明已经写入了32k数据

三、总结

实验一实现了对SD卡的读写,通过stm32能对数据进行重复读写 。这些操作加深了对FATS读取函数的认识。实验二是对stm32的flash存储空间的读写,此番操作下来确实有点繁琐,但是做完后成就慢慢,而且进一步了解了flash存储。

参考

STM32用cube配置FATFS模式下SPI读写SD卡_Drive World的博客-CSDN博客

版权声明:本文为CSDN博主「大洋丨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/run___5661651/article/details/122243827

目录

准备

一、SD卡的数据读写

1.目标

2.连线

3.写入数据

4.读出数据

二、Flash地址空间的数据读取

1.目的

2.配置

3.代码修改

三、总结

参考


准备

  • 所需的软件

STM32CubeMX、keil5、串口调试助手、mcuisp烧录程序

  • 所需硬件

stm32f103c8t6、SD卡以及卡槽、ST-link

一、SD卡的数据读写

工程代码:

链接:https://pan.baidu.com/s/15OKDTTh3jUxreny_cY_2IQ 
提取码:asdf 

1.目标

欲达成目标:在SD卡创建一个文件,循环(不加延时)分批一次写入256字节,累计写入不少于64KB字节;然后读取此文件数据,通过串口显示出来。分析写入和读取的速率。

2.连线

stm32与串口之间的连线,我之前的博客有写,不在赘述

3.写入数据

打开工程文件

main.c

添加256字节的数据

 循环写入250,写完就有64k数据了

 

编译烧录

 

 串口写入

 出现finish代表写入完成

用读卡器查看是否写入成功

确实成功写入那么多数据

4.读出数据

打开工程文件

修改mian.c

定义读出函数,指针标志s,且定义字节类型格式br和一个存储读取的数组READBUFF 

 

 修改f_open函数的第三个打开状态为FA_READ模式。文件指针移至相应位置,否则无输出。指针加地址使用FATS的read函数,第一个参数是指针,第二个是存储数组,第三个是数组大小,第四个是强制转换br为UINT格式。输出

 

编译烧录,串口输出

 依次输出,我用了a,b,c,d,e来区分不同读出次序

二、Flash地址空间的数据读取

工程代码链接:https://pan.baidu.com/s/14BeaTowYg0zw2V1G1p85nQ 
提取码:asdf

1.目的

Flash地址空间的数据读取。stm32f103c8t6只有20KB 内存(RAM)供程序代码和数组变量存放,因此,针对内部Flash的总计64KB存储空间(地址从0x08000000开始),运行一次写入8KB数据,总计复位运行代码4次,将32KB数据写入Flash。并验证写入数据的正确性和读写速率

2.配置

把ST-link与stm32c8t6按下图连接好

 打开工程文件,点魔术棒,设置一下

 

点击setting看看有没有检测到ST-link 

 

3.代码修改

mian.c 箭头处添加8k数据

flash.h

结束地址修改,起始地址加上64k数据16进制表示就是0X0801BA00

  

编译、下载、调试(一件三连)

 View->memory windows->memory 1打开内存观察窗口,并在地址栏中输入:0x800c000,观察将要修改的flash区间区容

 

然后看看结束地址与运算的结束地址是否一致,可以看到结束地址是0x0800DF40,正好是起始地址加上8k数据后的位置

 逐次修改起始地址三次,每次加8k的数据即16进制为1F40

分别修改为0x0800DF40、0X0800FE7F、0x08011DBF

检验是否写入32k的数据,memory输入最后的结束地址0X08013CFF

可以看到最后一个数据“5”在那个位置,说明已经写入了32k数据

三、总结

实验一实现了对SD卡的读写,通过stm32能对数据进行重复读写 。这些操作加深了对FATS读取函数的认识。实验二是对stm32的flash存储空间的读写,此番操作下来确实有点繁琐,但是做完后成就慢慢,而且进一步了解了flash存储。

参考

STM32用cube配置FATFS模式下SPI读写SD卡_Drive World的博客-CSDN博客

版权声明:本文为CSDN博主「大洋丨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/run___5661651/article/details/122243827

生成海报
点赞 0

大洋丨

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

将音频编解码器添加到嵌入式系统的 5 个技巧

嵌入式系统播放音频的能力正在成为一个相当普遍的功能。音频为用户提供了很好的反馈,但如今有如此多的高保真音频可用,使用哔哔声和啁啾声不再削减它。开发人员当然可以使用分立组件和 DAC 从系统中获得不错的音频&#xff0