OpenEdv-开源电子网

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

ILI9342驱动的液晶屏颜色显示异常

[复制链接]

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
发表于 2017-5-24 18:35:13 | 显示全部楼层 |阅读模式
本帖最后由 Dennis-Zhou 于 2017-5-24 18:45 编辑

使用的液晶屏是2.2英寸横屏,分辨率320*240,驱动芯片是ILI9342。但无论如何怎么调,屏幕显示的颜色都不正确
请各位帮我看看,是什么原因造成的。

当0x36寄存器配置为0x00:蓝色显示为红色,绿色显示为深绿色,红色则无法显示(红框本来是要显示红色的,但没有显示);
A3.jpg

当0x36寄存器配置为0x08:蓝色显示正常,绿色显示为深绿色,红色则无法显示(红框本来是要显示红色的,但没有显示);
A2.jpg


0x21和0x20寄存器都切换过,反正RGB也无法同时显示。

0x36寄存器:
A1.png



LCD的初始化程序如下:
////======================================
//        //Software Reset
//        TFT8K6204_WriteReg(0x0001);   

        //Backlight Control 2
        TFT8K6204_WriteReg(0x00B9);   
        TFT8K6204_WriteData(0x00FF);
        TFT8K6204_WriteData(0x0093);
        TFT8K6204_WriteData(0x0042);
        
        //Display Inversion ON        
        TFT8K6204_WriteReg(0x0021);   
//        //Display Inversion OFF
//        TFT8K6204_WriteReg(0x0020);   

        
        //Memory Access Control
        TFT8K6204_WriteReg(0x0036);   
        TFT8K6204_WriteData(0x0008);
//        TFT8K6204_WriteData(0x0028); //绿蓝
//        TFT8K6204_WriteData(0x0020); //红绿
//        TFT8K6204_WriteData(0x0000);

        //Pixel Format Set
        TFT8K6204_WriteReg(0x003A);   
        TFT8K6204_WriteData(0x00055);
         
        //Power Control 1
        TFT8K6204_WriteReg(0x00C0);   
        TFT8K6204_WriteData(0x0025);   
        TFT8K6204_WriteData(0x000A);   
         
        //Power Control 2
        TFT8K6204_WriteReg(0x00C1);   
        TFT8K6204_WriteData(0x0001);
        
        //VCOM Control 1
        TFT8K6204_WriteReg(0x00C5);   
        TFT8K6204_WriteData(0x002F);   
        TFT8K6204_WriteData(0x0027);   
         
        //VCOM Control 2
        TFT8K6204_WriteReg(0x00C7);
        TFT8K6204_WriteData(0x00BE);
         
        //Backlight Control 1
        TFT8K6204_WriteReg(0x00B8);   
        TFT8K6204_WriteData(0x000B);

        //Positive Gamma Correction
        TFT8K6204_WriteReg(0x00E0);   
        TFT8K6204_WriteData(0x000F);   
        TFT8K6204_WriteData(0x002A);   
        TFT8K6204_WriteData(0x0027);   
        TFT8K6204_WriteData(0x000C);   
        TFT8K6204_WriteData(0x000F);   
        TFT8K6204_WriteData(0x0007);   
        TFT8K6204_WriteData(0x0058);   
        TFT8K6204_WriteData(0x0086);   
        TFT8K6204_WriteData(0x0048);   
        TFT8K6204_WriteData(0x0009);   
        TFT8K6204_WriteData(0x0018);   
        TFT8K6204_WriteData(0x000B);   
        TFT8K6204_WriteData(0x001B);   
        TFT8K6204_WriteData(0x000E);   
        TFT8K6204_WriteData(0x0008);
        
        //Negative Gamma Correction
        TFT8K6204_WriteReg(0x00E1);   
        TFT8K6204_WriteData(0x0008);   
        TFT8K6204_WriteData(0x0017);   
        TFT8K6204_WriteData(0x001A);   
        TFT8K6204_WriteData(0x0002);   
        TFT8K6204_WriteData(0x000E);   
        TFT8K6204_WriteData(0x0003);   
        TFT8K6204_WriteData(0x0029);   
        TFT8K6204_WriteData(0x0013);   
        TFT8K6204_WriteData(0x0039);   
        TFT8K6204_WriteData(0x0001);   
        TFT8K6204_WriteData(0x0005);   
        TFT8K6204_WriteData(0x0003);   
        TFT8K6204_WriteData(0x0026);   
        TFT8K6204_WriteData(0x0033);   
        TFT8K6204_WriteData(0x000F);   

        //Display Function Control
        TFT8K6204_WriteReg(0x00B6);
        TFT8K6204_WriteData(0x0000);
        TFT8K6204_WriteData(0x0060);
        TFT8K6204_WriteData(0x0027);   
        TFT8K6204_WriteData(0x0000);   
         
        TFT8K6204_WriteReg(0x0011);        //退出睡眠状态
        delay_ms(10);
        TFT8K6204_WriteReg(0x0011);
        delay_ms(10);         
        TFT8K6204_WriteReg(0x0029);        //开启显示

////======================================




希望的田野上
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2078
金钱
2078
注册时间
2014-12-19
在线时间
710 小时
发表于 2017-5-24 21:45:33 | 显示全部楼层
用9341的代码试一下,二者差不多
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
 楼主| 发表于 2017-5-24 22:03:06 | 显示全部楼层
lvehe 发表于 2017-5-24 21:45
用9341的代码试一下,二者差不多

这个代码就是在9341的基础上修改过来的。别人的9341、9342代码我试了好几个,都是这样的。
希望的田野上
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
 楼主| 发表于 2017-5-25 10:12:00 | 显示全部楼层
顶起
希望的田野上
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
 楼主| 发表于 2017-5-25 17:01:45 | 显示全部楼层
自己顶起
回复 支持 反对

使用道具 举报

1

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-5-10
在线时间
55 小时
发表于 2017-5-25 21:54:28 来自手机 | 显示全部楼层
会不会是接口问题?
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
 楼主| 发表于 2017-5-26 09:03:29 | 显示全部楼层
我也觉得有这个可能,我怀疑是数据线DB0-DB15顺序反了,但如果反了,发其它指令应该也无法响应呀,更何况屏幕上字符都显示出来了,说明MCU的指令被LCD正确接收了。  很矛盾。。。
希望的田野上
回复 支持 反对

使用道具 举报

1

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-5-10
在线时间
55 小时
发表于 2017-5-26 10:02:01 来自手机 | 显示全部楼层
不是顺序反了,而是16位接口按照8位的时序操作或者其他类似的情况,因为指令只用低八位所以没有问题
回复 支持 反对

使用道具 举报

1

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-5-10
在线时间
55 小时
发表于 2017-5-26 10:30:20 来自手机 | 显示全部楼层
Dennis-Zhou 发表于 2017-5-26 09:03
我也觉得有这个可能,我怀疑是数据线DB0-DB15顺序反了,但如果反了,发其它指令应该也无法响应呀,更何况屏 ...

主要是即使是时序错了也只是缺色不会出现红蓝反向的问题……所以要么程序本身也有问题要么是屏幕问题
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
 楼主| 发表于 2017-5-26 11:04:48 | 显示全部楼层
cromarti 发表于 2017-5-26 10:30
主要是即使是时序错了也只是缺色不会出现红蓝反向的问题……所以要么程序本身也有问题要么是屏幕问题

屏幕绝对没问题,全新的!  而且我换了几块新屏都是一样的。  PCB板也焊了几块,也是这种情况。   你看还会是哪个地方没搞对?
希望的田野上
回复 支持 反对

使用道具 举报

1

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-5-10
在线时间
55 小时
发表于 2017-5-26 11:47:30 来自手机 | 显示全部楼层
Dennis-Zhou 发表于 2017-5-26 11:04
屏幕绝对没问题,全新的!  而且我换了几块新屏都是一样的。  PCB板也焊了几块,也是这种情况。   你看还 ...

那应该还是程序出问题了,我看你初始化的程序里面对36h地址的操作写了好几个数据,再就是看看lcd对应的io口输出是不是正常?
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
 楼主| 发表于 2017-5-26 22:42:04 | 显示全部楼层
cromarti 发表于 2017-5-26 11:47
那应该还是程序出问题了,我看你初始化的程序里面对36h地址的操作写了好几个数据,再就是看看lcd对应的io ...

只写了一个0x08,其它都注释了(之前也用这些值测试过,RGB也是无法正常显示)。
希望的田野上
回复 支持 反对

使用道具 举报

1

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-5-10
在线时间
55 小时
发表于 2017-5-26 23:45:38 来自手机 | 显示全部楼层
Dennis-Zhou 发表于 2017-5-26 22:42
只写了一个0x08,其它都注释了(之前也用这些值测试过,RGB也是无法正常显示)。

手机排版的锅……还是先看看接口输出的有没有问题吧
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
 楼主| 发表于 2017-5-27 09:38:56 | 显示全部楼层
cromarti 发表于 2017-5-26 23:45
手机排版的锅……还是先看看接口输出的有没有问题吧

你是指DB0-DB15? 怎么检查, 如果接错了,应该字符不会显示出来吧
希望的田野上
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
 楼主| 发表于 2017-5-27 13:44:31 | 显示全部楼层
顶起
希望的田野上
回复 支持 反对

使用道具 举报

1

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-5-10
在线时间
55 小时
发表于 2017-5-27 16:59:03 来自手机 | 显示全部楼层
Dennis-Zhou 发表于 2017-5-27 09:38
你是指DB0-DB15? 怎么检查, 如果接错了,应该字符不会显示出来吧

逻辑分析仪,仿真都可以。接错了不一定完全不能用,我看datasheet里面写寄存器只需要低八位而且没有格式要求。我今天就遇到个问题,led正常闪烁但是串口发送乱码,检查了一下发现是hse设置错了……
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
 楼主| 发表于 2017-5-27 22:39:40 | 显示全部楼层
cromarti 发表于 2017-5-27 16:59
逻辑分析仪,仿真都可以。接错了不一定完全不能用,我看datasheet里面写寄存器只需要低八位而且没有格式 ...

嗯,我准备着重检查这些数据端口。
希望的田野上
回复 支持 反对

使用道具 举报

12

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-6-10
在线时间
36 小时
发表于 2017-6-10 23:36:20 | 显示全部楼层
我上次也是用的9342,IMI的8/16位数据选择线漏了,出现无法显示完整信息的情况,检查一下硬件吧。
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1399
金钱
1399
注册时间
2013-8-6
在线时间
374 小时
 楼主| 发表于 2017-8-25 11:20:09 | 显示全部楼层
几周前已经解决问题了,原来是写数据时,要16位一次性写进去。
(原来的屏幕是分2次写进去的。移植时忽略了这点,搞了好几天才明白 QQ截图20170825111708.png
希望的田野上
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2016-4-29
在线时间
22 小时
发表于 2017-9-4 22:25:18 | 显示全部楼层
Dennis-Zhou 发表于 2017-8-25 11:20
几周前已经解决问题了,原来是写数据时,要16位一次性写进去。
(原来的屏幕是分2次写进去的。移植时忽略 ...

我也想用这个屏幕,能不能提供一下例程呢?
回复 支持 反对

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2020-8-5
在线时间
30 小时
发表于 2022-8-15 08:38:32 | 显示全部楼层
群主可以分享下这个驱动程序吗,最近想用FSMC来驱动TFT(9342芯片),感觉网上资料好少
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 07:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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