OpenEdv-开源电子网

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

有人用过ILI9488吗?——读GRAM数据不对已解决,jpg图片显示又碰到问题了

[复制链接]

4

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2012-2-17
在线时间
121 小时
发表于 2013-11-24 12:01:02 | 显示全部楼层 |阅读模式

我手头有几块这样的屏,初始化及显示已经成功了,准备移植bmp的时候发现要用到读DRAM内容,本以为很简单的,但发现读出来的内容和写入的有差别,不知道是怎么回事?
芯片手册见附件,几个命令的说明如下:
1、写DRAM


2、读DRAM



我用的16位总线方式,简单测试了一些数据:
写入      读出
0x0000  0x0100
0x1111  0x1120
0x2222  0x2544
0x3333  0x3564
0x4444  0x4188
0x5555  0x51A8
0x6666  0x65CC
0x7777  0x75EC
0x8888  0x8910
0x9999  0x9930
0xAAAA  0xAD54
0xBBBB  0xBD74
0xCCCC  0xC998
0xDDDD  0xD9B8
0xEEEE  0xEDDC
0xFFFF  0xFDFC
为了排除连线问题,我还将读出的数据再写到屏和原先的颜色放在一起比较对比,能看到区别,说明有差异的数据位确实写到屏上去了;另外读ID的功能我测试是正常的,它对应的命令如下,和读DARM操作是类似的,代码也没多大区别,但读DRAM就不对了;


附相关的代码:
uint32_t ili9488_read_id(void)
{
 uint32_t lcd_id,lcd_id1=0,lcd_id2=0;
 Write_CMD(0xd3);
 ReadBegin();
 LCD_ReadTrig();
 ReadDataPort();  
 LCD_ReadTrig();
 ReadDataPort();   
 LCD_ReadTrig();
 lcd_id1 = ReadDataPort()&0x00FF;
 LCD_ReadTrig();
 lcd_id2 = ReadDataPort()&0x00FF;
 ReadEnd();       
 lcd_id=(lcd_id1<<8)+lcd_id2;       
 return lcd_id;
}
返回结果正确 ID=0x9488

u16 LCD_ReadPoint(u16 x,u16 y)
{
  u16 r=0;
 if(x>=width||y>=height)return 0; //超过了范围,直接返回 
 LCD_SetCursor(x,y);

 Write_CMD(0x2e); //发送读GRAM指令 
 ReadBegin();  
 LCD_ReadTrig(); 
 ReadDataPort();  //dummy Read  

 LCD_ReadTrig();  
 r = ReadDataPort();
 ReadEnd();   
 return r;
}
返回结果和写入不一致

ILI9488 Data Sheet_100.pdf

10.32 MB, 下载次数: 6310

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

使用道具 举报

4

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2012-2-17
在线时间
121 小时
 楼主| 发表于 2013-11-24 15:09:01 | 显示全部楼层
搞定了,原来ILI9488也是个奇葩(见:http://www.openedv.com/posts/list/10244.htm),手册上面写得不对,和ILI9341一样处理

Write_CMD(0x2e); //发送读GRAM指令
ReadBegin(); 
LCD_ReadTrig();  
ReadDataPort();  //dummy Read 
LCD_ReadTrig();
r = ReadDataPort(); 
LCD_ReadTrig(); 
b=ReadDataPort(); 
ReadEnd();
g=r&0XFF;//对于9341,第一次读取的是RG的值,R在前,G在后,各占8位
g<<=8;
return (((r>>11)<<11)|((g>>10)<<5)|(b>>11));
回复 支持 0 反对 1

使用道具 举报

4

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2012-2-17
在线时间
121 小时
 楼主| 发表于 2013-11-26 21:27:45 | 显示全部楼层
我把驱动代码传上来,你可以参下,控制脚用了这几个,剩下就是16位数据口了。
#define CS   0
#define RS   1
#define WR   2
#define RD   3
#define RESET   12
#define IM2   13
#define IM1   14
#define IM0   15
在主程序中调用ili9488_init()函数初始化就会有反应了,再读个ID测试下是否正常:ili9488_read_id(void),正常应该返回0x9488,如果不行,先检查下接线。

lcd驱动.rar

7.42 KB, 下载次数: 2403

回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-11-24 12:06:03 | 显示全部楼层
没用过这个,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2012-2-17
在线时间
121 小时
 楼主| 发表于 2013-11-24 12:16:47 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
感谢帮顶,对这个问题,原子哥有什么建议吗?我昨天测试到晚上2点都没进展,不明白为什么读出来的和写进去的不一样。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-11-24 16:55:39 | 显示全部楼层
呵呵.恭喜
回复 支持 反对

使用道具 举报

4

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2012-2-17
在线时间
121 小时
 楼主| 发表于 2013-11-25 01:13:01 | 显示全部楼层
还是在这个帖子里跟吧,今天把图片显示弄好了,BMP比较顺利,不过jpg显示费了不少工夫,后来才发现是内存不够,特别是jpg解码部分有好几个需要1024*n的空间,我用的是F103C8,才20K的ram,后来删掉了串口、文件索引、BMP、GIF等部分的代码,把堆空间大小设置为0x4920(到极限),勉强能编译通


这下终于能显示jpg图片了,不过又碰到一个问题,不知道是什么原因,当显示多个图片的时候,剩下的几个图片会被缩小,如下图,图中原子的logo和中间的那个图片本来都是可以显示满屏的,但循环显示的时候,就变成这样了:


回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-11-25 20:22:56 | 显示全部楼层
回复【6楼】frival:
---------------------------------
居中显示.
我们的图片是320*240的,你在480*320的液晶上面显示,就是这个效果了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2012-2-17
在线时间
121 小时
 楼主| 发表于 2013-11-25 22:33:12 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
果然,是我糊涂了,原图片大小不对,一直以为保存的jpg是满屏大小的,现在调整为320*480就OK了!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-11-26
在线时间
0 小时
发表于 2013-11-26 12:37:04 | 显示全部楼层
楼主,你好,我现在也在调ILI9488的屏,一直点不亮,能否给点指点?我的qq137283491,谢谢
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2014-2-9
在线时间
0 小时
发表于 2014-2-9 11:01:37 | 显示全部楼层
赞,感谢楼主的分享~
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2014-3-2
在线时间
1 小时
发表于 2014-3-2 00:01:48 | 显示全部楼层
非常感谢分享,我用的是lpc1768控制的 ,到现在还是一头雾水!
回复 支持 反对

使用道具 举报

6

主题

68

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-12-2
在线时间
58 小时
发表于 2016-4-21 10:49:19 | 显示全部楼层
楼主直接是IO口模拟8080并口的吗?控制线5根不就可以了吗?怎么还用了8根
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2016-8-26
在线时间
7 小时
发表于 2016-10-19 10:42:35 | 显示全部楼层
我也遇到了同样的问题,奇怪,厂家为什么要这样搞呢,故意的吗,幸好找到了组织,不然,得害死多少人?
回复 支持 反对

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2016-9-6
在线时间
25 小时
发表于 2016-10-29 10:02:52 | 显示全部楼层
楼主,你好,我现在也在调试这个屏,我的bmp图片160*160的可以正常显示,但是320*240的不能正常显示,这个怎么回事?
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-1-15
在线时间
11 小时
发表于 2016-11-17 10:28:46 | 显示全部楼层
楼主,这个屏的接口电路怎么画
回复 支持 反对

使用道具 举报

4

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2012-2-17
在线时间
121 小时
 楼主| 发表于 2016-11-17 21:41:03 | 显示全部楼层
fengzi2 发表于 2016-11-17 10:28
楼主,这个屏的接口电路怎么画

照屏的规格书来的,我用的是并口方式,8位、16位都可以。
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-1-15
在线时间
11 小时
发表于 2016-11-18 08:58:55 | 显示全部楼层
有用SPI方式的吗
回复 支持 反对

使用道具 举报

4

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-9-15
在线时间
6 小时
发表于 2017-3-8 14:07:46 | 显示全部楼层
多谢楼主,9488的数据手册都不好找哈
回复 支持 反对

使用道具 举报

4

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
475
金钱
475
注册时间
2016-11-21
在线时间
148 小时
发表于 2017-7-2 16:38:30 | 显示全部楼层
LZ用的是103C8T吗?
回复 支持 反对

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-2-19
在线时间
47 小时
发表于 2018-11-9 22:57:06 | 显示全部楼层
赞,感谢楼主的分享~
回复 支持 反对

使用道具 举报

3

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2016-11-5
在线时间
63 小时
发表于 2019-12-25 08:41:15 | 显示全部楼层
最近也在用ILI9488 发现用法和ILI9341 还是有区别,9488需要光标结束点 9341不用!   我的显示正常了,  我的夜景是480*320的  为什么显示不了480*320的JPG格式图片,调用原子个的MINI程序 显示不出来  小图片JPG可以显示、、、
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2017-8-1
在线时间
31 小时
发表于 2020-2-27 16:49:07 | 显示全部楼层
沙漠风 发表于 2016-10-29 10:02
楼主,你好,我现在也在调试这个屏,我的bmp图片160*160的可以正常显示,但是320*240的不能正常显示,这个 ...

请问你的可以显示大图了吗?测试程序只能显示40x40的图片
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-3-17
在线时间
1 小时
发表于 2020-3-17 17:09:19 | 显示全部楼层
谢谢楼主分享,我也正在搞这个,跟你的问题差不多
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 18:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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