Skip to main content
MLuis.1
Associate III
May 3, 2023
Solved

Implementing APS12808L-3OBM HyperRam in Memory Mapped Mode on STM32H725. Does anyone have a working configuration?

I'm implementing a custom board with an APS12808L-3OBM HyperRam in Memory Mapped Mode on STM32H725, as recommended by ST to replace the S70KL1281 memory.

I'm having some problems getting the ram to respond. This is my current configuration:

static void MX_OCTOSPI2_Init(void)

{

 /* USER CODE BEGIN OCTOSPI2_Init 0 */

  BSP_OSPI_RAM_Init_t ospi_ram_init;

 /* USER CODE END OCTOSPI2_Init 0 */

 OSPIM_CfgTypeDef sOspiManagerCfg = {0};

 OSPI_HyperbusCfgTypeDef sHyperBusCfg = {0};

 /* USER CODE BEGIN OCTOSPI2_Init 1 */

  OSPI_HyperbusCmdTypeDef sCommand = { 0 };

  OSPI_MemoryMappedTypeDef sMemMappedCfg = { 0 };

 /* USER CODE END OCTOSPI2_Init 1 */

 /* OCTOSPI2 parameter configuration*/

 hospi2.Instance = OCTOSPI2;

 hospi2.Init.FifoThreshold = 4;

 hospi2.Init.DualQuad = HAL_OSPI_DUALQUAD_DISABLE;

 hospi2.Init.MemoryType = HAL_OSPI_MEMTYPE_HYPERBUS;

 hospi2.Init.DeviceSize = 24;

 hospi2.Init.ChipSelectHighTime = 4;

 hospi2.Init.FreeRunningClock = HAL_OSPI_FREERUNCLK_DISABLE;

 hospi2.Init.ClockMode = HAL_OSPI_CLOCK_MODE_0;

 hospi2.Init.WrapSize = HAL_OSPI_WRAP_NOT_SUPPORTED;

 hospi2.Init.ClockPrescaler = 2;

 hospi2.Init.SampleShifting = HAL_OSPI_SAMPLE_SHIFTING_NONE;

 hospi2.Init.DelayHoldQuarterCycle = HAL_OSPI_DHQC_ENABLE;

 hospi2.Init.ChipSelectBoundary = 23;

 hospi2.Init.DelayBlockBypass = HAL_OSPI_DELAY_BLOCK_USED;

 hospi2.Init.MaxTran = 0;

 hospi2.Init.Refresh = 400;

 if (HAL_OSPI_Init(&hospi2) != HAL_OK)

 {

  Error_Handler();

 }

 sOspiManagerCfg.ClkPort = 2;

 sOspiManagerCfg.DQSPort = 2;

 sOspiManagerCfg.NCSPort = 2;

 sOspiManagerCfg.IOLowPort = HAL_OSPIM_IOPORT_2_LOW;

 sOspiManagerCfg.IOHighPort = HAL_OSPIM_IOPORT_2_HIGH;

 if (HAL_OSPIM_Config(&hospi2, &sOspiManagerCfg, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)

 {

  Error_Handler();

 }

 sHyperBusCfg.RWRecoveryTime = 4;

 sHyperBusCfg.AccessTime = 6;

 sHyperBusCfg.WriteZeroLatency = HAL_OSPI_LATENCY_ON_WRITE;

 sHyperBusCfg.LatencyMode = HAL_OSPI_FIXED_LATENCY;

 if (HAL_OSPI_HyperbusCfg(&hospi2, &sHyperBusCfg, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)

 {

  Error_Handler();

 }

 /* USER CODE BEGIN OCTOSPI2_Init 2 */

  sCommand.AddressSpace = HAL_OSPI_MEMORY_ADDRESS_SPACE;

  sCommand.AddressSize = HAL_OSPI_ADDRESS_32_BITS;

  sCommand.DQSMode = HAL_OSPI_DQS_ENABLE;

  sCommand.Address = 0;

  sCommand.NbData = 1;

  if (HAL_OSPI_HyperbusCmd(&hospi2, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)

  {

    Error_Handler();

  }

  sMemMappedCfg.TimeOutActivation = HAL_OSPI_TIMEOUT_COUNTER_DISABLE;

  if (HAL_OSPI_MemoryMapped(&hospi2, &sMemMappedCfg) != HAL_OK)

  {

    Error_Handler();

  }

 /* USER CODE END OCTOSPI2_Init 2 */

}

Does anyone have a working configuration? Any suggestions?

This topic has been closed for replies.
KDJEM.1
KDJEM.1Best answer
ST Technical Moderator
May 25, 2023

Hi @MLuis.1​ ,

I advise you to refer to AN5050 Getting started with Octo-SPI and Hexadeca-SPI Interface on STM32 microcontrollers application note Section 6.2 OCTOSPI configuration with STM32CubeMX and check the OCTOSPI configuration for the AP Memory.

Also, I recommend you to take a look to the Errata sheet Section 2.7 OCTOSPI and check the different case of the errata and the workaround.

I hope this help you!

Kaouthar

To give better visibility on the answered topics, please click on "Best answer" on the reply which solved your issue or answered your question.

1 reply

KDJEM.1
KDJEM.1Best answer
ST Technical Moderator
May 25, 2023

Hi @MLuis.1​ ,

I advise you to refer to AN5050 Getting started with Octo-SPI and Hexadeca-SPI Interface on STM32 microcontrollers application note Section 6.2 OCTOSPI configuration with STM32CubeMX and check the OCTOSPI configuration for the AP Memory.

Also, I recommend you to take a look to the Errata sheet Section 2.7 OCTOSPI and check the different case of the errata and the workaround.

I hope this help you!

Kaouthar

To give better visibility on the answered topics, please click on "Best answer" on the reply which solved your issue or answered your question.