请教w25q64fv spi flash 驱动代码问题

2019-08-08 12:12发布

本帖最后由 某某网友 于 2017-10-31 12:34 编辑

使用stm32f103驱动w25q64fv(不是bv),在等待芯片写入完毕的代码段出现死循环,请问是什么问题?源码如下

#define WIP_FlagMask                    0x01  /* Write In Progress (WIP) flag */
#define Dummy_Byte                      0xFF
……
void SPI_FLASH_WaitForWriteEnd(void)
{
  u8 FLASH_Status = 0;

  /* Select the FLASH: Chip Select low */
  SPI_FLASH_CS_LOW();

  /* Send "Read Status Register" instruction */
  SPI_FLASH_SendByte(W25X_ReadStatusReg);
  /* Loop as long as the memory is busy with a write cycle */
  do
  {
    /* Send a dummy byte to generate the clock needed by the FLASH
    and put the value of the status register in FLASH_Status variable */
    FLASH_Status = SPI_FLASH_SendByte(Dummy_Byte);
        printf("%c",FLASH_Status);
  }
  while ((FLASH_Status&WIP_FlagMask) == SET); /* Write in progress */
//do while进入死循环,串口打印输出FLASH_Status的HEX值为FF
  /* Deselect the FLASH: Chip Select high */
        printf("write end! ");
  SPI_FLASH_CS_HIGH();
}




是代码的问题还是芯片问题???

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
某某网友
1楼-- · 2019-08-08 16:49
正点原子 发表于 2017-11-6 01:11
我们mini板的25q64驱动完好啊
你这直接焊接到mini板上面试试。

感谢站长,已解决,初始化时需要将PB13,14,15上拉,并发送唤醒指令
某某网友
2楼-- · 2019-08-08 20:17
自己顶一下,那有没有兄弟可以试一下看看W25Q64BV的这一段代码串口打印数据
正点原子
3楼-- · 2019-08-09 01:01
参考我们例程改吧
某某网友
4楼-- · 2019-08-09 04:54
本帖最后由 某某网友 于 2017-11-4 15:24 编辑
正点原子 发表于 2017-10-31 21:11
参考我们例程改吧

用例程的驱动源码问题也是如此:

void W25QXX_Wait_Busy(void)   
{
        printf("%c",W25QXX_ReadSR()&0x01);        //接收hex值为01
        while((W25QXX_ReadSR()&0x01)==0x01);                  // 等待BUSY位清空
}  

还是卡到这一步,串口打印信息的HEX值是01,但while没有执行
正点原子
5楼-- · 2019-08-09 08:06
 精彩回答 2  元偷偷看……

一周热门 更多>