我手上有一块
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;