找回密码
 注册
搜索
查看: 1072|回复: 4

[讨论] LCD弱智问题

[复制链接]
发表于 2007-12-17 17:43:20 | 显示全部楼层 |阅读模式
在初始化LCD的跟硬件相关的修改寄存器的代码都是这样写
LCD_DRV_MAIN_WRITE_REG(0x2C);
LCD_DRV_MAIN_WRITE_REG(0xEB);
lcd_delay(16);
LCD_DRV_MAIN_WRITE_REG(0X45);//RAM Skip Area Set
LCD_DRV_MAIN_WRITE_REG(0X00);//RSK=00
LCD_DRV_MAIN_WRITE_REG(0X53);//Specified Display Pattern Set
LCD_DRV_MAIN_WRITE_REG(0X00);//SDP=00;
LCD_DRV_MAIN_WRITE_REG(0X10);//Driver Output Mode Set
LCD_DRV_MAIN_WRITE_REG(0X25);//DLN=10;SDIR=1; SWP=0; CDR=1
LCD_DRV_MAIN_WRITE_REG(0X22);//Bias Set
LCD_DRV_MAIN_WRITE_REG(0X11);//Bias(2)=01;Bias(1)=01
LCD_DRV_MAIN_WRITE_REG(0X24);//DCDC Clock Division Set(
LCD_DRV_MAIN_WRITE_REG(0X10);//DIV(2)=01;DIV(1)=01
LCD_DRV_MAIN_WRITE_REG(0X2A);//Contrast Control (1)
而对LCD_DRV_MAIN_WRITE_REG(0X2A)的定义是这样的 #define LCD_DRV_MAIN_WRITE_REG(addr)  LCD_DRV_MAIN_ADDR_REG  = addr
对的定义是这样的#define LCD_DRV_MAIN_ADDR_REG (*(volatile UINT16*)(drv_lcd_main_cs_base + LCD_DRV_MAIN_CS_DATA_OFFSET))
其中drv_lcd_main_cs_base = (UINT32)DRV_MemorySetupCS(__LCD_CS__, &stMemoryCfg);
其中#define LCD_DRV_MAIN_CS_DATA_OFFSET __LCD_OFFSET__
其中#define __LCD_OFFSET__ ADD0_OFFSET
其中#define ADD0_OFFSET 2
问题1:  在对LCD初始化的时候 为什么只有寄存器的地址,而没有具体的要附的值呢,我问代我的工程师说是,你就把它当命令。不知道怎么理解
问题2:这里的LCD_DRV_MAIN_CS_DATA_OFFSET到底有什么用啊  最后还是2
发表于 2007-12-17 21:12:24 | 显示全部楼层
1.很明显你没有仔细看到别人提供给你的初始化代码后面的注释
2.更明显你读不懂LCD driver IC的规格书,甚至应该是没有读过。
以后还是多阅读一下关于这方面的资料。
3.回答你的第一个问题:你的问题在于问题本身就是错误的。首先,那些0x2c,0x22等等并不是寄存器的地址,只是寄存器的索引,它和写入该寄存器的值一样,都应该被看错你应该通过某个地址往lcd driver ic里面送的命令。从这段代码来判断,这颗IC有一点特殊,那就是通常情况下,我们通过将RS拉低,写寄存器索引值,将RS拉高的时候写寄存器里面的数值。而这颗IC应该是都为高,或者都为低的情况下写。
LCD_DRV_MAIN_WRITE_REG(0X11);//Bias(2)=01;Bias(1)=01明显就是往寄存器里面写值,来控制Bias,除非写这个注释的人在玩你。
4.回答你第二个问题:去找到drv_lcd_main_cs_base + LCD_DRV_MAIN_CS_DATA_OFFSET这两个宏对应的值,然后去翻开你baseband芯片的规格书,找到LCD接口这个部分,你就会找到这个地址对应的意思。只有通过这个地址,bb才会知道你要往哪个端口写数据,才会产生那些对应的cs,wr,rs信号。
点评回复

使用道具 举报

发表于 2007-12-18 11:00:56 | 显示全部楼层
楼上的好人啊。。。。学习学习!!!
点评回复

使用道具 举报

 楼主| 发表于 2007-12-18 17:02:56 | 显示全部楼层
谢谢楼上的高手啊 嘿嘿
那你说像单个的LCD_DRV_MAIN_WRITE_REG(0x2C); lcd_delay(16); 这算是什么啊?就送了个索引?而不附值就完了?
还有啊,这里的LCD_DRV_MAIN_CS_DATA_OFFSET这个偏移量就是一个2,这是为什么啊?所有的#define LCD_DRV_MAIN_ADDR_REG (*(volatile UINT16*)(drv_lcd_main_cs_base + LCD_DRV_MAIN_CS_DATA_OFFSET))都是基地址加一个偏移量2???
点评回复

使用道具 举报

发表于 2007-12-18 22:30:38 | 显示全部楼层
#define LCD_DRV_MAIN_ADDR_REG (*(volatile UINT16*)(drv_lcd_main_cs_base + LCD_DRV_MAIN_CS_DATA_OFFSET))

看你这个宏好像就是将值写到寄存器里。[em01]
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-5 21:25 , Processed in 0.045244 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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