OpenEdv-开源电子网

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

求助大神,原子哥LCD驱动时的控制扫描函数

[复制链接]

1

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-6-8
在线时间
6 小时
发表于 2016-9-28 15:57:43 | 显示全部楼层 |阅读模式
2金钱
                if(lcddev.id==0x5510) dirreg=0x3600;  //控制扫描方向的指令
                else dirreg=0x36;
                if((lcddev.id!=0X5310)&&(lcddev.id!=0X5510)&&(lcddev.id!=0X1963))regval|=0X08;//5310/5510/1963不需要BGR   
                if(lcddev.id==0X6804)regval|=0x02;//6804的BIT6和9341的反了          
                LCD_WriteReg(dirreg,regval);                    //写指令,再写参数,控制增长
                if(lcddev.id!=0X1963)//1963不做坐标处理   

那个 ”5310/5510/1963不需要BGR”,意思是其它的lcd,如9341是按BGR顺序显示的吗?
还有下面的 ”if(lcddev.id==0X6804)regval|=0x02;//6804的BIT6和9341的反了”  反了是什么意思?


求原子哥及各位大神解答,小弟新手

最佳答案

查看完整内容[请看2#楼]

去看芯片数据手册,看寄存器描述
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-9-28 15:57:44 | 显示全部楼层
去看芯片数据手册,看寄存器描述
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-6-8
在线时间
6 小时
 楼主| 发表于 2016-9-29 11:14:11 | 显示全部楼层
正点原子 发表于 2016-9-28 15:57
去看芯片数据手册,看寄存器描述

原子哥,我查看了手册
C:\Users\lenovo\Desktop\1.png
C:\Users\lenovo\Desktop\2.png
那个B1位是控制水平翻转。”regval|=0x02”这句就是使6804水平翻转显示吧?不是您所写的BIT6这一位吧?


回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-6-8
在线时间
6 小时
 楼主| 发表于 2016-9-29 11:14:57 | 显示全部楼层
图片没贴上来,直接复制了
B7 Page Address Order
B6 Column Address Order
B5 Page/Column Selection
B4 Vertical Order
B3 RGB/BGR Order
B2 Display data latch data order Set to ‘0’
B1 Horizontal Flip
B0 Vertical Flip
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-8 08:36:45 | 显示全部楼层
我也有疑问,楼主你这个问题解决了吗???
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-8 08:37:57 | 显示全部楼层
本帖最后由 allenA 于 2020-5-8 13:12 编辑

  if(lcddev.id!=0X1963)//1963不做坐标处理     那个 ”5310/5510/1963不需要BGR”,意思是其它的lcd,如9341是按BGR顺序显示的吗?     你这个问题解决了吗,楼主方便告诉我下吗 @475720936

回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-8 08:38:41 | 显示全部楼层
  if(lcddev.id!=0X1963)//1963不做坐标处理     那个 ”5310/5510/1963不需要BGR”,意思是其它的lcd,如9341是按BGR顺序显示的吗?     
你这个问题解决了吗,楼主方便告诉我下吗 ???
@475720936
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-8 08:49:28 | 显示全部楼层
@正点原子 解释下
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-8 13:13:21 | 显示全部楼层
本帖最后由 allenA 于 2020-5-8 13:14 编辑

                else dirreg=0x36;
                if((lcddev.id!=0X5310)&&(lcddev.id!=0X5510)&&(lcddev.id!=0X1963))regval|=0X08;//5310/5510/1963不需要BGR   
                if(lcddev.id==0X6804)regval|=0x02;//6804的BIT6和9341的反了         
                LCD_WriteReg(dirreg,regval);                    //写指令,再写参数,控制增长
                if(lcddev.id!=0X1963)//1963不做坐标处理   

标注粉色的那个 ”意思是ILI9341,会执行该函数的吧'如果是这样的话,ILI9341对应的寄存器的bit3位被置1,如果被置1的话,使用的是BGR格式的颜色像素(我理解的应该被置0,这样可以使用RBG颜色像素)
我在下面发出了寄存器相关的位说明和截图



115005u160jqi716hmde00.png
115006oieewg48xipg5e44.png
115005u160jqi716hmde00.png
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-8 16:01:59 | 显示全部楼层
allenA 发表于 2020-5-8 13:13
else dirreg=0x36;
                if((lcddev.id!=0X5310)&&(lcddev.id!=0X5510)&&(lcd ...

@正点原子
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-8 16:02:35 | 显示全部楼层
本帖最后由 allenA 于 2020-5-13 08:37 编辑

@正点原子
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-8 16:04:54 | 显示全部楼层
楼主解决了吗???我和你一样的疑问
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-9 09:00:34 | 显示全部楼层
本帖最后由 allenA 于 2020-5-13 08:38 编辑

@正点原子 楼主解决了吗?帮我解释下
@正点原子 @正点原子 正点原子@正点原子
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-14 13:18:47 | 显示全部楼层
正点原子 发表于 2016-9-28 15:57
去看芯片数据手册,看寄存器描述

原子哥,帮我解决下吧,我纠结很久了。。。。。。。。。。。。。。。。。。
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-5-14 13:19:19 | 显示全部楼层
allenA 发表于 2020-5-14 13:18
原子哥,帮我解决下吧,我纠结很久了。。。。。。。。。。。。。。。。。。

else dirreg=0x36;
                if((lcddev.id!=0X5310)&&(lcddev.id!=0X5510)&&(lcddev.id!=0X1963))regval|=0X08;//5310/5510/1963不需要BGR   
                if(lcddev.id==0X6804)regval|=0x02;//6804的BIT6和9341的反了         
                LCD_WriteReg(dirreg,regval);                    //写指令,再写参数,控制增长
                if(lcddev.id!=0X1963)//1963不做坐标处理   

标注粉色的那个 ”意思是ILI9341,会执行该函数的吧'如果是这样的话,ILI9341对应的寄存器的bit3位被置1,如果被置1的话,使用的是BGR格式的颜色像素(我理解的应该被置0,这样可以使用RBG颜色像素)
我在下面发出了寄存器相关的位说明和截图
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-6-8 13:51:44 | 显示全部楼层
正点原子 发表于 2016-9-28 15:57
去看芯片数据手册,看寄存器描述

原子哥,回答下我的问题
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-9-30
在线时间
16 小时
发表于 2020-6-11 08:57:38 | 显示全部楼层
正点原子 发表于 2016-9-28 15:57
去看芯片数据手册,看寄存器描述

原子哥,能帮解答下吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 13:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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