shiweicl1314 发表于 2017-1-25 15:01:12

LTDC驱动LCD时的问题

    用LTDC驱动LCD外挂SDRAM做显存没有开DMA2D,目前的问题是如果LTDC使能后程序往SDRAM中写数据就会造成SDRAM部分数据写入出错,LCD刷屏时就能看见很多黑色梅花印,调试发现出现黑色梅花印的位置就是出错的数据位置!想到一定是由于LTDC硬件读取SDRAM和软件读取时造成的冲突就在每次写数据到SDRAM显存中前先关闭LTDC写完后再使能,结果这样数据出错问题真的解决了每次写完数据才使能LTDC显示正常SDRAM也没有数据出错,但是又出现另一个问题就是在LTDC关闭的期间LCD显示有些花屏!芯片是STM32F767IG,SDRAM速度108M,LCD时钟33.25M,请问这样的问题该如何解决??

shiweicl1314 发表于 2017-1-25 17:35:16

已经解决了,的确是二者冲突所致!

zoomdy 发表于 2017-1-25 15:28:07

有没有启用数据Cache?会不会跟Cache导致的数据不一致有关系?虽然你没有开DMA2D,但LTDC本身就带DMA,在启用Cache后,多个总线Master会有数据一致性问题。

shiweicl1314 发表于 2017-1-25 15:30:52

zoomdy 发表于 2017-1-25 15:28
有没有启用数据Cache?会不会跟Cache导致的数据不一致有关系?虽然你没有开DMA2D,但LTDC本身就带DMA,在启 ...

启用了数据缓存,不过设置的是透写模式关闭缓存结果一样.

zoomdy 发表于 2017-1-26 15:27:34

shiweicl1314 发表于 2017-1-25 17:35
已经解决了,的确是二者冲突所致!

怎么个冲突法,按我理解,总线仲裁会处理冲突的呀?

shiweicl1314 发表于 2017-1-26 15:45:21

zoomdy 发表于 2017-1-26 15:27
怎么个冲突法,按我理解,总线仲裁会处理冲突的呀?
准确的说是SDRAM配置问题,将突发长度从8改为4就解决了这种冲突,如果单独测试SDRAM不修改不会造成数据错误.

zoomdy 发表于 2017-1-26 17:23:21

shiweicl1314 发表于 2017-1-26 15:45
准确的说是SDRAM配置问题,将突发长度从8改为4就解决了这种冲突,如果单独测试SDRAM不修改不会造成数据错误. ...

:handshake谢谢

JACK167 发表于 2020-11-28 19:27:09

这帖子已经过去三年半了, 我用的单片机也是STM32F767IG, 外挂32MB sdram, 现在遇到一个问题是开机解析png图片, 然后更新进度条, 屏幕中央有个logo, 发现狂闪, ltdc的错误计数达到几千, 之前代码是没有问题的, 随着代码变大问题就出来了, 我也猜到是dma2d刷图和我这边大量操作sdram冲突造成的,但是我的数据正常, 就是开机加载界面闪烁, 加载完毕后的界面操作一切正常, 我的突发传输长度本来就是SDRAM_MODEREG_BURST_LENGTH_4, 所以我实在不知道为啥之前代码都正常, 随着功能的增加就异常了.
页: [1]
查看完整版本: LTDC驱动LCD时的问题