硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4810|回复: 21
收起左侧

[有问必答] 用了这么久液晶屏才发现刷屏速度好像不算很快。。。

[复制链接]

20

主题

110

回帖

170

积分

初级会员

积分
170
发表于 2018-9-14 15:33:52 | 显示全部楼层 |阅读模式
ILI9341,240x320分辨率。emwin的刷屏测试才600多万像素/s,有时能刷到710万,连1000万都没到,看网上有些能刷到770万的,这是F103FSMC的极限了吗??LCD配置和GUI方面还有什么地方能优化的??

FSMC时序应该是没问题的。
  1. /*写时序配置*/
  2.         writeTiming.FSMC_AddressSetupTime = 0; //ADDSET地址建立(保持)时间为0+1个HCLK,WR保持高电平的时间
  3.         writeTiming.FSMC_AddressHoldTime = 0;  //A模式未使用到
  4.         writeTiming.FSMC_DataSetupTime = 1; //DATAST数据建立(保持)时间为1+1个HCLK,WR保持低电平的时间
  5.         writeTiming.FSMC_BusTurnAroundDuration = 0;
  6.         writeTiming.FSMC_CLKDivision = 0;  //时钟不分割
  7.         writeTiming.FSMC_DataLatency = 0;
  8.         writeTiming.FSMC_AccessMode = FSMC_AccessMode_A;//访问模式,使用模式A
复制代码
QQ截图20180914150100.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-14 15:48:02 | 显示全部楼层
这个你可以简单换算下的,比如你的FSMC片选CS的速度是10MHz

一次片选就是一个像素点的刷新,你当前的CS速度基本就是6MHz左右,你示波器看看是不是。
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-9-14 15:52:50 | 显示全部楼层
eric2013 发表于 2018-9-14 15:48
这个你可以简单换算下的,比如你的FSMC片选CS的速度是10MHz

一次片选就是一个像素点的刷新,你当前的CS ...

手上没示波器额。那最快能达到多少?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-14 15:59:23 | 显示全部楼层
飛饵 发表于 2018-9-14 15:52
手上没示波器额。那最快能达到多少?

这速度可以了,F1就是这个速度。
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-9-14 16:04:04 | 显示全部楼层
eric2013 发表于 2018-9-14 15:59
这速度可以了,F1就是这个速度。

那就是说FSMC已经最优化了,emwin方面还能优化吗,我好像没优化过emwin底层
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-15 02:11:28 | 显示全部楼层
飛饵 发表于 2018-9-14 16:04
那就是说FSMC已经最优化了,emwin方面还能优化吗,我好像没优化过emwin底层

这个数值的大小受到emWin底层的矩形填充接口函数影响,你可以优化下。

详情看我们的老版emWin教程移植章节就行:
http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-9-15 23:46:13 | 显示全部楼层
eric2013 发表于 2018-9-15 02:11
这个数值的大小受到emWin底层的矩形填充接口函数影响,你可以优化下。

详情看我们的老版emWin教程移植 ...

有个问题,那个GUIDRV_Template.c干嘛用的?9341驱动能通过这个优化吗??教程是RA8875的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-16 00:06:26 | 显示全部楼层
飛饵 发表于 2018-9-15 23:46
有个问题,那个GUIDRV_Template.c干嘛用的?9341驱动能通过这个优化吗??教程是RA8875的

没问题,你可以论坛置顶帖V4网盘下载一个emWin的例子,已经支持ili9488,这个跟9341基本一样。

也是看文件GUIDRV_Template.c

这个文件是通用的驱动方式,所有显示屏都可以用这个文件驱动。
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-9-16 17:35:08 | 显示全部楼层
eric2013 发表于 2018-9-16 00:06
没问题,你可以论坛置顶帖V4网盘下载一个emWin的例子,已经支持ili9488,这个跟9341基本一样。

也是看 ...

用通用模版移植能显示了,但花屏。刷矩形的测试好像没问题。还有怎么设置屏幕方向,照着教程用的宏定义没用。最后速度能达到741.3万,确实提高了。 QQ截图20180916172213.png

LCDConf.rar (9.95 KB, 下载次数: 17)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-17 00:38:11 | 显示全部楼层
下载V4开发板的这个例子:
http://www.armbbs.cn/forum.ph ... 1814&extra=page%3D1
QQ截图20180917003806.png


回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-9-17 01:27:53 | 显示全部楼层
eric2013 发表于 2018-9-17 00:38
下载V4开发板的这个例子:
http://www.armbbs.cn/forum.ph ... 1814&extra=page%3D1

额,屏幕方向先不急。目前已经把横线花屏解决了。还剩16bpp那里不懂怎么改,窗口和光标都异常
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-17 01:29:20 | 显示全部楼层
飛饵 发表于 2018-9-17 01:27
额,屏幕方向先不急。目前已经把横线花屏解决了。还剩16bpp那里不懂怎么改,窗口和光标都异常

你把你当前写的贴出来,我看下,或者直接参考我们的修改就行。9488跟9341基本通用
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-9-17 13:18:51 | 显示全部楼层
eric2013 发表于 2018-9-17 01:29
你把你当前写的贴出来,我看下,或者直接参考我们的修改就行。9488跟9341基本通用

代码打包上传了 GUIDRV.rar (9.35 KB, 下载次数: 20)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-17 15:39:39 | 显示全部楼层
你的LCD_WR_DAT_def怎么写的。

你的这里:
1.png

我的:
2.png 5.png


回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-9-17 16:30:54 | 显示全部楼层
eric2013 发表于 2018-9-17 15:39
你的LCD_WR_DAT_def怎么写的。

你的这里:

就一宏定义,
#define LCD_DAT (*(__IO u16 *)(0x6C000800))
#define LCD_WR_DAT_def(dat) LCD_DAT = dat
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-17 19:33:00 | 显示全部楼层
飛饵 发表于 2018-9-17 16:30
就一宏定义,
#define LCD_DAT (*(__IO u16 *)(0x6C000800))
#define LCD_WR_DAT_def(dat) LCD_DAT = d ...

那没问题了。现在应该是别的地方有问题。

有个LCDConf.C文件,你的是怎么配置的。
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-9-17 19:58:08 | 显示全部楼层
本帖最后由 飛饵 于 2018-9-17 19:59 编辑
eric2013 发表于 2018-9-17 19:33
那没问题了。现在应该是别的地方有问题。

有个LCDConf.C文件,你的是怎么配置的。

额,之前压缩包里传错LCDConf.C了。。。。。是这个 LCDConf.c (8.42 KB, 下载次数: 22)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-18 02:20:47 | 显示全部楼层
QQ截图20180918022022.png
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-9-18 12:25:46 | 显示全部楼层

感觉和这没关系啊,不管横屏竖屏都有异常。如果16BPP那里不优化就完全正常了
QQ截图20180918122344.png

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-18 12:35:24 | 显示全部楼层
飛饵 发表于 2018-9-18 12:25
感觉和这没关系啊,不管横屏竖屏都有异常。如果16BPP那里不优化就完全正常了

那个地方当然有关系了,那个是设置有效显示区的。

你这个的话,裸机测试调用16bpp里面的代码,绘制几行颜色彩带,看看是否正常,注意裸机直接调用这个API。
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-9-18 13:31:38 | 显示全部楼层
本帖最后由 飛饵 于 2018-9-18 18:36 编辑
eric2013 发表于 2018-9-18 12:35
那个地方当然有关系了,那个是设置有效显示区的。

你这个的话,裸机测试调用16bpp里面的代码,绘制几 ...

已经解决了。犯了低级错误,LCD_WR_ADDR();写错参数了,你例程里是传的参数是起始地址和宽高,我的这个参数是传起始地址和结束地址的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-9-19 02:10:47 | 显示全部楼层
飛饵 发表于 2018-9-18 13:31
已经解决了。犯了低级错误,LCD_WR_ADDR();写错参数了,你例程里是传的参数是起始地址和宽高,我的这个参 ...



回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 06:11 , Processed in 0.229816 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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