|
如果有朋友写三星NANDFLASH K9F2G08U0B的驱动,以此帖为讨论,大家一同分享一下。
目前,正在研究这个,很多地方的理解不正确,大家一同探讨,答疑!
for(i = (start_addr >> 12); size > 0; ) //右移12位,获取到列地址
{
rLB_ReadPage(i, to);
size -= 2048;
to += 2048;
i ++;
}
void rLB_ReadPage(U32 addr, unsigned char * to) //该处的addr就是以上右移12位后的行地址信息
{
U32 i;
rNF_Reset();
// Enable the chip
NF_nFCE_L();
NF_CLEAR_RB();
// Issue Read command
NF_CMD(CMD_READ);
// Set up address 设置读取的地址
NF_ADDR(0x00);
NF_ADDR(0x00);
NF_ADDR((addr) & 0xff); //以下三个地址是行地址
NF_ADDR((addr >> 8) & 0xff);
NF_ADDR((addr >> 16) & 0xff);
NF_CMD(CMD_READ3);
NF_DETECT_RB(); // wait tR(max 12us)
for (i = 0; i < 2048; i++) //该指令执行以后,实际可获取的是2112 bytes,但2048 bytes 以后的数据是属于附加的一些信息,所以这里没有获取
{
to[i] = NF_RDDATA8();
}
NF_nFCE_H();
} |
|