硬汉嵌入式论坛

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

[emWin] STM32F103ZET6 STemwin 颜色不对解决方法

[复制链接]

1

主题

19

回帖

22

积分

新手上路

积分
22
发表于 2018-1-28 10:11:40 | 显示全部楼层 |阅读模式
最近刚接触EMWIN,自己打样了一个板回来调试。用的屏是3.5寸 分辨率:480*320  控制芯片是R61529 。                           屏我已经正常驱动,但是现在存在个问题。                          就是颜色不对,由于是初次搞这个,不知道如何着手。具体现象间下图


                          还请大家指导一二

测试结果

测试结果
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-1-28 10:27:31 | 显示全部楼层
你现在用的那个版本emWin库。

看下你配置中颜色格式用的GUICC_565还是GUICC_M565,切换测试下。
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-28 10:43:58 | 显示全部楼层
eric2013 发表于 2018-1-28 10:27
你现在用的那个版本emWin库。

看下你配置中颜色格式用的GUICC_565还是GUICC_M565,切换测试下。

用的是5.26的      GUICC_565显示的颜色是上面图片的。
若换成GUICC_M565   测试代码的底色就会变为黄色。
下面图片是M565的效果

1

1

2

2
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-1-28 11:16:19 | 显示全部楼层
安凯臣君 发表于 2018-1-28 10:43
用的是5.26的      GUICC_565显示的颜色是上面图片的。
若换成GUICC_M565   测试代码的底色就会变为黄色 ...

检测下你的FSMC数据线,是不是没有正确匹配,感觉是数据线没有正确匹配造成的。
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-28 11:21:56 | 显示全部楼层
本帖最后由 安凯臣君 于 2018-1-28 11:24 编辑
eric2013 发表于 2018-1-28 11:16
检测下你的FSMC数据线,是不是没有正确匹配,感觉是数据线没有正确匹配造成的。

你是说FSMC_Dx数据线顺序不对?    但是都能显示了啊      我的理解是:若是错的话,应该是不能驱动的。  不知道我这样理解对不对?   我的接发是FSMC_D0-FSMC_D15 对应LCD_D0-LCD_D15
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-1-28 11:27:05 | 显示全部楼层
安凯臣君 发表于 2018-1-28 11:21
你是说FSMC_Dx数据线顺序不对?    但是都能显示了啊      我的理解是:若是错的话,应该是不能驱动的。  ...

对,你的理解是正确的,忘了这种屏还要配置寄存器。

建议先不使用emWin,裸机测试下,显示红色,黑色看看是什么效果,如果裸机能够正常显示,emWin也是没有问题的。emWin建议使用通用驱动方式,不要使用emWin自带的驱动,不方便调试。
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-28 11:37:19 | 显示全部楼层
eric2013 发表于 2018-1-28 11:27
对,你的理解是正确的,忘了这种屏还要配置寄存器。

建议先不使用emWin,裸机测试下,显示红色,黑色 ...

好的   谢谢     我按照你的方法先试试
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-28 11:45:06 | 显示全部楼层
eric2013 发表于 2018-1-28 11:27
对,你的理解是正确的,忘了这种屏还要配置寄存器。

建议先不使用emWin,裸机测试下,显示红色,黑色 ...

初始化驱动是我自己写的,你说的通用驱动方式是说的打点那些函数吗?
回复

使用道具 举报

13

主题

156

回帖

215

积分

高级会员

积分
215
发表于 2018-1-28 11:50:34 | 显示全部楼层
楼主你把屏的RGB设置能BGR
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-1-28 12:07:48 | 显示全部楼层
安凯臣君 发表于 2018-1-28 11:45
初始化驱动是我自己写的,你说的通用驱动方式是说的打点那些函数吗?

是emWin的底层驱动接口文件,我们的V5和V4板子emWin一直用的通用驱动,即文件:GUIDRV_Template.c
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-28 13:38:16 | 显示全部楼层
本五心 发表于 2018-1-28 11:50
楼主你把屏的RGB设置能BGR

我试了,他和GUICC_M565一样效果   测试代码的底色变为黄色
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-28 13:39:12 | 显示全部楼层
eric2013 发表于 2018-1-28 12:07
是emWin的底层驱动接口文件,我们的V5和V4板子emWin一直用的通用驱动,即文件:GUIDRV_Template.c

哦哦   好的   我先试试    谢谢了
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-29 09:28:14 | 显示全部楼层
eric2013 发表于 2018-1-28 12:07
是emWin的底层驱动接口文件,我们的V5和V4板子emWin一直用的通用驱动,即文件:GUIDRV_Template.c

版主,你好!我试了不用EMWIN   直接驱动。   发现我让它分别显示红色(GUI_RED:0x000000FF)和蓝色(GUI_BLUE:0x00FF0000),但是都显示黄色。    我让它显示绿色(GUI_GREEN:0x0000FF00),它却显示蓝色     这是怎回事呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-1-29 10:24:36 | 显示全部楼层
安凯臣君 发表于 2018-1-29 09:28
版主,你好!我试了不用EMWIN   直接驱动。   发现我让它分别显示红色(GUI_RED:0x000000FF)和蓝色(GU ...

你的这个屏是不是用的16位色,如果是,你要转换下颜色值。用16位色显示。
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-29 11:27:39 | 显示全部楼层
eric2013 发表于 2018-1-29 10:24
你的这个屏是不是用的16位色,如果是,你要转换下颜色值。用16位色显示。

转换颜色值?emwin默认不就是16位的吗?我的屏也是16位的      如何转换呢?能不能提供下    万分感谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-1-29 11:28:33 | 显示全部楼层
安凯臣君 发表于 2018-1-29 11:27
转换颜色值?emwin默认不就是16位的吗?我的屏也是16位的      如何转换呢?能不能提供下    万分感谢!

我说的是你的裸机显示,你的裸机显示红色,蓝色正常吗
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-29 13:35:01 | 显示全部楼层
eric2013 发表于 2018-1-29 11:28
我说的是你的裸机显示,你的裸机显示红色,蓝色正常吗

就是裸机,我让它分别显示红色(GUI_RED:0x000000FF)和蓝色(GUI_BLUE:0x00FF0000),但是都显示黄色。    我让它显示绿色(GUI_GREEN:0x0000FF00),它却显示蓝色
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-1-29 14:11:23 | 显示全部楼层
安凯臣君 发表于 2018-1-29 13:35
就是裸机,我让它分别显示红色(GUI_RED:0x000000FF)和蓝色(GUI_BLUE:0x00FF0000),但是都显示黄色 ...

你的屏在裸机状态不是16位色么。

你所说的红色(GUI_RED:0x000000FF)和蓝色(GUI_BLUE:0x00FF0000)是24位色的颜色值表示。

回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-29 14:35:56 | 显示全部楼层
eric2013 发表于 2018-1-29 14:11
你的屏在裸机状态不是16位色么。

你所说的红色(GUI_RED:0x000000FF)和蓝色(GUI_BLUE:0x00FF0000 ...

是的啊,也就是说EMWIN自带的是24位的色码表,  16位的需要自己去修改了?       emwin输出的是24位的色码吗?
回复

使用道具 举报

11

主题

53

回帖

86

积分

初级会员

积分
86
发表于 2018-1-29 20:04:12 | 显示全部楼层
大神的意思是,你的屏是16色的,你不用emwin,然后刷色块。看红色(1111100000000000,0xf800)是不是红色。(0000011111100000,0x07e0)是不是绿色,(11111,0x01ff)是不是蓝色。
回复

使用道具 举报

11

主题

53

回帖

86

积分

初级会员

积分
86
发表于 2018-1-29 20:05:06 | 显示全部楼层
奋进love 发表于 2018-1-29 20:04
大神的意思是,你的屏是16色的,你不用emwin,然后刷色块。看红色(1111100000000000,0xf800)是不是红色 ...

最后的蓝色打错了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-1-30 01:21:31 | 显示全部楼层
奋进love 发表于 2018-1-29 20:04
大神的意思是,你的屏是16色的,你不用emwin,然后刷色块。看红色(1111100000000000,0xf800)是不是红色 ...

对的,就是这个意思
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-30 23:44:21 | 显示全部楼层
eric2013 发表于 2018-1-30 01:21
对的,就是这个意思

现在按照你的意思试过了,让他显示红色(0xf800)他显示黄色 ,让他显示黄色(0xff80)他显示红色。可以确定是屏幕设置问题,现在在看手册(全是英文的有点懵)。。。。。。。。。
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-1-31 23:53:46 | 显示全部楼层
本帖最后由 安凯臣君 于 2018-2-1 09:59 编辑

问题已经找到,是因为屏幕初始化的时候没有将oxC0寄存器的REV位置1造成的。。。。   
      谢谢各位的帮助!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-2-1 02:08:51 | 显示全部楼层
安凯臣君 发表于 2018-1-31 23:53
问题已经找到,是因为屏幕初始化的时候没有将oxC0寄存器的REV没有置1造成的。。。。   
      谢谢各位的 ...

回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-2-1 09:28:22 | 显示全部楼层

谢谢!大神的指导
回复

使用道具 举报

0

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2018-6-13 22:12:57 | 显示全部楼层
安凯臣君 发表于 2018-1-28 11:45
初始化驱动是我自己写的,你说的通用驱动方式是说的打点那些函数吗?

  您好,我想问一下,如果是自己写初始化驱动,应该如何入手。是看手册,根据各个寄存器,一个个寄存器配置,还是参考一些驱动代码做修改。
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2018-7-21 09:24:26 | 显示全部楼层
Jin_庆 发表于 2018-6-13 22:12
您好,我想问一下,如果是自己写初始化驱动,应该如何入手。是看手册,根据各个寄存器,一 ...

对的,自己写只能是这样了。   或者你向屏的厂家索要,一般都会有历程提供,里面就有驱动
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-31 00:39 , Processed in 0.299484 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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