Nucleo-G474RE couldn't establish qspi connection with external Flash W25Q16JV
From Nucleo-G474RE I am not able to read the Read JEDEC ID of my external flash W25Q16JV ,chipselect not going low on sending command.Verified all connections and quadspi configuration multiple times
/* QUADSPI1 init function */
void MX_QUADSPI1_Init(void)
{
/* USER CODE BEGIN QUADSPI1_Init 0 */
/* USER CODE END QUADSPI1_Init 0 */
/* USER CODE BEGIN QUADSPI1_Init 1 */
/* USER CODE END QUADSPI1_Init 1 */
hqspi1.Instance = QUADSPI;
hqspi1.Init.ClockPrescaler = 1;
hqspi1.Init.FifoThreshold = 4;
hqspi1.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_NONE;
hqspi1.Init.FlashSize = 20;
hqspi1.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_4_CYCLE;
hqspi1.Init.ClockMode = QSPI_CLOCK_MODE_0;
hqspi1.Init.FlashID = QSPI_FLASH_ID_1;
hqspi1.Init.DualFlash = QSPI_DUALFLASH_DISABLE;
if (HAL_QSPI_Init(&hqspi1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN QUADSPI1_Init 2 */
/* USER CODE END QUADSPI1_Init 2 */
}
HAL_StatusTypeDef QSPI_ReadID( )
{
/* ###### READING DEVICE ID ######### */
sCommand.InstructionMode = QSPI_INSTRUCTION_1_LINE;
sCommand.Instruction = 0x9F;
sCommand.AddressMode = QSPI_ADDRESS_NONE;
sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
sCommand.DataMode = QSPI_DATA_1_LINE;
sCommand.DummyCycles = 0;
sCommand.DdrMode = QSPI_DDR_MODE_DISABLE;
sCommand.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
sCommand.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
sCommand.NbData = 3;
if (HAL_QSPI_Command(&hqspi1, &sCommand, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
return HAL_ERROR;
}
if (HAL_QSPI_Receive(&hqspi1, id, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
return HAL_ERROR;
}
return HAL_OK;
}
Would appreciate ,If I could get quadspi stmcube IDE project for Nucleoboard G474RE.Tried adding Dummy cycles also?
