野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17262|回复: 16

rt1052移植LCD 出现显示横移问题

[复制链接]
发表于 2021-1-8 13:52:21 | 显示全部楼层 |阅读模式
2火花
如题,出现字符串横移,每次reset显示的位置都不一样,重复显示的位置也会出现横移?请问是什么原因?

最佳答案

查看完整内容

那估计还是带宽问题,你可以试试4楼的那个方法,提高LCDIF外设的带宽,然后把程序运行的位置再细化些,比如堆栈和一些频繁读写的变量放到内部ram。 还有就是D Cache配置一下,覆盖程序所在的sdram地址,用write back模式
回复

使用道具 举报

发表于 2021-1-8 13:52:22 | 显示全部楼层
gossip 发表于 2021-1-11 18:56
我最终把刷新率降到10HZ,才正常,但是有问题,就是频闪眼睛可以看见,还有没有其它更好的方法处理? ...

那估计还是带宽问题,你可以试试4楼的那个方法,提高LCDIF外设的带宽,然后把程序运行的位置再细化些,比如堆栈和一些频繁读写的变量放到内部ram。

还有就是D Cache配置一下,覆盖程序所在的sdram地址,用write back模式
回复

使用道具 举报

发表于 2021-1-9 10:30:54 | 显示全部楼层
屏幕是野火的屏嘛?如果不是,需要检查下VBP、HBP之类的几个和屏幕有关的参数,还有像素时钟
回复

使用道具 举报

 楼主| 发表于 2021-1-11 08:46:32 | 显示全部楼层
ZZZ_XXJ 发表于 2021-1-9 10:30
屏幕是野火的屏嘛?如果不是,需要检查下VBP、HBP之类的几个和屏幕有关的参数,还有像素时钟 ...

买的公司要用的屏。这种我检查过都是根据手册来的,还有没有其它原因?
回复

使用道具 举报

发表于 2021-1-11 16:24:16 | 显示全部楼层
gossip 发表于 2021-1-11 08:46
买的公司要用的屏。这种我检查过都是根据手册来的,还有没有其它原因? ...

屏幕是rgb888还是565的,野火的例程里驱动rgb888的高分辨率屏需要把下面这个宏开起来
野火论坛202101111623475188..png

回复

使用道具 举报

 楼主| 发表于 2021-1-11 16:28:51 | 显示全部楼层
ZZZ_XXJ 发表于 2021-1-11 16:24
屏幕是rgb888还是565的,野火的例程里驱动rgb888的高分辨率屏需要把下面这个宏开起来

就是用的565,我代码是跑在sdram中的,显存也在sdram中
回复

使用道具 举报

发表于 2021-1-11 16:44:07 | 显示全部楼层
gossip 发表于 2021-1-11 16:28
就是用的565,我代码是跑在sdram中的,显存也在sdram中

那也有可能是sdram带宽出现瓶颈了,屏幕分辨率和刷新率给太高会占用大量sdram带宽,分辨率比较大的时候可以试试调低lcd的像素时钟降低刷新率,让出一部分带宽
回复

使用道具 举报

 楼主| 发表于 2021-1-11 17:01:04 | 显示全部楼层
ZZZ_XXJ 发表于 2021-1-11 16:44
那也有可能是sdram带宽出现瓶颈了,屏幕分辨率和刷新率给太高会占用大量sdram带宽,分辨率比较大的时候可 ...

1024*600,时钟改到45M,还是一样的,但是屏幕中间出现两纹。semc时钟要不要降低一点
回复

使用道具 举报

发表于 2021-1-11 17:56:53 | 显示全部楼层
gossip 发表于 2021-1-11 17:01
1024*600,时钟改到45M,还是一样的,但是屏幕中间出现两纹。semc时钟要不要降低一点 ...

semc的时钟可以不用动,这个调低的话,sdram带宽也跟着降低了,可以试试把lcd刷新率降到30Hz。

其实你可以根据预计的lcd分辨率、刷新率和屏幕参数,算一下需要的带宽,然后和sdram能够提供的带宽比较一下
回复

使用道具 举报

 楼主| 发表于 2021-1-11 18:06:17 | 显示全部楼层
ZZZ_XXJ 发表于 2021-1-11 17:56
semc的时钟可以不用动,这个调低的话,sdram带宽也跟着降低了,可以试试把lcd刷新率降到30Hz。

其实你可 ...

因为我程序是在sdram中跑的,然后我修改DCD中的semc时钟,程序就出问题了,程序也下载不进去了,这个是不是因为带宽不够导致的?我将刷新频率降低到30试一下。关于sdram的带宽还望哥哥解答一下,这几个带宽是怎么匹配的,连我自己的程序运行的也需要算进去吗?
回复

使用道具 举报

 楼主| 发表于 2021-1-11 18:56:33 | 显示全部楼层
ZZZ_XXJ 发表于 2021-1-11 17:56
semc的时钟可以不用动,这个调低的话,sdram带宽也跟着降低了,可以试试把lcd刷新率降到30Hz。

其实你可 ...

我最终把刷新率降到10HZ,才正常,但是有问题,就是频闪眼睛可以看见,还有没有其它更好的方法处理?
回复

使用道具 举报

发表于 2021-1-12 09:14:04 | 显示全部楼层
gossip 发表于 2021-1-11 18:06
因为我程序是在sdram中跑的,然后我修改DCD中的semc时钟,程序就出问题了,程序也下载不进去了,这个是不 ...

应该不是带宽问题,具体就不太清楚了。

是的,程序运行的带宽也要算进去,不过这部分我也不知道怎么定量
回复

使用道具 举报

 楼主| 发表于 2021-1-12 09:18:36 | 显示全部楼层
ZZZ_XXJ 发表于 2021-1-12 09:14
应该不是带宽问题,具体就不太清楚了。

是的,程序运行的带宽也要算进去,不过这部分我也不知道怎么定量 ...

我拉低刷新频率与提高semc的频率有什么不同吗?
回复

使用道具 举报

 楼主| 发表于 2021-1-12 10:29:56 | 显示全部楼层
ZZZ_XXJ 发表于 2021-1-12 09:30
那估计还是带宽问题,你可以试试4楼的那个方法,提高LCDIF外设的带宽,然后把程序运行的位置再细化些,比 ...

我的sdram全部配置成写回模式了,这个只能把堆栈放在内部ram中,但是要跑rt_thread,所以rt_thread的堆栈估计在内部ram中放不下。如何提高外设带宽?
回复

使用道具 举报

发表于 2021-1-13 09:13:42 | 显示全部楼层
本帖最后由 ZZZ_XXJ 于 2021-1-13 09:32 编辑
gossip 发表于 2021-1-12 10:29
我的sdram全部配置成写回模式了,这个只能把堆栈放在内部ram中,但是要跑rt_thread,所以rt_thread的堆栈 ...

就是4楼图片里面的那些,不过不用打开LCD_RGB_888宏,直接把里面的代码提出来。如果想修改其他外设的带宽,也可以按照注释里面的方法
rtt的线程栈也可以放到内部ram,内存管理用到的堆栈放到sdram没什么
回复

使用道具 举报

发表于 2021-1-13 09:17:00 | 显示全部楼层
gossip 发表于 2021-1-12 09:18
我拉低刷新频率与提高semc的频率有什么不同吗?

提高semc频率相当于提高sdram能够提供的带宽,降低刷新率是在能用的带宽固定的情况下,让出一部分给其他设备或者代码用。

话说我都忘记问semc时钟是多少了,这个尽量往高调,我记得野火的例程默认是158M,实在没法调高了,再逐渐降低刷新率,配合外设带宽调整
回复

使用道具 举报

 楼主| 发表于 2021-1-13 14:13:32 | 显示全部楼层
ZZZ_XXJ 发表于 2021-1-13 09:17
提高semc频率相当于提高sdram能够提供的带宽,降低刷新率是在能用的带宽固定的情况下,让出一部分给其他 ...

又学习了,昨天尝试修改lcd和emwin显存部分的内存属性,已经明显提高打点速度了,现在可以到三千多万,估计在想优化就只能上DMA了,刷新率的话最高只能到40帧,在高就会出现可能说的sdram带宽不够的问题了。谢谢版主!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-29 07:13 , Processed in 0.036161 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表