Exemple #1
0
static void nand_send_addr(unsigned int addr)
{

	nand_addr(addr & 0xff);         /* a0~a7 */
	nand_addr((addr >> 8) & 0x7);   /* 程序的角度: a8~a10 */

	nand_addr((addr >> 11) & 0xff); /* 程序的角度: a11~a18 */
	nand_addr((addr >> 19) & 0xff); /* 程序的角度: a19~a26 */
	nand_addr((addr >> 27) & 0xff); /* 程序的角度: a27   ~ */

}
Exemple #2
0
void NF_PageRead(unsigned long addr,unsigned char* buff)
{
    int i;
    
    
    /* 选中芯片 */
    select_ship();
    
    /* 清除RnB */
    clean_RnB();
    
    /* 发出命令0x00 */
     nand_cmd(0x00);
        
     /* 发出列地址 */
    nand_addr(0x00);
    nand_addr(0x00);

    /* 发出行地址 */
    nand_addr(addr&0xff);
    nand_addr((addr >>8 ) & (0xff));
    nand_addr((addr >>16 ) & (0xff));
        
    /* 发出命令0x30 */
     nand_cmd(0x30);
        
    /* 等待就绪 */
     wait_RnB();
        
    /* 读数据 */
     for(i = 0; i<1024*2; i++)
    {
    	*buff++ = NFDATA;
    }
        
      
     /* 取消片选 */
     
     delselect_ship();
     
}
Exemple #3
0
int nand_erase_block(unsigned long addr)
{
	int page = addr / 2048;
	
	nand_select();
	nand_cmd(0x60);
	
	nand_addr(page & 0xff);
	nand_addr((page >> 8) & 0xff);
	nand_addr((page >> 16) & 0xff);

	nand_cmd(0xd0);
	wait_ready();

	nand_deselect();
}