你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 6651|回复: 3

高手们,帮我看下我这个nandflash驱动程序为什么无法读取到ID

[复制链接]

2

主题

11

回帖

0

蝴蝶豆

初级会员

最后登录
2020-7-10
发表于 2009-5-20 17:15:30 | 显示全部楼层 |阅读模式
GPIO_InitTypeDef  GPIO_InitStructure;
void Flash_Init(void)
{
 
 
  /*ALE PE15   WE  PE14 推免输出*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14|GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
  /*CLE  PB10   CE  PB11*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  /*RE  PD10*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
 
  /*R/B   PD11*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;          
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
 
 
}

void Write_Byte(u8 byte)
{
  /*PD12 -- PD15 IO(L)开漏输出*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;          
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
 
  /*PC6 -- PC9 IO(H)开漏输出*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;          
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  GPIOC->ODR  = GPIOC->ODR&0x0000FC3F|((byte&0xF0)ODR&0x00000FFF|((byte&0x0f)>2)&0xf0)|((GPIOD->IDR>>12)&0x0f));
  return byte;
}
u8  RB_State(void)
{
  while(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_11)  ==  0);
  return 1;
}
        
void Write_CMD(u8 cmd)
{
  CLR_ALE();
  CLR_CE();
  SET_CLE();
  CLR_WE();
  Write_Byte(cmd); 
  SET_WE();
  CLR_CLE();
  SET_ALE();
}
        
void Write_Data(u8 data)
{
  Write_Byte(0xFF);
  SET_WE(); 
  CLR_CLE();
  CLR_CE();
  CLR_ALE();
  CLR_WE();
  while(RB_State()  !=  1);
  Write_Byte(data);
  while(RB_State()  !=  1);
  SET_WE();
}
u8 Read_Data(void)
{
  u8 data;
  Write_Byte(0xFF);
  SET_WE();
  CLR_CLE();
  CLR_ALE();
  CLR_CE();
  CLR_RE();
  while(RB_State()  !=  1);
  data  = Read_Byte();
  while(RB_State()  !=  1);
  CLR_RE();
  return data;
}
void Write_ADDR(u8 addr)
{
  SET_WE();
  CLR_CE();
  CLR_CLE();
  SET_ALE();
  CLR_WE();
  Write_Byte(addr);
  SET_WE();
  while(RB_State()  !=  1);
  CLR_ALE();
}

/********************************************/
u8 Read_ID(void)
{
  Maker_ID  = 0;
  
  Write_CMD(0x90);
  Write_ADDR(0x00);
  Maker_ID  = Read_Data();
  Device_ID = Read_Data();
  Third_ID  = Read_Data();
  Fourth_ID = Read_Data();
  Fifth_ID  = Read_Data();
  return Device_ID;
}
void Flash_Reset(void)
{
  Write_CMD(0XFF);
  while(RB_State()  !=  1);
}
****************************************************************************************************
上面是我的程序,我用的GPIO模拟总线方式连接三星的nandflash,但程序无法读取到ID,读写page也不行,帮我分析下问题出那个地方了啊,谢谢了
另我的数据线和stm32连接没上拉,我直接用上拉输入,不知道问题是不是这里,输出配置的是推免;
另我的板子上没上拉,所以我无法用开漏输出实现普通的IO功能。
附件中的是的程序

FLASH_V4.rar

下载

266 KB, 下载次数: 14, 下载积分: ST金币 -1

回复

使用道具 举报

3

主题

14

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2009-5-20 18:28:13 | 显示全部楼层

回复:高手们,帮我看下我这个nandflash驱动程序为什么无法读取到ID

IO口所模拟的NAND的数据线,在操作时,数据线做输出时应配置为推挽方式输出,而在作为输入时,应配置为开路集电极方式输出,而且外部需要上拉,并先写ODR寄存器为0xFF再读取数据线数据。
回复 支持 反对

使用道具 举报

2

主题

11

回帖

0

蝴蝶豆

初级会员

最后登录
2020-7-10
 楼主| 发表于 2009-5-21 10:18:34 | 显示全部楼层

RE:高手们,帮我看下我这个nandflash驱动程序为什么无法读取到ID

数据线做输出我配置为推免方式输出,在输入时候,用他内部的上拉不行吗 ??先写ODR为0xff是在配置CR为输出上拉前还是输出上啦后呢 ?是配置完输出上拉后吧 ??写完0XFF是不是还需要加一个延时什么的在读数据线 上数据??
回复 支持 反对

使用道具 举报

3

主题

14

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2009-5-21 17:59:43 | 显示全部楼层

RE:高手们,帮我看下我这个nandflash驱动程序为什么无法读取到ID

PD12~PD15,PC6~PC9,在作输出时,在没有外部上拉时我想应该配置为推挽输出,输入时再配置为上拉。而且每次把口线配置输入在读取数据之前,最好写一次ODR为0xFF,保证输出寄存器不影响输入。
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版