使用STM32F427的SPI4来控制W25Q64,读出的ID是0xffff

2019-08-17 01:26发布

主函数
int main(void)
{
u8 datatemp[SIZE];
u32 FLASH_SIZE;
W25QXX_Init();       //W25QXX初始化

      while(W25QXX_ReadID()==W25Q64) //0XEF16,表示芯片型号为W25Q64 
    {
        W25QXX_Write((u8*)TEXT_Buffer,FLASH_SIZE-100,SIZE); //从倒数第100个地址处开始,写入SIZE长度的数据
        delay_ms(10);
        W25QXX_Read(datatemp,FLASH_SIZE-100,SIZE); //从倒数第100个地址处开始,读出SIZE个字节

    }
}


void W25QXX_Init(void)

  GPIO_InitTypeDef  GPIO_InitStructure;
 
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);   //使能GPIOE时钟
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);    //使能GPIOC时钟

 //GPIOE 3  这是W25Q64片选信号 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PE3
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  
  GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//PC0 这是另一个复用的片选信号
    GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化
 
GPIO_SetBits(GPIOC,GPIO_Pin_0);      //PC0输出1,防止干扰
W25QXX_CS=1; //SPI FLASH不选中
SPI4_Init();   //初始化SPI
SPI4_SetSpeed(SPI_BaudRatePrescaler_2); //设置为42M时钟,高速模式 
W25QXX_TYPE=W25QXX_ReadID(); //读取FLASH ID.
}  


u16 W25QXX_ReadID(void)
{
u16 Temp = 0;  
W25QXX_CS=0;    
SPI4_ReadWriteByte(0x90);//发送读取ID命令    
SPI4_ReadWriteByte(0x00);    
SPI4_ReadWriteByte(0x00);    
SPI4_ReadWriteByte(0x00);   
Temp|=SPI4_ReadWriteByte(0xFF)<<8;  
Temp|=SPI4_ReadWriteByte(0xFF);  
W25QXX_CS=1;    
return Temp;
}  

在头函数中,已经定义
#define W25QXX_CS PEout(3)   //W25QXX的片选信号,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
正点原子
1楼-- · 2019-08-17 23:09
回复【6楼】cunzhang521:
---------------------------------
没问题
cunzhang521
2楼-- · 2019-08-18 01:16
回复【7楼】正点原子:
---------------------------------
好的,谢谢原子哥。我这就去测测波形
cunzhang521
3楼-- · 2019-08-18 03:35
 精彩回答 2  元偷偷看……
cunzhang521
4楼-- · 2019-08-18 04:59
回复【7楼】正点原子:
---------------------------------
倒也不是一直是高电平,在单步执行时有时会变成低电平,但是使能后不会出现方波
cunzhang521
5楼-- · 2019-08-18 05:39
回复【7楼】正点原子:
---------------------------------
CLK引脚是焊接的问题,现在已经有方波了,看来SPI的使能没问题。MOSI也没问题。可读出的ID依旧是FFFF
cunzhang521
6楼-- · 2019-08-18 11:12
回复【11楼】cunzhang521:
---------------------------------
回复【7楼】正点原子:
---------------------------------
换了个芯片。读出的依旧是FFFF

一周热门 更多>