改时序时,LCD读ID只有第一个字节正确后面的都是重复的,可能是什么问题
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
实际上以前都搞好了,重新布了板,白屏,才调的