微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 改时序时,LCD读ID只有第一个字节正确后面的都是重复的,可能是什么问题

改时序时,LCD读ID只有第一个字节正确后面的都是重复的,可能是什么问题

时间:10-02 整理:3721RD 点击:

logical 14:31:48

改时序时,读ID只有第一个字节正确后面的都是重复的,可能是什么问题  

回复光辉岁月—驱动 14:32:12

LCD  

回复光辉岁月—驱动 14:32:19

哪你修改慢一点  

回复logical 14:32:20

写一条命令 读一次,一共写了3调命令  

回复logical 14:32:21

对  

回复光辉岁月—驱动 14:32:32

哪就搞慢一点  

回复光辉岁月—驱动 14:32:37

不然肯定不行  

回复logical 14:32:47

第一条有反应,后面的感觉都没写进去  

回复logical 14:33:07

等待时间已经写的很大了  

回复logical 14:33:14

#define CE2WR_SETUP_TIMING      1

#define CE2WR_HOLD_TIMING        1

#define CE2RD_SETUP_TIMING       0////1

#define WRITE_WAIT_TIMING        28

#define READ_LATENCY_TIMING     24

#define ROI_CTRL_CM_TIMING        20  

回复logical 14:33:24

建立时间一直比较小  

回复光辉岁月—驱动 14:33:37

你在写指令后在延时一下,在读  

回复光辉岁月—驱动 14:33:41

在延时在写  

回复光辉岁月—驱动 14:33:42

看一下  

回复logical 14:34:27

LCD_Delay(10);  

回复logical 14:34:34

已经有延时了  

回复光辉岁月—驱动 14:34:56

你现在是读不了ID?  

回复logical 14:35:16

能读取 但是值不对  

回复logical 14:35:33

        /*read LCD driver ID */

        *(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR = 0x04;//zzh

      //  *(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR = 0x00; //zzh

        LCD_Delay(5);

        dummyid = ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR )<<8; //zzh

        dummyid|= ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR ); //zzh

        DrvId = ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR )<<8;

        DrvId |= ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR );

LCD_Delay(10);

        CheckDrvId = (kal_uint16)DrvId;

        /*read LCD driver ID */

        *(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR = 0x00;//zzh

      //  *(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR = 0x00; //zzh

        LCD_Delay(5);

        dummyid = ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR )<<8; //zzh

        dummyid|= ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR ); //zzh

        DrvId = ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR )<<8;

        DrvId |= ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR );

LCD_Delay(10);

        CheckDrvlcdId = (kal_uint16)DrvId;

        *(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR = 0xd3;

        LCD_Delay(5);

        dummyid = ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR )<<8;           //ILI9163 xx

        dummyid|= ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR );               //ILI9163 91

        DrvId = ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR )<<8;              //ILI9163 63

        DrvId |= ( *(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR );                  //ILI9163 xx

LCD_Delay(10);

ReadDrvId = (kal_uint16)(((dummyid<<8)&0xff00) |((DrvId >>8)&0x00ff));  

回复logical 14:35:38

这个就是代码  

回复光辉岁月—驱动 14:36:27

地址要不要写高低位的?  

回复光辉岁月—驱动 14:36:33

就是最高位写0X00  

回复光辉岁月—驱动 14:36:41

然后低8位写0X04  

回复logical 14:37:03

不需要  

回复logical 14:37:07

8位即可  

回复光辉岁月—驱动 14:37:10

你现在要读的是哪一个ID?  

回复光辉岁月—驱动 14:37:16

就是这个0X04?  

回复logical 14:37:20

代码上能看到是8位指针  

回复logical 14:37:36

应该是最后一个,0xd3  

回复logical 14:39:08

sxyang trace:Selected lcd_check_drv_id CheckDrvId=8026,ReadDrvId=2626

sxyang trace:Selected lcd_check_drv_id ReadDrvId=2626 CheckDrvlcdId 0x2626

  

回复logical 14:39:16

不管怎么改都是这个打印  

回复logical 14:39:52

正确的应该是sxyang trace:Selected lcd_check_drv_id CheckDrvId=8066,ReadDrvId=9163

sxyang trace:Selected lcd_check_drv_id ReadDrvId=9163 CheckDrvlcdId 0x6666  

回复光辉岁月—驱动 14:42:15

dummyid 这些你定义是KAL_UINT8 还是KAL_UINT16?  

回复logical 14:44:14

      kal_uint32 DrvId,dummyid;

    kal_uint16 CheckDrvId,ReadDrvId,CheckDrvlcdId;  

回复光辉岁月—驱动 14:44:55

你将每一个读出来的数都打出来看一下  

回复光辉岁月—驱动 14:45:02

不要你组合的数据  

回复logical 14:47:10

组合的数据不会出错  

回复logical 14:47:18

我再检查下reset  

回复光辉岁月—驱动 14:49:31

你这个板用其它的LCD有没有问题  

回复光辉岁月—驱动 14:49:53

你查一下他们给你的屏是16位的还是8位的?  

回复logical 14:50:50

别的板子用过这块屏,点起来正常  

回复光辉岁月—驱动 14:51:10

你这块板用过其它的屏能行不?  

回复光辉岁月—驱动 14:51:21

你这是35的还是25的?  

回复logical 14:51:22

同样的代码另一项目就不行  

回复logical 14:51:26

还没有呢  

回复logical 14:51:28

23C  

回复光辉岁月—驱动 14:52:06

你的READ线有没有联过去?  

回复光辉岁月—驱动 14:53:14

{

kal_uint16 value1,value2,value3,value4=0;

kal_uint8 low=0;

kal_uint8 high=0;

*(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR=0;

Delay_us(10);

*(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR=0;

Delay_us(10);

high=*(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR;

Delay_us(10);

low=*(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR;

value1=(high<<8)|low;

*(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR=0x0067;

Delay_us(10);

*(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR=0x0067;

Delay_us(10);

high=*(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR;

Delay_us(10);

low=*(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR;

value2=(high<<8)|low;

      *(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR=0x0093;

     Delay_us(10);

     *(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR=0x0093;

     Delay_us(10);

     high=*(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR;

     Delay_us(10);

     low=*(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR;

     value3=(high<<8)|low;

      *(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR=0x0004;

     Delay_us(10);

     *(volatile kal_uint8 *)MAIN_LCD_CMD_ADDR=0x0004;

     Delay_us(10);

     high=*(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR;

     Delay_us(10);

     low=*(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR;

     value4=(high<<8)|low;  

回复光辉岁月—驱动 14:53:18

看一下我这个  

回复光辉岁月—驱动 14:53:31

void   Delay_us(kal_uint32 times)

{

kal_uint32 delay1;

kal_uint8   delay2;

       for(delay1=0;delay1<times;delay1++)

     for(delay2=0;delay2<4;delay2++){ }  // about 1us

}  

回复netmark 14:58:48

23c只能接8位屏

回复logical 15:02:32

光辉 它读代码的顺序和你的有差别  

回复netmark 15:03:09

netmark(7073640) 14:58:48

23c只能接8位屏  

回复netmark 15:03:17

确定是8位屏  

回复logical 15:03:43

恩  

回复logical 15:04:11

IC支持16位总线,但用的是8位模式  

回复光辉岁月—驱动 15:05:29

你这要跟屏厂确应一下  

回复光辉岁月—驱动 15:05:35

他们有可能搞错了  

回复logical 15:06:43

这个IC比较特别  

回复logical 15:06:46

9163  

回复netmark 15:08:21

ic是没用的,要看屏规格书 spec  

回复logical 15:12:57

光辉 high<<8位  什么值  

回复光辉岁月—驱动 15:13:33

ID是16位的  

回复logical 15:13:41

知道  

回复光辉岁月—驱动 15:13:42

先读出来的是高位  

回复光辉岁月—驱动 15:13:52

后读出来是低位  

回复logical 15:14:02

8位变量移动八位,得什么值  

回复光辉岁月—驱动 15:16:07

应当要写16位的  

回复光辉岁月—驱动 15:16:12

我写错了,呵呵  

回复光辉岁月—驱动 15:16:21

但是现在没有出错,.可能我没有注意  

回复logical 15:16:59

看来我的改成16位了  

回复
logical 15:32:54


回复
logical 15:33:08
硬件已经做死 只能是8位了  
光辉岁月—驱动 15:36:33  这个芯片可以用16位也可以用8位
回复光辉岁月—驱动 15:36:50  哪你现在在使用时是在硬件上是用8位的吗?   回复光辉岁月—驱动 15:37:09  好像我记得有一个IM的IO口要接吧,这是屏厂做的事   回复光辉岁月—驱动 15:37:17  你们他们点给你看   回复光辉岁月—驱动 15:37:34  还有你在其它的板上能用这个屏,哪个板是8位的还是16位的?   回复光辉岁月—驱动 15:37:46  实在不行,你换一个厂家的屏试一下   回复logical 15:38:09  屏没有问题,放在另一个项目上很正常   15:38:29
就是ID一直读不对,读写有问题
回复
netmark 15:40:39
读出来时什么
回复
netmark 15:40:45

回复
光辉岁月—驱动 15:41:17
会不会你的PCB板的IO口与你的屏不是一一对应的?
回复
netmark 15:41:30
   
回复
logical 15:41:39

回复
logical 15:41:49
硬件查过了,没有问题
回复
netmark 15:42:03
你读出来是什么值
回复
netmark 15:42:20
ic的id是多少
回复
netmark 15:43:36
点屏应该是很简单的,呵
到你那里咋这么复杂了
回复
logical 15:43:42
应该是9163
回复
logical 15:43:46

回复
logical 15:43:58
屏是没什么好点的
回复
logical 15:44:03
分析问题呢
回复
菜鸟 15:45:17
是不是有个LCD_RD脚啊?
回复
netmark 15:45:44
那你读出来是多少
回复
logical 15:46:59
2626 全重复的
回复
netmark 15:47:55
好像没规律
回复
netmark 15:47:59
没辙了
回复
logical 16:28:54
娘的 疯了
回复
logical 16:29:02
光辉 找到原因了
回复
光辉岁月—驱动 16:29:09
什么问题?
回复
光辉岁月—驱动 16:29:17
  
回复
logical 16:29:24
sensor插反了。
回复
光辉岁月—驱动 16:29:41
哦,硬件问题
回复
光辉岁月—驱动 16:29:43
哈哈
回复
光辉岁月—驱动 16:30:07
你的CAMERA也接上了?你就不知道屏搞好后在搞CAMERA
回复
光辉岁月—驱动 16:30:26
我们开始就怀疑是硬件问题,你说你们的硬件查了没有问题了
回复
logical 16:34:25
只查了屏的问题
回复
logical 16:35:08
实际上以前都搞好了,重新布了板,白屏,才调的  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top