这不最近利用镁光的MT29F32G08型号的nandflash,利用STM32作为掌握器,但是我所用的STM32是不带FMC的,我也是想偷
驱动用的是网高下载的一个通用驱动nand_MT29F_lld,FTL层移植的原子哥的,这里展示一下STM32通用IO口读写MT29F32G08以及fatfs和USB仿照U盘的一些关键程序。
图1STM32通用IO驱动MT29F32G08

图2 通用驱动nand_MT29F_lld
图3,移植原子哥的FTL层
图4,fatfs移植,修正user_diskio.c的读扇区函数
图5,fatfs移植,修正user_diskio.c的写扇区函数
图6,fatfs移植,修正user_diskio.c的IO掌握函数
图7,USB仿照U盘,修正usbd_storage_if.c文件的读函数
图8,USB仿照U盘,修正usbd_storage_if.c文件的写函数
接下来便是用文件系统存储数据了,我这里数据量比较大,一秒钟15hz,每一条记录32字节,凑够1024字节写一次csv文件。每个文件最大写32M,写满就天生新的文件连续写,每次上电遍历目录写的文件总数,天生对应的文件名。好了,连续截图~~
上电师长西席成新的文件名,并打开文件。
图9,上电天生新的csv文件
利用两个buffer轮流写入数据,写满32M就关闭当前文件,并天生新的csv文件连续写,文件总数超过1500个就在不再连续写,差不多存满了。
图10 上电期间一直写入数据
检测到USB插入,就关闭当前正在写 的文件,卸载文件系统。可以把写好的文件拷贝出来。
图11 检测到USB插入
设备已经运行了一会了,看看目录下面的文件和内容吧~
图12 log显示USB已经插入
打开我的电脑
图13 正常识别U盘
看看目录
图14 目录下文件
看看文件内容
图15 文件内容
看到文件格式内容都对,符合设计需求。
到这里就结束了,但是,凡事总有个但是,我这个别系没有备用电源,以是当系统断电而我恰好还在写文件的时候,这个文件就会被毁坏,打不开,而当fatfs在更新目录表信息,发生断电的话,那便是文件系统破坏了,下一次上电只能重新格式化,从头开始了,以前保存的数据都会丢了。对付这个问题,我暂时还没想到办理办法(在没有备电的情形下)。如果有人有招,就提出来我试试吧。
图16 网络配图







