当前位置:   article > 正文

关于Nand Flash行地址和列地址的计算_0xffffff在nand寄存器如何排布row和column

0xffffff在nand寄存器如何排布row和column

Nand Flash行地址和列地址的计算

不说废话,直接上图。
这里写图片描述
从图中可以看出Nand Flash有2048Blocks,每个Block有64页,每一页含有2K的用户可以使用的数据和64B的OOB。对于用户来说这64B的数据时不用操作的,读写的时候也会忽略这部分。也就是说用户在读这一页数据的时候只会发出11位地址,不会发出12位地址(12位地址包含了读写OOB)。
举一个例子:
加入user想读0x60000地址处的数据,那么:

column_address = 0x60000 % 2048
row_address = 0x60000 / 2048;
  • 1
  • 2

由于地址和数据都是通过8位引脚发送的,所以:
第一个周期发送的地址是: 0x60000 & 0xff 或column_address & 0xff;
第二个周期发送的地址为:(0x60000 >> 8) & 0x07或(column_address >> 8) & 0x07;
第三个周期发送的地址为:(0x60000 >> 11) & 0xff,这里是右移11位,不是12位,或row_address & 0xff;
第四个周期发送的地址为:(0x60000 >> 19) & 0xff,或(row_address >> 8) & 0xff;
最后一个周期发送的地址为:(0x60000 >> 27) & 0x01,或(row_address >> 16) & 0x01。

注意:个人觉得关于地址的计算,应该用户要读取数据地址的从出发点考虑,用户读数据时是不关心OOB的,只关心正常读取的数据。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/269570
推荐阅读
相关标签
  

闽ICP备14008679号