打印
[STM32F1]

串口flash M25P128的问题

[复制链接]
2012|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
poo12o|  楼主 | 2017-5-9 08:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用SPI操作FLASH,读的时候正常,写和擦除之前发送写使能指令(WREN)然后检测状态寄存器(RDSR)就会检测到一直处于Write In Progress(WIP)标识 而且无法置位Write Enable Latch(WEL)
又出现类似问题的么或者这是什么原因造成的......会不会是芯片坏掉了
沙发
feelhyq| | 2017-5-9 08:57 | 只看该作者
通常 WP管脚和HLOD管脚拉高,读取状态寄存器的时候 最主要是去判断BUSY位,来获取Flash的状态

使用特权

评论回复
板凳
poo12o|  楼主 | 2017-5-9 09:16 | 只看该作者
feelhyq 发表于 2017-5-9 08:57
通常 WP管脚和HLOD管脚拉高,读取状态寄存器的时候 最主要是去判断BUSY位,来获取Flash的状态 ...

嗯 WP和HOLD一直是拉高的 然后发送写指令之前没有BUSY 一发送写使能指令就一直读到BUSY........

使用特权

评论回复
地板
feelhyq| | 2017-5-9 10:03 | 只看该作者
发送 写使能指令之前 拉低片选, 发送写使能之后再拉高片选。  再拉低片选 发从CMD + 24bit Address + data

使用特权

评论回复
5
poo12o|  楼主 | 2017-5-9 11:36 | 只看该作者
feelhyq 发表于 2017-5-9 10:03
发送 写使能指令之前 拉低片选, 发送写使能之后再拉高片选。  再拉低片选 发从CMD + 24bit Address + data ...

对啊 是这样操作的啊
static void LOCAL_issueWRENCommand(SPI_MEM_InfoHandle hSPIMemInfo)
{
  Uint8 statusReg;
  
  SPI_enableCS(hSPIMemInfo->hSPIInfo);
  SPI_xferOneChar(hSPIMemInfo->hSPIInfo,SPI_MEM_CMD_RDSR);
  statusReg = SPI_xferOneChar(hSPIMemInfo->hSPIInfo,0x00);
  SPI_disableCS(hSPIMemInfo->hSPIInfo);

  // Issue write enable command
  SPI_enableCS(hSPIMemInfo->hSPIInfo);
  SPI_xferOneChar(hSPIMemInfo->hSPIInfo,SPI_MEM_CMD_WREN);
  SPI_disableCS(hSPIMemInfo->hSPIInfo);
  
  // Poll EEPROM Status to make sure Write Enable Latch has been set
  do
  {
    // Send Read Status Register Commeand  
    SPI_enableCS(hSPIMemInfo->hSPIInfo);
    SPI_xferOneChar(hSPIMemInfo->hSPIInfo,SPI_MEM_CMD_RDSR);
    statusReg = SPI_xferOneChar(hSPIMemInfo->hSPIInfo,0x00);
    SPI_disableCS(hSPIMemInfo->hSPIInfo);
  }
  while((statusReg & 0x3u) != 0x2);
}

使用特权

评论回复
6
candysnape| | 2017-5-9 14:06 | 只看该作者
写完之后关片选再打开

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

1

粉丝