一文读懂FSMC模块的使用方法
FSMC模块 是STM32系列微控制器的一个外设,它可以实现与外部存储器或显示器的连接和控制。FSMC模块的全称是灵活的静态存储控制器(Flexible Static Memory Controller),它支持SRAM、ROM、PSRAM、NOR Flash、NAND Flash、PC Card等存储器类型,以及80位或16位并口TFT LCD等显示器类型。
FSMC模块的主要特点有:
它具有高度的灵活性和可编程性,可以根据不同的外部设备类型和需求,配置不同的访问时序和参数,以实现最优化的性能和效率。它具有高度的集成度和兼容性,可以将多个外部设备共享地址、数据和控制信号,但有各自的片选信号。FSMC模块一次只能访问一个外部设备,但可以通过软件切换来实现多个设备的管理。它具有高速度和高可靠性的优势,可以利用内部时钟HCLK来同步外部设备的信号时序,以提高信号质量和系统稳定性。
FSMC模块的主要组成部分有:
AHB接口:用于将内部CPU和其他主总线外设的访问请求转换为适合外部设备的协议和信号。NOR Flash/PSRAM控制器:用于驱动异步或同步的NOR Flash或PSRAM存储器,支持多种访问模式和时序参数。NAND Flash/PC卡控制器:用于驱动NAND Flash或PC卡存储器,支持ECC校验和FIFO缓冲区等功能。外部设备接口:用于输出地址、数据和控制信号到外部设备,支持多种数据宽度和复用模式。
FSMC模块的使用方法有:
配置FSMC模块的相关寄存器,如FSMC_BCRx、FSMC_BTRx、FSMC_BWTRx等,以设置外部设备的类型、数据宽度、访问模式、时序参数等。连接FSMC模块的相关引脚,如FSMC_Ax、FSMC_Dx、FSMC_NEx等,到外部设备的对应引脚,注意引脚功能设置为复用模式。通过FSMC模块的地址映射空间,如0x60000000~0x6FFFFFFF等,来读写外部设备的数据,注意地址线和数据线之间的对应关系
镁光nandflash MT29F32G08+STM32通用IO口驱动,实现fatfs文件系统
真的挺久没有写文章了,一是太忙了,二是素材也少。
这不最近使用镁光的MT29F32G08型号的nandflash,使用STM32作为控制器,但是我所用的STM32是不带FMC的,我也是想偷懒站在前人的肩膀上,但是网上没有找到STM32通用IO口读写MT29F32G08的,SDN啥的上去看了一下,且不说例程能不能用,都要充值,要办会员,大家都懂的,所以只能自己写了(咱就不明白了,有些人总是拿着一些开源的东西,自己改吧改吧,扔到网站上赚米,真的是良心大大滴坏了)。
驱动用的是网上下载的一个通用驱动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 网络配图
相关问答
nand 和 flash 有什么区别?1.性能比较flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多...●N...
镁光 NANDflash 块锁了怎么解锁不了,锁住了只能读 - 145****2...后来搜索到一个方法,就是进入winxp的命令行模式,用formatx:/fs:FAT命令就能把4G卡格式化为FAT16格式。用FAT32的时候总是进入官方recovery,后来...
NorFlash与 NandFlash 的区别?NorFlash和NandFlash是两种不同的闪存存储器,它们的主要区别在于其存储方式和应用场景。1.存储方式:NorFlash采用的是随机访问存储(RAM)方式,也就是说可以...
固态硬盘的 NAND Flash 分哪几种?有什么特点?it/cell,...MLC=Multi-LevelCell,即2bit/cell,读取时间较长,为50μs,可擦写次数较SLC短,价格一般。(七彩虹SL500Boost采用Intel原厂...
NAND Flash 和Nor Flash 到底有什么区别?NANDFlash和NorFlash是两种不同类型的闪存存储器。区别如下:1.读取速度不同NorFlash在小容量数据存储、读取速度和随机访问方面表现优异,读取速度比NAN...
NandFlash 和NorFlash的区别?1、存储架构不同NORFlash架构提供足够的地址线来映射整个存储器范围。这提供了随机访问和短读取时间的优势,这使其成为代码执行的理想选择。另一个优点是100%...
用51单片机对 nandflash 进行读写以实现大容量存储要注意什么?其实没啥需要特别注意的。要说的话对于初学者需要注意电源别弄错了;如果电源域不同,则需要确认管脚电气参数是否匹配,必要时添加接口转换芯片;剩下的就是按照...
【 nandflash 和norflash的区别正确的是a,nor的读速度比 nand ...[最佳回答]U盘的是NAND.因为nandflash存储比较大,写入速度和清除速度都比nor快,所以经常用在U盘和智能手机中充当硬盘的角色(eMMC),内存就是DRAM了。norf...
NandFlash 烧录时坏块是如何处理的?WinCE或Linux系统通常存储于NandFlash中,而NandFlash频繁擦写易出现坏块,坏块影响系统正常工作,严重时会导致系统无法启动。M3352核心板、M283核心板、M287核...
norflash和 nandflash 的区别?NorFlash和NandFlash是两种不同的闪存存储器技术,其主要区别如下:1.构造:NorFlash和NandFlash的电路结构不同,NorFlash采用并行结构,/擦除操作;而NandF...