STM32
直播中

甘满盛

8年用户 1360经验值
擅长:386660
私信 关注
[问答]

如何用32L4R9IDISCOVERY开发板上的PSRAM做显存?

我手上有一块 32L4R9IDISCOVERY
然后,我在DEMO程序STM32Cube_FW_L4_V1.14.0Projects32L4R9IDISCOVERYExamplesDSIDSI_CmdMode_SingleBuffer基础上,添加了PSRAM初始化。PSRAM工作正常,并可以作为堆使用。
但当我把显存设置到PSRAM上的时候。
发现系统会进入到LTDC Error中断
LTDC_ER_IRQHandler

请问大大有测试过类似的问题吗?
谢谢

附:代码
显存配置
//__attribute__((section(".FrameBufferSection")))

__attribute__((section(".XRAMSection")))

__align(16) uint32_t PhysFrameBuffer[91260]; // 5 char buffer, 5*16 = 80 pixer



PSRAM初始化

/* PSRAM device configuration */

  /* Timing configuration derived from system clock (up to 120Mhz)

  for 60Mhz as PSRAM clock frequency */

  Timing.AddressSetupTime   = 4;

  Timing.AddressHoldTime    = 2;

  Timing.DataSetupTime     = 6;

  Timing.BusTurnAroundDuration = 1;

  Timing.CLKDivision      = 2;

  Timing.DataLatency      = 2;

  Timing.AccessMode    = FMC_ACCESS_MODE_A; //FMC_ACCESS_MODE_A;


  psramHandle.Init.NSBank       = FMC_NORSRAM_BANK1;

  psramHandle.Init.DataAddressMux   = FMC_DATA_ADDRESS_MUX_DISABLE;

  psramHandle.Init.MemoryType     = FMC_MEMORY_TYPE_PSRAM;

  psramHandle.Init.MemoryDataWidth  = FMC_NORSRAM_MEM_BUS_WIDTH_16;

  psramHandle.Init.BurstAccessMode  = FMC_BURST_ACCESS_MODE_DISABLE;

  psramHandle.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_HIGH;

  psramHandle.Init.WaitSignalActive  = FMC_WAIT_TIMING_BEFORE_WS;

  psramHandle.Init.WriteOperation   = FMC_WRITE_OPERATION_ENABLE;

  psramHandle.Init.WaitSignal     = FMC_WAIT_SIGNAL_DISABLE;

  psramHandle.Init.ExtendedMode    = FMC_EXTENDED_MODE_DISABLE;

  psramHandle.Init.AsynchronousWait  = FMC_ASYNCHRONOUS_WAIT_DISABLE;

  psramHandle.Init.WriteBurst     = FMC_WRITE_BURST_DISABLE;

  psramHandle.Init.ContinuousClock  = FMC_CONTINUOUS_CLOCK_SYNC_ASYNC;

  psramHandle.Init.WriteFifo     = FMC_WRITE_FIFO_DISABLE;

  psramHandle.Init.NBLSetupTime    = 0;

  psramHandle.Init.PageSize      = FMC_PAGE_SIZE_NONE;


  psramHandle.Instance = FMC_NORSRAM_DEVICE;

  psramHandle.Extended = FMC_NORSRAM_EXTENDED_DEVICE;

回帖(1)

李秀华

2024-4-11 09:57:26
因为STM32L4R9-DISCO板上的PSRAM,DEMO中初始化为异步模式,读写速率较慢,直接用作framebuffer会出现带宽不匹配的问题,需要优化PSRAM参数配置,比如配置为burst mode,或同步模式,访问速率会大提高,同时也要结合LTDC配置,使PSRAM带宽与LTDC带宽需求相匹配。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分