2019-02-06 10:25 PM
i have generated the code from STM32CubeMX for OctoSPI, but not able to establish communication with NOR Flash.
It get stuck at following line "if (HAL_OSPIM_Config(&hospi1, &OSPIM_Cfg_Struct, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)" and goes to hard-fault.
i have configured the OctoSPI in following manner in CubeMX,
OCTOSPI Mode : Quad Mode
Data [3:0] : Port1[3:0]
Control NCS : Port1 NCS
Clock Port : Port 1 CLK
//--------------generated code from CubeMX for STM32L4R5ZI ----------------------//
/* OCTOSPI1 init function */
static void MX_OCTOSPI1_Init(void)
{
OSPIM_CfgTypeDef OSPIM_Cfg_Struct;
OSPI_MemoryMappedTypeDef sMemMappedCfg;
/* OCTOSPI1 parameter configuration*/
hospi1.Instance = OCTOSPI1;
hospi1.Init.FifoThreshold = 1;
hospi1.Init.DualQuad = HAL_OSPI_DUALQUAD_DISABLE;
hospi1.Init.MemoryType = HAL_OSPI_MEMTYPE_MICRON;
hospi1.Init.DeviceSize = 23;
hospi1.Init.ChipSelectHighTime = 3;
hospi1.Init.FreeRunningClock = HAL_OSPI_FREERUNCLK_DISABLE;
hospi1.Init.ClockMode = HAL_OSPI_CLOCK_MODE_0;
hospi1.Init.WrapSize = HAL_OSPI_WRAP_NOT_SUPPORTED;
hospi1.Init.ClockPrescaler = 1;
hospi1.Init.SampleShifting = HAL_OSPI_SAMPLE_SHIFTING_NONE;
hospi1.Init.DelayHoldQuarterCycle = HAL_OSPI_DHQC_DISABLE;
hospi1.Init.ChipSelectBoundary = 0;
if (HAL_OSPI_Init(&hospi1) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
OSPIM_Cfg_Struct.ClkPort = 1;
OSPIM_Cfg_Struct.NCSPort = 1;
OSPIM_Cfg_Struct.IOLowPort = HAL_OSPIM_IOPORT_1_LOW;
if (HAL_OSPIM_Config(&hospi1, &OSPIM_Cfg_Struct, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
sMemMappedCfg.TimeOutActivation = HAL_OSPI_TIMEOUT_COUNTER_DISABLE;
sMemMappedCfg.TimeOutPeriod = 1;
if (HAL_OSPI_MemoryMapped(&hospi1, &sMemMappedCfg) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
}
//--------------generated code from CubeMX for STM32L4R5ZI ----------------------//
Thanks in advance.
2020-12-01 08:18 AM
vshah,
Did you succeed in using a QSPI NOR FLASH in the OCTOSPI interface?