|  
 
 
今日调试驱动,发现以下问题,一直找不到原因。 读ID正常; 复位不正常,一直检测不到RB拉低; block擦除不了,检测到I/O0为高; 写不了,检测到I/O0为高; 读出来全是FF; 
  bool_t hw_k9k8g08u0a_init(void) {   t_sysgpio_setDirection(NF_CLE_PORT, NF_CLE_PIN, DIR_OUTPUT);   t_sysgpio_setDirection(NF_CE_PORT, NF_CE_PIN, DIR_OUTPUT);   t_sysgpio_setDirection(NF_WE_PORT, NF_WE_PIN, DIR_OUTPUT);   t_sysgpio_setDirection(NF_ALE_PORT, NF_ALE_PIN, DIR_OUTPUT);   t_sysgpio_setDirection(NF_RE_PORT, NF_RE_PIN, DIR_OUTPUT);   t_sysgpio_setDirection(NF_RB_PORT, NF_RB_PIN, DIR_INPUT);   SET_NF_CLE(0);   SET_NF_CE(1);   SET_NF_WE(1);   SET_NF_ALE(0);   SET_NF_RE(1);   hw_k9k8g08u0a_reset();   if(hw_k9k8g08u0a_readID() == 0xd3519558) return 1;   else return 0; }   static void hw_k9k8g08u0a_reset(void) {   u2_t i=0;      SET_NF_DATA_DIR(DIR_OUTPUT);   SET_NF_CE(0);      SET_NF_CLE(1);           //write command   SET_NF_WE(0);   SEND_NF_DATA(0xff);   SET_NF_WE(1);   SET_NF_CLE(0);     while(READ_NF_RB)   {     i++;     if(i == 0xffff) return;   }     SET_NF_CE(1); }   bool_t hw_k9k8g08u0a_blockerase(u4_t block_num) {   u2_t i=0;   u4_t row_addr = block_num*((NF_PAGESIZE+NF_PAGESPARE_SIZE)*NF_PAGE_PER_BLOCK);      SET_NF_CE(0);     SET_NF_CLE(1);   SET_NF_WE(0);          //write 0x60   SEND_NF_DATA(0x60);   SET_NF_WE(1);   SET_NF_CLE(0);     SET_NF_ALE(1);                         SET_NF_WE(0);           //write row.addr1   SEND_NF_DATA(row_addr&0x000000ff);   SET_NF_WE(1);              SET_NF_WE(0);           //write row.addr2   SEND_NF_DATA((row_addr>>8)&0x000000ff);   SET_NF_WE(1);              SET_NF_WE(0);           //write row.addr3   SEND_NF_DATA((row_addr>>16)&0x000000ff);   SET_NF_WE(1);   SET_NF_ALE(0);     SET_NF_CLE(1);   SET_NF_WE(0);          //write 0xd0   SEND_NF_DATA(0xd0);   SET_NF_WE(1);   SET_NF_CLE(0);     while(READ_NF_RB)   {     i++;     if(i == 0xffff) return 1;   }     SET_NF_CLE(1);   SET_NF_WE(0);           //write 0x70   SEND_NF_DATA(0x70);   SET_NF_WE(1);   SET_NF_CLE(0);     SET_NF_DATA_DIR(DIR_INPUT);   SET_NF_RE(0);   SET_NF_RE(1);   RB_val = READ_NF_IO0;     SET_NF_CE(1);     return RB_val; } 
  
[1] [2] [3] [4] 下一页  
 |