OpenEdv-开源电子网

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

如何提高SDRAM刷图速度(10寸)

[复制链接]

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-4-28
在线时间
263 小时
发表于 2017-12-19 15:34:58 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 orta 于 2017-12-19 15:35 编辑

原子大大和各位高手,最近还面临一个问题想和您请教

我用的767 挂载SDRAM 和 1280*800 10寸屏 RGB565 模式

LTDC 的帧显示缓存映射地址:

u16 ltdc_lcd_framebuf[1280*800] __attribute__((at(0XC0000000)));
剩余SDRAM用于图片存储的缓存映射地址:
u16 sdram_array[16*1024*1024] __attribute__((at(0XC2000000)));

ltdc_lcd_framebuf 占用 1280*800个 u16
sdram_array 占用 16M 个 u16

现在 SDRAM和 屏工作都没问题。

然后,我通过软件做了一张 1280*800的 RGB565 格式 BMP图片,并转为.BIN二进制文件(裸像素数据); 767通过U盘将 该BIN 二进制文件数组 拷入 sdram_array,相当于提前从U盘把数据拷入SDRAM,以便一会使用。
最后,开始刷图:

               for(i=0;i<1280*800;i++)
              {
                   ltdc_lcd_framebuf[ i ]=sdram_array[ i ];
                }

就是无脑将sdram_array 搬入 显示缓存  ltdc_lcd_framebuf。

问题在这里。 这么做的话,应该已经是比较快的速度了,(相当于SDRAM片内数据搬移),但是在 1280X800的分辨率下,还是能看出 画面是有刷出感(从上往下),不是整屏 全部瞬间变化。

我又做了一个实验:
               for(i=0;i<1280*800;i++)
              {
                   ltdc_lcd_framebuf[ i ]=RED;
                }
刷一个单色画面,就没有感觉有刷屏感, 也就是说    ltdc_lcd_framebuf[ i ]=sdram_array[ i ] 这句话 数据搬移 占用了总线时间。


项目设计的 767方案, 显示一张1280X800 图 是不能有刷屏感的。

请问现在如何解决呢?我也想到 可否用 DMA 将sdram_array[ i ] 搬移到ltdc_lcd_framebuf[ i ], 可是不知怎么写。。而且也不知道这么做是否有效提升刷屏速度。
用这种FOR循环是不是效率是比较慢的。


谢谢!!







最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-12-19 15:34:59 | 显示全部楼层
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2017-12-19 17:31:47 | 显示全部楼层
最近我也再用这块板子做这个图片显示实验,我感觉是不是这一系列的单片机不适合做图像数据处理这类开发呢?我做的也是特别清晰的刷新感,小的图片可以,图片一大就不行了,显示速度超级慢,我也想知道,有什么方法能提高速度,是CPU的问题还是程序的问题?
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2017-12-19 17:32:26 | 显示全部楼层
wangmingwei093 发表于 2017-12-19 17:31
最近我也再用这块板子做这个图片显示实验,我感觉是不是这一系列的单片机不适合做图像数据处理这类开发呢? ...

还有,我就是用的DMA2D显示的,确实也很慢的
回复

使用道具 举报

6

主题

119

帖子

0

精华

高级会员

Rank: 4

积分
712
金钱
712
注册时间
2015-11-26
在线时间
139 小时
发表于 2017-12-19 18:37:45 | 显示全部楼层
使用emwin的存储功能就可以实现  800*480刷新速度是20ms一帧 480*272是6s一帧  看不出刷新过程的
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2017-12-19 19:22:58 | 显示全部楼层
内存带宽放在那,没辄。
不然显卡还要GDDR5做什么
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

6

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2014-8-12
在线时间
32 小时
发表于 2017-12-22 16:42:27 | 显示全部楼层
切换显存地址,图片数据加载完后,把显存地址从ltdc_lcd_framebuf切换到sdram_array
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-4-28
在线时间
263 小时
 楼主| 发表于 2017-12-22 17:35:39 | 显示全部楼层
heitu103 发表于 2017-12-22 16:42
切换显存地址,图片数据加载完后,把显存地址从ltdc_lcd_framebuf切换到sdram_array

好的,感谢,我去试试看
回复

使用道具 举报

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2018-7-20
在线时间
17 小时
发表于 2018-9-12 10:27:58 | 显示全部楼层

我想问问,DMA2D中,有4个模式,一种是M2M的模式,还有R2M,如果我位图数据都放在静态数组里,也就是Flash中,DMA2D选用哪一种模式好,而且DMA2D怎么去指定M和R,我查看到资料里,DMA2D只有目的地址,没有源地址
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 12:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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