音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

關(guān)于k9f6408的讀寫!!

作者:btiger2000 欄目:ARM技術(shù)
關(guān)于K9F6408的讀寫!!
K9F6408,能讀出id,可以擦出,但是讀寫不對(duì)!

對(duì)第一塊的0頁(yè)寫入全0x55,讀出 0頁(yè)為0x55;但是2,4,6,8,。。14 ,讀出都為亂碼!可是并未對(duì)其他頁(yè)操作!,不知為何?!
還請(qǐng)做過(guò)的大蝦執(zhí)教。

2樓: >>參與討論
zhiwei
擦除是按照Block的,Block所在的Page都會(huì)被擦除。
  

3樓: >>參與討論
BTIGER2000
擦除沒(méi)問(wèn)題
 
4樓: >>參與討論
BTIGER2000
只是我只寫第0頁(yè),但是,2,4,6,等都有變化,而且不對(duì)
 
5樓: >>參與討論
btiger2000
寫奇數(shù)頁(yè),所有奇數(shù)頁(yè),也變化!真是奇怪。
 
6樓: >>參與討論
btiger2000
自己頂一下
 
7樓: >>參與討論
btiger2000
貼上源程序


#include  "\ucos251\include\includes.h"
#include  "\bsp188es\include\bsp.h"
#include  "\proj\include\nand.h"
#include  "\bsp188es\include\pio.h"


#define nand_select() ce(0)
#define nand_deselect() ce(1)

#define CS  INT5
#define CLE CTS0
#define ALE RTS0
#define F_RB TMRIN1
#define WP  TMROUT1

/*
*********************************************************************************************************
*
*********************************************************************************************************
*/
void nand_init(void)
{
    pio_mode(INT5, OUT_DIR);
    pio_mode(CTS0, OUT_DIR);
    pio_mode(RTS0, OUT_DIR);
    pio_mode(TMROUT1, OUT_DIR);
    pio_mode(TMRIN1, IN_W_PULL);
    pio_out(WP,1);
//    flash_reset();
    cle(0);
    ale(0);
    nand_deselect();
}

/*
*********************************************************************************************************
*
*********************************************************************************************************
*/
void ce(INT8U ce)
{
    pio_out(CS, ce);
}

void ale(INT8U h)
{
    pio_out(ALE, h);
}

void cle(INT8U cle)
{
    pio_out(CLE, cle);
}

uchar Flash_RB(void)
{
     return pio_in(F_RB);
}

void flash_reset(void)
{
   uchar d,i;
   nand_select();
    command(0xff);
/*   do{
      command(0x70);
      d = Bsp_Inportb(NAND_ADDR);
      d=d&0x40;
   }while(d!=0x00);       */
   nand_deselect();
   for(i=0;i<255;i++)
       delay();
}
void delay(void)
{
    INT16U i;
   for(i=0;i<25;i++)
         ;
}


/*
*********************************************************************************************************
*
*********************************************************************************************************
*/
/*INT8U nand_get_ready(void)
{
    return  Bsp_Inportw(0xff74) & 0xfff1;
} */

void command(INT8U cmd)
{
    cle(1);
    Bsp_Outportb(NAND_ADDR, cmd);
    cle(0);
}

/*************************************************************************************************/

void address(INT16U row, INT8U column)
{
    ale(1);
    Bsp_Outportb(NAND_ADDR, column);
//    ale(0);
//    delay();
//    ale(1);
    Bsp_Outportb(NAND_ADDR,  row&0xff);
//    ale(0);
//    delay();
//[    ale(1);
    Bsp_Outportb(NAND_ADDR, (row>>8)&0xff);
    ale(0);
}

/***********************************************************************/
INT8U erase_block(INT16U row )
{
    INT8U d;
     nand_select();
    row<<=4;
    command(0x60);
   // address(row,column);
    ale(1);
    Bsp_Outportb(NAND_ADDR,  row&0xff);
    ale(0);
    delay();
    ale(1);
    Bsp_Outportb(NAND_ADDR, (row>>8)&0xff);
    ale(0);
    command(0xd0);
    delay();
    delay();
     command(0x70);
    do{
       d = Bsp_Inportb(NAND_ADDR);
       d=d&0x01;
    }while(d!=0x00);
    nand_deselect();
/*    if(d&0x01)
      return 1;
    else                  */
      return 0;
}

INT8U read_id(void)
{
    INT8U id;

    nand_select();

    command(0x90);
    ale(1);
    Bsp_Outportb(NAND_ADDR, 0x0);
    ale(0);
    id = Bsp_Inportb(NAND_ADDR);
    id = Bsp_Inportb(NAND_ADDR);

    nand_deselect();

    return id;
}

INT8U read_byte(INT16U row, INT8U column)
{
    INT8U d;

    nand_select();

    command(0x50);
    address(row, column);
    OSTimeDly(1);
    d = Bsp_Inportb(NAND_ADDR);

    nand_deselect();

    return d;
}

INT8U write_page(INT16U row,INT8U column,INT8U *addr)
{
    INT16U i;
    INT8U  d;
     nand_select();

//    command(0x00);
    command(0x80);
//    OSTimeDly(1);
    delay();
//    delay();
    address(row,column);
    delay();
//    delay();
    for(i=0;i<480;i++)
    {
       Bsp_Outportb(NAND_ADDR, addr][i]);
     delay();
    }
    delay();
    command(0x10);
//    for(i=0;i<100;i++)
         delay();

    while(!Flash_RB());
     command(0x70);
    do{


       d = Bsp_Inportb(NAND_ADDR);
       d=d&0x01;

    }while(d!=0x00);

    nand_deselect();
/*   if(d&0x01)
      return 1;
    else           */
      return 0;


}



INT8U read_page(INT16U row,INT8U column,INT8U * addr1)
{
    INT16U i;
    INT8U  d;

    nand_select();

    command(0x00);
    address(row,column);
//    OSTimeDly(1);
    delay();
    while(!Flash_RB());

  
8樓: >>參與討論
winsnow
幫你頂一下
我也沒(méi)有找到答案

9樓: >>參與討論
BTIGER2000
沒(méi)人作過(guò)么?
 
10樓: >>參與討論
winsnow
lvzhao正在用K9F1208
 
11樓: >>參與討論
BTIGER2000
他做出來(lái)了么?
 
12樓: >>參與討論
大預(yù)言
老早以前我做過(guò)!
以前我做過(guò),也吃了點(diǎn)虧,后來(lái)整好了。當(dāng)時(shí)好記得是在寫之前必須進(jìn)行擦除操作。才能正確的寫入呢。因?yàn)楫?dāng)時(shí)沒(méi)有注意寫之前必須擦除,也老是寫不對(duì)。
我記得是這樣,但是現(xiàn)在有點(diǎn)模糊了。

13樓: >>參與討論
btiger2000
寫之前,不擦除應(yīng)該是寫不進(jìn)去的!
但是,我在寫第一頁(yè)的時(shí)候,居然能改變第0頁(yè)的內(nèi)容!不明白!還沒(méi)解決問(wèn)題,請(qǐng)做過(guò)的高手指點(diǎn)!

14樓: >>參與討論
btiger2000
沒(méi)有進(jìn)展!
 
15樓: >>參與討論
大預(yù)言
還有,使能信號(hào)線要一直保持為低!
我當(dāng)時(shí)是用的單片機(jī)的P2口的某個(gè)腳做片選,結(jié)果片選只在地址變化期間為低,所以也在此處吃了點(diǎn)虧。建議你也讓片選一直為低試一下。

16樓: >>參與討論
btiger2000
要一直為低么?我只是每次在操作存儲(chǔ)器時(shí),置低,操作完,再置高
 
17樓: >>參與討論
btiger2000
K9F6408 能直接接5v的i/o么?
 
18樓: >>參與討論
孫將軍
nandflash不擦也可以寫進(jìn)去,而且不會(huì)報(bào)錯(cuò)!
nandflash的原理是:在寫的時(shí)候只能把為1的位變成0,而在擦的過(guò)程只能把為0的位變?yōu)?,當(dāng)然不排除壞了的位。如果不擦一直寫,最后的結(jié)果是都為0。

19樓: >>參與討論
btiger2000
問(wèn)題解決!是硬件問(wèn)題!看來(lái)還是不能直接接5v得i/o!!
 
20樓: >>參與討論
btiger2000
又出現(xiàn)新問(wèn)題!
當(dāng)數(shù)據(jù)量較大是,會(huì)出現(xiàn)個(gè)別字節(jié)重復(fù)出現(xiàn)或丟失的現(xiàn)象! 經(jīng)反復(fù)讀驗(yàn)證,讀子程序沒(méi)有問(wèn)題。(yīng)該是寫子程序時(shí)序有問(wèn)題,但不知,是延時(shí)長(zhǎng)了,還是短了?

21樓: >>參與討論
btiger2000
終于解決了!!
它的數(shù)據(jù)手冊(cè)上的讀時(shí)序圖,在命令與地址之間沒(méi)有延時(shí),讀出的總是出錯(cuò)!每次讀的都不一樣! 加上一定的延時(shí),讀出正確!! 寫子程序沒(méi)錯(cuò)!!

22樓: >>參與討論
gaocheng
FLASH是低速器件建議看看時(shí)序圖,一定不能快過(guò)最短時(shí)間!
程序本身應(yīng)該不難得

23樓: >>參與討論
btiger2000
問(wèn)題解決了!
讀時(shí)序的問(wèn)題!寫入沒(méi)問(wèn)題!

在數(shù)據(jù)手冊(cè)上,寫命令與地址之間沒(méi)有延時(shí),加上一個(gè)一定的延時(shí)就ok!!

24樓: >>參與討論
cxc51
我用51操作過(guò)K9F6408存儲(chǔ)器
能正常讀寫擦,用ARM應(yīng)不難吧..........

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
千元仿真器 開(kāi)發(fā)板
求大俠們推薦一款性價(jià)比比較高的ARM9開(kāi)發(fā)板,必須帶100M網(wǎng)卡芯片
新手請(qǐng)教各位 easyarm2104的低級(jí)問(wèn)題
ARM編程:求S3C2410實(shí)驗(yàn)箱的實(shí)驗(yàn)指導(dǎo)書(shū)
pcb
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)