[i=s] ±¾Ìû×îºóÓÉ txgc_wm ÓÚ 2011-3-31 01:39 ±à¼ [/i]
Èç¹ûÓÐÅóÓÑдÈýÐÇNANDFLASH K9F2G08U0BµÄÇý¶¯£¬ÒÔ´ËÌûΪÌÖÂÛ£¬´ó¼Òһͬ·ÖÏíһϡ£
Ŀǰ£¬ÕýÔÚÑо¿Õâ¸ö£¬ºÜ¶àµØ·½µÄÀí½â²»ÕýÈ·£¬´ó¼Òһͬ̽ÌÖ£¬´ðÒÉ£¡
for(i = (start_addr >> 11); size > 0; ) //ÓÒÒÆ11룬»ñÈ¡µ½ÁеØÖ·
{
rLB_ReadPage(i, to);
size -= 2048;
to += 2048;
i ++;
}
void rLB_ReadPage(U32 addr, unsigned char * to) //¸Ã´¦µÄaddr¾ÍÊÇÒÔÉÏÓÒÒÆ11λºóµÄÐеØÖ·ÐÅÏ¢
{
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();
}
ÆäËüµÄÏà¹ØÖ¸ÁÔÚÑо¿ÖУ¬Èç¹ûÓÐÅóÓÑÒѾÓнá¹û£¬ÓÐÐËȤµÄ»°·ÖÏíһϡ£
³ÂÈóÏ¢ ÓÚ 2011-04-21 09:44:02·¢±í:
·¹ý
ËïÏþ ÓÚ 2011-03-31 16:13:28·¢±í:
лл£¬Äã˵ÁËÎÒÏÖÔÚÖªµÀÁË
txgc_wm ÓÚ 2011-03-31 01:40:45·¢±í:
Ö§³ÖÒ»ÏÂ
txgc_wm ÓÚ 2011-03-30 22:58:27·¢±í:
[i=s] ±¾Ìû×îºóÓÉ txgc_wm ÓÚ 2011-3-31 01:40 ±à¼ [/i]
²Á³ýÒÑÑé֤ͨ¹ý£¬µ«²»ÊǺÜÍêÉÆ¡£
int Nandflash_Erase_Block(int addr)
{
//U8 stat;
//char data;
addr &= ~0xfff;
NF_nFCE_L();
NF_CLEAR_RB();
NF_CMD(CMD_ERASE1);
NF_ADDR((addr>>11) & 0xff);
NF_ADDR((addr >> 19) & 0xff);
NF_ADDR((addr >> 27) & 0xff);
NF_CMD(CMD_ERASE2);
//NF_DETECT_RB();
//NF_CMD(CMD_STATUS);
NF_WAITRB();
Uart0_SendString("erase the block success!");
NF_nFCE_H();
return 0;
}
Èç¹û´ó¼ÒÓÐʲôºÃµÄÐÞ¸ÄÒâ¼û£¬Çë°ïæÐ޸ģ¡
Junyi ÓÚ 2011-03-30 08:44:03·¢±í:
һ¥ºÜÇ¿