OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3404|回复: 7

LTDC的同一层初始化两块缓冲区问题

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-5-5
在线时间
15 小时
发表于 2019-11-1 10:39:36 | 显示全部楼层 |阅读模式
1金钱
要实现大量数据的实时刷新,防止屏闪,需要在SDRAM中开辟多块缓冲区,有哪位大神做过如何在LTDC的同一层同时初始化两块缓冲区?

最佳答案

查看完整内容[请看2#楼]

个人建议使用emwin哈。显存切换逻辑,附张截图给你参考。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2019-11-1 10:39:37 | 显示全部楼层
candylife9 发表于 2019-11-1 15:15
同一时刻,LTDC只能指向一片显存。比如你在SDRAM里面申请了两块内存,SPACE1和SPACE2,那么在LTDC初始化的时 ...

个人建议使用emwin哈。显存切换逻辑,附张截图给你参考。
捕获.PNG
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2019-11-1 11:48:34 | 显示全部楼层
本帖最后由 candylife9 于 2019-11-1 11:50 编辑

你有用emwin吗,ewmin一般就是三缓冲的用法。如果只是简单的切换显示的话,就是在垂直消隐期的时候,切换一下显存地址就可以了。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-5-5
在线时间
15 小时
 楼主| 发表于 2019-11-1 13:46:02 | 显示全部楼层
candylife9 发表于 2019-11-1 11:48
你有用emwin吗,ewmin一般就是三缓冲的用法。如果只是简单的切换显示的话,就是在垂直消隐期的时候,切换一 ...

没有用emwin,我是直接操作寄存器的。
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2019-11-1 14:06:22 | 显示全部楼层
本帖最后由 candylife9 于 2019-11-1 14:07 编辑

一样的道理,消隐期内切换显存地址,但是页面数据什么时候准备好了,什么时候该切换需要自己控制。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-5-5
在线时间
15 小时
 楼主| 发表于 2019-11-1 15:00:05 | 显示全部楼层
candylife9 发表于 2019-11-1 14:06
一样的道理,消隐期内切换显存地址,但是页面数据什么时候准备好了,什么时候该切换需要自己控制。

碰到高手了,呵呵,多谢指点!我在初始化的时候初始化了2层的首地址,同时将LTDC_SRCR的VBR位置1,但是对于您说的消隐期内切换显存地址没有太理解,请指点!
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2019-11-1 15:15:17 | 显示全部楼层
同一时刻,LTDC只能指向一片显存。比如你在SDRAM里面申请了两块内存,SPACE1和SPACE2,那么在LTDC初始化的时候,一般你会给指定一个默认的显存假设这里是SPACE1.然后你开始准备要显示的数据,并更新到SAPCE1里面,然后启动LTDC,这个时候因为SPACE1里面已经有显示内容了,所以可以显示到屏幕上。同时这个时候,你要开始准备下一帧要显示的数据,并更新到第二个显存SPACE2里面。第二帧画面准备好之后,不要立刻切换显存地址(修改显存地址寄存器),因为可能会造成画面撕裂的现象。要等到LTDC的时序扫描进入垂直消隐期(上一帧图像显示完毕,准备下一次显示之前,时序图上看就是VSYNC的这段时间,这段时间LTDC是不会从内存读取显示数据的,所以可以在这段时间切换显存地址)。那经过VSYNC之后,LTDC就会从SPACE2获取到数据了,同时你又开始往SPACE1更新数据,如此往复,控制显示数据流。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-5-5
在线时间
15 小时
 楼主| 发表于 2019-11-5 14:37:49 | 显示全部楼层
candylife9 发表于 2019-11-1 15:21
个人建议使用emwin哈。显存切换逻辑,附张截图给你参考。

多谢了,兄弟,码这么多字,这下明白了。这几天外出没有及时回复,抱歉了。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 04:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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