w25q128读取设备ID时一直出现0xFFFFFF?
问:w25q128读取设备ID时一直出现0xFFFFFF?
uint32_t SPI_FLASH_ReadID(void)
{
uint32_t Temp = 0, Temp0 = 0, Temp1 = 0, Temp2 = 0;
/* 开始通讯:CS低电平 */
FLASH_SPI_CS_LOW();
/* 发送JEDEC指令,读取ID */
SPI_FLASH_SendByte(W25X_JedecDeviceID);
/* 读取一个字节数据 */
Temp0 = SPI_FLASH_SendByte(0xFF);
/* 读取一个字节数据 */
Temp1 = SPI_FLASH_SendByte(0xFF);
/* 读取一个字节数据 */
Temp2 = SPI_FLASH_SendByte(0xFF);
/* 停止通讯:CS高电平 */
FLASH_SPI_CS_HIGH();
/*把数据组合起来,作为函数的返回值*/
Temp = (Temp0 << 16) | (Temp1 << 8) |Temp2;
return Temp;
}
spi初始化函数波特率预分频值配置为低 是不是芯片处于正常工作状态 查看时序是否正确? 如果是时序问题的话,读取不同的寄存器时不太可能返回同一个值 查手册分析一下吧。 最好仔细检查一下最基本的SPI的配置是否正确。 检查下时序是否正确 是单片机有什么问题 这个只有id是不对的吗? FF这种情况应该是没有读到数据。 要么地址,要么时序,肯定是有一个地方出问题了。 那逻辑分析仪抓一下波形吧。 如果是时序问题的话,读取不同的寄存器时不太可能返回同一个值 查手册分析一下吧。 hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;的原因,改成HIGH后就正常了。 查看时序是否正确? 说明引脚没有被拉低吧 最好仔细检查一下最基本的SPI的配置是否正确。 https://blog.csdn.net/weixin_56657463/article/details/124618463