目录
准备
- 所需的软件
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
目录
准备
- 所需的软件
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
暂无评论