您现在的位置: 爱51代码网 >> 范文 >> 文章正文
K9k8G08U0A 裸机驱动复位不正常,一直检测不到RB拉低

今日调试驱动,发现以下问题,一直找不到原因。
读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] 下一页

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    Hadoop2.2.0在eclipse控制台没有
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    Hadoop2.2.0在eclipse控制台没有
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    VS2013+WDK8.1如何配置
    W5300 UDP 接收不到数据
    找不到mach/gpio.h
    STC12C5A60S2可以设计4路pwm
    write_data_ds1302’missing
    USB HID 读写STM32数据失败
    don't know how to make
    clean sysgen时出现的error 
    430单片机和GSM模块相连接时
    wince下如何使用webclient类
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |