51单片机读取不到Nand Flash ID

派大星 ヾ 派大星 ヾ 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有没有大神指教一下关于51单片机读取Nand Flash ID,我下面的代码怎么都读取到ID,晶振12M,麻烦指正一下:

// 发送命令如下:
void NF_Command(unsigned char command)
{
NF_CE = 0;
NF_ALE = 0;
NF_CLE = 1;
// SIGNAL_SETUP(10);
NF_WE = 0;
NF_DATA = command;
// SIGNAL_SETUP(130);
NF_WE = 1;
while(!NF_R_B);
// SIGNAL_HOLD(65);

NF_CLE = 0;
NF_ALE = 1;
NF_CE = 1;
NF_WE = 1;
}

// 发送地址如下
void NF_AddrSet(uint addr)
{
NF_CLE = 1;
NF_CE = 1;
NF_WE = 1;
NF_ALE = 0;
NF_DATA = 0xFF;
SIGNAL_SETUP(130);

NF_CE = 0;
NF_CLE = 0;
NF_ALE = 1;
SIGNAL_SETUP(10);
NF_WE = 0;
NF_DATA = (uchar)(addr&0xff); // 输出列地址1
SIGNAL_SETUP(130);
NF_WE = 1;
SIGNAL_SETUP(65);
NF_ALE = 0;
SIGNAL_SETUP(5);
NF_ALE = 1;
SIGNAL_SETUP(65);
NF_WE = 0;
NF_DATA = (uchar)((addr&0xff00)>>8); // 输出行地址1
SIGNAL_SETUP(130);
NF_WE = 1;
SIGNAL_SETUP(65);
NF_ALE = 0;
SIGNAL_SETUP(5);
NF_ALE = 1;
SIGNAL_SETUP(65);
NF_WE = 0;
NF_DATA = (uchar)((addr&0xff0000)>>16); // 行地址2
SIGNAL_SETUP(130);
NF_WE = 1;
SIGNAL_SETUP(65);
NF_ALE = 0;
SIGNAL_SETUP(5);
NF_ALE = 1;
SIGNAL_SETUP(65);

NF_WE = 0;
NF_DATA = (uchar)((addr&0xff000000)>>24);// 列地址2
SIGNAL_SETUP(130);
NF_WE = 1;
SIGNAL_SETUP(65);

NF_ALE = 0;
SIGNAL_SETUP(65);
}

unsigned char NF_ReadID()
{
unsigned char makerCode=0x00,deviceCode=0x00;

NF_CE = 1;
NF_CLE = 0;
NF_WE = 1;
NF_ALE = 0;
NF_RE = 1;

NF_CE = 0;
NF_CLE = 1;
NF_WE = 0;
NF_DATA = 0x90;
NF_WE = 1;
NF_CLE = 0;

NF_ALE = 1;
NF_WE = 0;
NF_DATA = 0x00;
// SIGNAL_SETUP(5);
NF_WE = 1;
// SIGNAL_SETUP(5);
NF_ALE = 0;
// SIGNAL_SETUP(5);
NF_RE = 0;
makerCode = 0xff&NF_DATA; // ADH
// SIGNAL_SETUP(5);
NF_RE = 1;

// SIGNAL_SETUP(5);
NF_RE = 0;
NF_DATA = 0xff;
deviceCode = 0xff&NF_DATA; // 76H
// SIGNAL_SETUP(5);
NF_RE = 1;
// SIGNAL_SETUP(5);

return makerCode;
}

命令时序:


地址时序:


读取ID时序:








...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
派大星 ヾ
单片机/工控 27,522 成员 28,796 内容