|
|
wp引脚给了高电平,qspi单线,目前想让状态寄存器2的qe位置1,但是写寄存器无法修改,只可以修改SR1的数据
int8_t W25Qxx_WriteStatusRegister(uint8_t pStatus)
{
QSPI_CommandTypeDef s_command = {0}; // ← 清零结构体
// === Step 1: Write Enable (0x06) ===
if (QSPI_W25Qxx_WriteDisenable() != QSPI_W25Qxx_OK)
{
return W25Qxx_ERROR_WriteEnable;
}
// === Step 2: Volatile SR Write Enable (0x50) ===
s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
s_command.Instruction = 0x50;
s_command.AddressMode = QSPI_ADDRESS_NONE;
s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
s_command.DataMode = QSPI_DATA_NONE; // ← 必须为 NONE
s_command.DummyCycles = 0;
s_command.NbData = 0; // ← 必须为 0
s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
if (HAL_QSPI_Command(&hqspi, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
return W25Qxx_ERROR_TRANSMIT;
}
if (QSPI_W25Qxx_WriteEnable() != QSPI_W25Qxx_OK)
{
return W25Qxx_ERROR_WriteEnable;
}
// === Step 3: Write Status Register 2 (0x31) ===
s_command.Instruction = 0x31;
s_command.DataMode = QSPI_DATA_1_LINE; // ← 切换为 DATA 模式
s_command.NbData = 1; // ← 1 字节数据
if (HAL_QSPI_Command(&hqspi, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
return W25Qxx_ERROR_TRANSMIT;
}
if (HAL_QSPI_Transmit(&hqspi, &pStatus, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
return W25Qxx_ERROR_TRANSMIT;
}
// === Step 4: 等待就绪 ===
if (QSPI_W25Qxx_AutoPollingMemReady() != QSPI_W25Qxx_OK)
{
return W25Qxx_ERROR_AUTOPOLLING;
}
return QSPI_W25Qxx_OK;
} |
-
-
|