OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4242|回复: 1

stm32 FAT文件管理系统使用与移植经验

[复制链接]

25

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2015-5-2
在线时间
59 小时
发表于 2016-12-9 18:21:39 | 显示全部楼层 |阅读模式
本帖最后由 Draway 于 2016-12-9 18:27 编辑

最近工作项目中用到了STM32 FAT文件管理系统  读写SPI_FLASH和SD卡,STM32自带USB做大容量存储器件等相关模块,分享下最近的项目经验。
首先,刚刚拿到项目,一头雾水,神马G代码,神马做U盘,都没有接触过。就连以前项目中的USB也没有用到过。
刚开始项目经理让我用OO的USB代码进行移植,用PDIUSBD12芯片,我当时就想,不是stm32有自带的USB么,为什么不用自带的USB;
当时老大说STM32的时钟系统复杂,用自带的可能会有一些问题,所以当时放弃了自带USB。后来就是一段苦逼的USB程序的移植调试,最后也成功了。但是最后放弃了那个PDIUSBD12方案,原因我就不说了
不过圈圈的书和资料都是很好的啊,必须点赞的。。。

后来我就重新打板子,用stm32自带的USB。这还的感谢原子哥的开源网,提供这么多DEMO.在FAT文件管理系统下,移植了USB大容量存储的DEMO.
当然,光移植成功了,肯定是不可以做为项目直接用的,当时我的USB读到SPI_FLAH,复制文件进去,速度才4k/s,因为也是菜鸟,不知道什么原因,后来问了群里的大神,
他给我说是SPI的最小扇区和USB读取的最小扇区不一致导致,我仔细看了下驱动程序,SPI_FLASH的最小扇区是4096BIT(4BYTE) ,而USB最小的操作扇区是512bit;
后来我改为在USB读写时候为4096bit 这样速度就可以达到60K/S了。对应一般项目足够了(想想SPI_FLASH才16M)。当然USB还是有点难的,在做项目中慢慢学习咯,感觉我才只是会中,知道扇区的匹配的重要性。

123

123
这是现在的速度:
455.png

当然对于FAT系统,那也不是一下子就可以学会的,我需要读写一个6M的G代码文本文件,并且还要知道读到哪一行了,当时是想到两种方案:第一是STM32挂一个SDRAM,一次性读取数据到SDRAM中;
第二种是采用一个滑动缓冲区,数组只存4行;由于144个引脚的stm32f103zet6引脚基本被我们用完了,so 采用第二方案
这里就分享下FAT中设立滑动缓冲区连续读一个大的文件的方法,直接截图咯
344.png

233

233


哎呀,发现高了这么久电子,文笔不好了,想写很多的,呼呼,写不了。。。。还有一个驱动直接上传代码了,C8T6+spi_flash+FAT文件管理。


本来想分享到CSDN博客的,但是感觉在这里应该更有用,可能会让一些同行少走一些弯路。






C8T6_SPI1_SD_FAT.zip

6.05 MB, 下载次数: 7080

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2012-9-16
在线时间
21 小时
发表于 2017-5-4 16:04:38 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-20 12:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表