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

大洋丨

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

暂无评论

相关推荐

音频数据的Flash读取与DAC的播放

一、Flash地址空间的数据读取 1.Flash简介 在 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,我们在电脑上编写好应用程序后,使用下载器把编译后的代码文件烧录到该内部

音频数据的Flash读取与DAC播放(精简)

一、创建STM32CUBEMX工程 芯片选择F103C8 配置定时器 打开外部时钟 配置时钟 配置PC13为output对应板子上的LED 设置堆栈大小为4K,导出 二、KEIL下的配置 将flash.c 和flash

使用STM32F103的DAC功能实现音频输出

一、DAC简介 DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与 ADC相反。在常见的数字信号系统中,大部分传感器