STM32/STM8技术william hill官网
直播中

huhu12

5年用户 190经验值
私信 关注
[问答]

为什么往w25q128里面读取数据就写入0xff?

为什么往w25q128里面读取数据就写入0xff?
//读取SPI FLASH  
//在指定地址开始读取指定长度的数据
//pBuffer:数据存储区
//ReadAddr:开始读取的地址(24bit)
//NumByteToRead:要读取的字节数(最大65535)
**_
```

```
void W25QXX_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead)   
{
     u16 i;                                               
    W25QXX_CS=0;                            //使能器件   
    SPI1_ReadWriteByte(W25X_ReadData);         //发送读取命令   
    SPI1_ReadWriteByte((u8)((ReadAddr)>>16));  //发送24bit地址   
    SPI1_ReadWriteByte((u8)((ReadAddr)>>8));   
    SPI1_ReadWriteByte((u8)ReadAddr);   
    for(i=0;i     {
        pBuffer=SPI1_ReadWriteByte(0XFF);   //循环读数  
    }
    W25QXX_CS=1;                                
}  **_

```
1. 1. * * **    SPI1_ReadWriteByte((u8)((ReadAddr)>>16));  //发送24bit地址
    这行代码里面往右移16位不是应该是0吗,为什么就变成了24位**

```
//SPI1 读写一个字节
//TxData:要写入的字节
//返回值:读取到的字节
u8 SPI1_ReadWriteByte(u8 TxData)
{                     

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET){}//等待发送区空  
   
    SPI_I2S_SendData(SPI1, TxData); //通过外设SPIx发送一个byte  数据
        
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET){} //等待接收完一个byte  

    return SPI_I2S_ReceiveData(SPI1); //返回通过SPIx最近接收的数据   
            
}   
```
他为什么一定要写入0XFF,不可以是其他的值吗,还是说写什么其实都无所谓???



更多回帖

发帖
×
20
完善资料,
赚取积分