如何计算Nand Flash要传入的行地址和列地址

在介绍具体读取数据的详细流程之前,还要做一件事,那就是,先要搞懂我们要访问的地址,以及这些地址,如何分解后,一点点传入进去,使得硬件能识别才行。

    此处还是以 K9F8G08U0A 为例,此 Nand Flash,一共有 8192 个块,每个块内有 64 页,每个页是 2K+64 Bytes,假设,我们要访问其中的第 7000个块中的第 64 页中的 1208 字节处的地址,此时,我们就要先把具体的地址算出来: 
   
    物理地址 = 块大小×块号+页大小×页号+页内地址
            =7000×128K+64×2K+1208
            =0x36B204B8

    接下来,我们就看看,怎么才能把这个实际的物理地址,转化为 Nand Flash 所要求的格式。在解释地址组成之前,先要来看看其datasheet 中关于地址周期的介绍:
 
    结合图,我们可以看出,此 Nand Flash 地址周期共有 5 个,2 个列(Column),3个行(Row)周期,而对于对应地,我们可以看出,实际上,列地址 A0~A10,就是页内地址,地址范围是从0 到2047,而对出的 A11,理论上可以表示 2048~4095,但是实际上,我们最多也只用到了2048~2011, 用于表示页内的oob区域,其大小是 64 字节。对应地,A12~A30,称作页号,页的号码,可以定位到具体是哪一个页。而其中,A18~A30,表示对应的块号,即属于哪个块。

    简单解释完了地址组成,那么就很容易分析上面例子中的地址了:

   0x36B204B8 = 0011 0110 1011 0010 0000 0100 1011 1000,分别分配到5个地址周期就是:
   1st周期,A7~A0:     1011 1000 = 0xB8
   2nd周期,A11~A8:    0000 0100 = 0x04
   3rd周期,A19~A12:    0010 0000 = 0x20
   4th 周期,A27~A20:    0110 1011 = 0x6B
   5th 周期,A30~A28:     0000 0011 = 0x03

    注意,与图中对应的*L,意思是地电平,由于未用到那些位,datasheet中强制要求设为0,所以,才有上面的2nd周期中的高4位是0000.其他的A30之后的位也是类似原理,都是 0。

    因此,接下来要介绍的,我们要访问第 7000 个块中的第 64 页中的 1208 字节处的话,所要传入的地址就是分 5 个周期,分别传入两个列地址:0xB8,0x04,然后再传3个行地址:0x20,0x6B,0x03,这样硬件才能识别。
### 回答1: 是指在 FAT 文件系统中使用 Flash 存储设备吗? 如果是的话,是的,FatFs 可以在 Flash 存储设备上使用。实际上,Flash 存储设备已经成为许多嵌入式系统中常用的存储介质之一。在使用 Flash 存储设备时,需要考虑 Flash 的读写特性,如擦除和写入次数的限制等,以确保数据的可靠性和持久性。在使用 FatFs 时,需要根据具体的 Flash 存储设备类型和特性进相应的配置和优化。 ### 回答2: FatFs是一个开源的嵌入式文件系统,用于嵌入式系统中的存储设备管理,可以支持各种存储介质,包括硬盘、SD卡、USB存储设备等。而在嵌入式系统中,常常会使用闪存作为主要的存储介质。 难道flash是在表达一种疑问的语气,这里应该是在问是否在FatFs中支持flash作为存储介质。实际上,FatFs是支持flash作为存储介质的。在FatFs的官方文档中,可以找到关于flash存储介质的相关介绍和使用方法。 使用flash作为存储介质时,需要在FatFs的配置文件中进相应的设置,包括选择对应的驱动、设置块大小、扇区大小等参数。然后在初始化文件系统时,将flash的相关信息传入,就可以在程序中对flash读写操作了。 FatFs提供了一套简单易用的文件系统API,可以方便地进文件的创建、打开、读取、写入、关闭等操作,与文件操作相关的函数有f_open、f_read、f_write、f_close等。使用这些函数,可以在flash上创建文件、读取数据、写入数据等。 总之,FatFs是支持flash作为存储介质的,可以通过相关设置和API来使用flash。不管是在嵌入式系统中还是其他领域,FatFs都是一个非常实用的文件系统,提供了方便的文件管理功能,可以简化开发流程并提高效率。 ### 回答3: 是的,FatFs中的“flash”指的是将文件系统部署在闪存设备上。FatFs是一个通用的文件系统模块,专门用于嵌入式系统中的储存介质,如SD卡、NAND闪存和Nor闪存等。闪存是一种非易失性储存介质,具有高速读写、低能耗和耐用性等特点,因此被广泛应用于嵌入式系统中。 FatFs通过完成底层的闪存设备抽象和管理,实现了文件系统的基本功能,包括文件和目录的创建、打开、读取和写入等。FatFs支持不同的文件系统格式,包括FAT12、FAT16和FAT32等,并提供了适应不同闪存特性的参数设置和优化选项。 在使用FatFs中的“flash”时,需要根据具体的嵌入式系统和闪存设备类型进配置和初始化。通过文件系统接口,可以方便地对闪存设备进文件操作,如存储和读取数据等。同时,FatFs还提供了错误处理和容错机制,保证了文件系统的可靠性和稳定性。 总之,FatFs中的“flash”是一种常用的嵌入式文件系统实现方式,通过将文件系统部署在闪存设备上,实现了数据的可靠储存和高效访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值