求助,F429开发板已调通GUI,在自己的PCB上跑,只要使用外部sdram,GUI初始化过程中就硬件溢出。

2019-07-20 01:53发布

使用外部sdram,F429开发板已调通GUI,在自己的PCB上跑,只要使用外部sdram,GUI初始化过程中就硬件溢出。MD070SD液晶屏配置
  readWriteTiming.FMC_AddressSetupTime = 0X04;         
  readWriteTiming.FMC_AddressHoldTime = 0x00;       
  readWriteTiming.FMC_DataSetupTime = 8;                数据保持时间设为8就不会硬件溢出,但是会花屏       
  readWriteTiming.FMC_BusTurnAroundDuration = 0x00;
  readWriteTiming.FMC_CLKDivision = 0x00;
  readWriteTiming.FMC_DataLatency = 0x00;
  readWriteTiming.FMC_AccessMode = FMC_AccessMode_A;       


SDRAM配置
void SDRAM_Init(void)
{
  FMC_SDRAMInitTypeDef  FMC_SDRAMInitStructure;
  FMC_SDRAMTimingInitTypeDef  FMC_SDRAMTimingInitStructure;

  /* 配置FMC接口相关的 GPIO*/
  SDRAM_GPIO_Config();

  /* 使能 FMC 时钟 */
  RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FMC, ENABLE);

  /* SDRAM时序结构体,根据SDRAM参数表配置----------------*/
/* SDCLK: 90 Mhz (HCLK/2 :180Mhz/2) 1个时钟周期Tsdclk =1/90MHz=11.11ns*/
  /* TMRD: 2 Clock cycles */
  FMC_SDRAMTimingInitStructure.FMC_LoadToActiveDelay    = 2;      
  /* TXSR: min=70ns (7x11.11ns) */
  FMC_SDRAMTimingInitStructure.FMC_ExitSelfRefreshDelay = 8;
  /* TRAS: min=42ns (4x11.11ns) max=120k (ns) */
  FMC_SDRAMTimingInitStructure.FMC_SelfRefreshTime      = 6;
  /* TRC:  min=70 (7x11.11ns) */        
  FMC_SDRAMTimingInitStructure.FMC_RowCycleDelay        = 6;         
  /* TWR:  min=1+ 7ns (1+1x11.11ns) */
  FMC_SDRAMTimingInitStructure.FMC_WriteRecoveryTime    = 2;      
  /* TRP:  15ns => 2x11.11ns */
  FMC_SDRAMTimingInitStructure.FMC_RPDelay              = 2;               
  /* TRCD: 15ns => 2x11.11ns */
  FMC_SDRAMTimingInitStructure.FMC_RCDDelay             = 2;

/* FMC SDRAM 控制配置 */
        /*选择存储区域*/
  FMC_SDRAMInitStructure.FMC_Bank = FMC_BANK_SDRAM;
  /* 行地址线宽度: [7:0] */
  FMC_SDRAMInitStructure.FMC_ColumnBitsNumber = FMC_ColumnBits_Number_9b;
  /* 列地址线宽度: [11:0] */
  FMC_SDRAMInitStructure.FMC_RowBitsNumber = FMC_RowBits_Number_13b;
  /* 数据线宽度 */
  FMC_SDRAMInitStructure.FMC_SDMemoryDataWidth = SDRAM_MEMORY_WIDTH;
  /* SDRAM内部bank数量*/
  FMC_SDRAMInitStructure.FMC_InternalBankNumber = FMC_InternalBank_Number_4;
  /* CAS潜伏期 */
  FMC_SDRAMInitStructure.FMC_CASLatency = SDRAM_CAS_LATENCY;
  /* 禁止写保护*/
  FMC_SDRAMInitStructure.FMC_WriteProtection = FMC_Write_Protection_Disable;
  /* SDCLK时钟分频因子,SDCLK = HCLK/SDCLOCK_PERIOD*/
  FMC_SDRAMInitStructure.FMC_SDClockPeriod = SDCLOCK_PERIOD;
  /* 突发读模式设置*/  
  FMC_SDRAMInitStructure.FMC_ReadBurst = SDRAM_READBURST;
  /* 读延迟配置 */
  FMC_SDRAMInitStructure.FMC_ReadPipeDelay = FMC_ReadPipe_Delay_1;
  /* SDRAM时序参数 */
  FMC_SDRAMInitStructure.FMC_SDRAMTimingStruct = &FMC_SDRAMTimingInitStructure;

  /* 调用初始化函数,向寄存器写入配置 */
  FMC_SDRAMInit(&FMC_SDRAMInitStructure);

  /* 执行FMC SDRAM的初始化流程*/
  SDRAM_InitSequence();

}


GUI在调用外部sdram时对总线上的时序有要求吗?还是其他配置有问题,求助各位解答!!!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。