本帖最后由 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
这是现在的速度:
当然对于FAT系统,那也不是一下子就可以学会的,我需要读写一个6M的G代码文本文件,并且还要知道读到哪一行了,当时是想到两种方案:第一是STM32挂一个SDRAM,一次性读取数据到SDRAM中;
第二种是采用一个滑动缓冲区,数组只存4行;由于144个引脚的stm32f103zet6引脚基本被我们用完了,so 采用第二方案
这里就分享下FAT中设立滑动缓冲区连续读一个大的文件的方法,直接截图咯
233
哎呀,发现高了这么久电子,文笔不好了,想写很多的,呼呼,写不了。。。。还有一个驱动直接上传代码了,C8T6+spi_flash+FAT文件管理。
本来想分享到CSDN博客的,但是感觉在这里应该更有用,可能会让一些同行少走一些弯路。
一周热门 更多>