ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Ôõô¿´Ê±Ðòͼ--nand flashµÄ¶Á²Ù×÷Ïê½â(ËÄ)
2017-10-11 16:46:12 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:5038´Î
Tags£ºÔõô ʱÐò --nand flash ²Ù×÷ Ïê½â
p;       NFCONT  &= (~(1<<1)) ;   

        int i;

        for(i=10;i>0;i--);

}

void deselect_chip(void){

        NFCONT |= (1<<1);

        int i;

        for(i=10;i>0;i--);

}

 

void write_command(unsigned char command){

        NFCMMD = command;

        int i;

        for(i=10;i>0;i--);

}

 

/*

       Õâ¿înand flash µÄÒ³´óСÊÇ 2K

       Îå¸öµØÖ·ÖÜÆÚ  (2¸öÁеØÖ· ºÍ3ºÍÐеØÖ·£¨Ò³µØÖ·£©)

*/

void write_address(unsigned int address){

        unsigned int page = address/2048;

        unsigned int col  = address&2048;

 

        int i;

        NFADDR = col & 0xff;

        for(i=5;i>0;i--);

        NFADDR = (col >>8) & 0x0f;

        for(i=5;i>0;i--);

        NFADDR = page & 0xff;

        for(i=5;i>0;i--);

        NFADDR = (page >>8)& 0xff;

        for(i=5;i>0;i--);

        NFADDR = (page >>16)&0x01;

        for(i=5;i>0;i--);

}

 

unsigned char read_one_data(void){

        return NFDATA;

        int i;

        for(i=10;i>0;i--);

}

 

void wait_ready(void){

        while(!(NFSTAT & 1));

        int i;

        for(i=10;i>0;i--);

}

 

 

static void nand_reset(void){

        select_chip();

        write_command(0xff);

        wait_ready();

        deselect_chip();

}

void nand_init(void){

        NFCONF =0;

        NFCONT = (1<<4) | (1<<1) | (1<<0);

 

        nand_reset();

}

 

/*

nand flash µÄ¶Á²Ù×÷ÊÇÒÔҳΪµ¥Î»µÄ¡£

 des: nand flashÖжÁ³öµÄÊý¾Ý·Åµ½ÄÄ

 start_addr£º ´ÓÄÄÀ↑ʼ¶Á

 size: ¶Á¶à´ó

*/

void nand_read(unsigned char *des,unsigned int start_addr,unsigned int size){

        unsigned int col  = start_addr & 2048;

 

        select_chip();

    &nb

Ê×Ò³ ÉÏÒ»Ò³ 1 2 3 4 5 ÏÂÒ»Ò³ βҳ 4/5/5
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºESP8266»ù´¡Æª ÏÂһƪ£ºBeaglebone Black¨CÖÇÄܼҾӿØÖÆÏ..

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿