stm32f429主频大于160MHz时,sdram数据不稳定

2019-07-20 18:27发布

stm32f429主频为180MHz, sdramz做lcd缓存时,刷完一帧图片,部分像素点颜 {MOD}发送了变化,如下图。但将主频设置为160MHz时图片显示又很稳定,后来测试了一下sdram,发现主频大于160M,并且随着主频的增大,sdram的数据越不稳定。而160M时数据又很稳定,有没有人遇到这样的问题呢?会不会是sdram的布线不好引起的?
sdram配置如下: [mw_shl_code=c,true]/* FMC SDRAM Bank configuration */ /* Timing configuration for 90 Mhz of SD clock frequency (180Mhz/2) */ /* TMRD: 2 Clock cycles */ FMC_SDRAMTimingInitStructure.FMC_LoadToActiveDelay = 2; /* TXSR: min=70ns (7x11.11ns) */ FMC_SDRAMTimingInitStructure.FMC_ExitSelfRefreshDelay = 7; /* TRAS: min=42ns (4x11.11ns) max=120k (ns) */ FMC_SDRAMTimingInitStructure.FMC_SelfRefreshTime = 4; /* TRC: min=70 (7x11.11ns) */ FMC_SDRAMTimingInitStructure.FMC_RowCycleDelay = 7; /* TWR: min=1+ 7ns (1+1x11.11ns) */ FMC_SDRAMTimingInitStructure.FMC_WriteRecoveryTime = 2; /* TRP: 20ns => 2x11.11ns */ FMC_SDRAMTimingInitStructure.FMC_RPDelay = 2; /* TRCD: 20ns => 2x11.11ns */ FMC_SDRAMTimingInitStructure.FMC_RCDDelay = 2; /* FMC SDRAM control configuration */ FMC_SDRAMInitStructure.FMC_Bank = FMC_Bank2_SDRAM; /* Row addressing: [7:0] */ FMC_SDRAMInitStructure.FMC_ColumnBitsNumber = FMC_ColumnBits_Number_8b; /* Column addressing: [11:0] */ FMC_SDRAMInitStructure.FMC_RowBitsNumber = FMC_RowBits_Number_12b; FMC_SDRAMInitStructure.FMC_SDMemoryDataWidth = SDRAM_MEMORY_WIDTH; FMC_SDRAMInitStructure.FMC_InternalBankNumber = FMC_InternalBank_Number_4; FMC_SDRAMInitStructure.FMC_CASLatency = SDRAM_CAS_LATENCY; FMC_SDRAMInitStructure.FMC_WriteProtection = FMC_Write_Protection_Disable; FMC_SDRAMInitStructure.FMC_SDClockPeriod = SDCLOCK_PERIOD; FMC_SDRAMInitStructure.FMC_ReadBurst = SDRAM_READBURST; FMC_SDRAMInitStructure.FMC_ReadPipeDelay = FMC_ReadPipe_Delay_1; FMC_SDRAMInitStructure.FMC_SDRAMTimingStruct = &FMC_SDRAMTimingInitStructure;[/mw_shl_code]





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
ye781205
1楼-- · 2019-07-22 02:05
官方版子stm32f429 discovery也会出现这个问题,官方驱动,我测试过,是写入错误,
只要每个数据连续写2或3次在读就不会出错,只写一次(>160mhz)必出错,不知道是什么原因
麦田稻草
2楼-- · 2019-07-22 03:06
回复【7楼】ye781205:
---------------------------------
我测试过写入然后马上读出来没问题,过一段时间读出来部分数据就变了,现在只能降低sdram的时钟,主频180M,sdram时钟设置为主频的3分频(官方例程为2分频),这样sdram数据就没有出错了,如果要用lcd控制器,还要将sdram的TRP(预充电有效周期)改小点,还有lcd的时钟也改小点,不然屏幕会抖动,至于为什么sdram时钟大于80M数据就不稳定,暂时还没有找到原因
小梅哥
3楼-- · 2019-07-22 08:49
 精彩回答 2  元偷偷看……
麦田稻草
4楼-- · 2019-07-22 09:46
 精彩回答 2  元偷偷看……
麦田稻草
5楼-- · 2019-07-22 15:33
降低了sdram的时钟,高速缓存数据时整个屏幕都在抖动,这个用得也太郁闷了
正点原子
6楼-- · 2019-07-22 15:37
回复【11楼】麦田稻草:
---------------------------------
F429这么不给力?
之前ST宣讲会看别人的驱动,还挺好啊。

一周热门 更多>