128X160的屏,显示在屏上面,只显示上半部分,而且是两个画面
调屏时遇到的问题,请教一下。
128X160的屏,显示在屏上面,只显示上半部分,而且是两个画面
回复
leaf 15:24:39
本来应该整屏显示的画面,只显示了1/4个屏大小,显示两幅,另外的半个屏是花屏
希望遇到过类似问题的朋友给点提示
回复
leaf 15:25:42
回复
leaf 15:27:31
大周末的,加班多不容易,怎么就没有人给句话呢?
回复
sea_fly 15:28:58
8位,16位?
回复
leaf 15:29:48
用的是低8位
回复
leaf 15:35:08
没有遇到过类似问题的吗?都是阅屏无数的高手阿
回复
leaf 15:37:22
改了好久了,就是没效果
回复
leaf 15:38:28
在另外一个版本的包上,原封不动的驱动,用同一块板子能够正常显示;换到这个包上就显示成上面描述的画面了
回复
Eagle 15:38:43
我现在也遇到这样的问题
回复
Eagle 15:38:54
不过是有大小屏的
回复
leaf 15:39:04
哦?什么屏?
回复
Eagle 15:39:09
现在怀疑是时序有问题
回复
Eagle 15:39:12
9335的
回复
leaf 15:39:36
我的是ST7335
回复
leaf 15:41:47
时序问题?那要修改哪里呢?没有思路的感觉
回复
Eagle 15:42:03
是呀
回复
Eagle 15:42:07
现在还在尝试
回复
Eagle 15:42:19
我现在在该interface
回复
sea_fly 15:42:43
SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)1);
SET_LCD_PARALLEL_CE2WR_HOLD_TIME(1);
SET_LCD_PARALLEL_CE2RD_SETUP_TIME(1);
SET_LCD_PARALLEL_WRITE_WAIT_STATE(4);
SET_LCD_PARALLEL_READ_LATENCY_TIME(10);
SET_LCD_ROI_CTRL_CMD_LATENCY(4);
回复
光辉岁月—驱动 15:42:48
你的是8位还是16位?
回复
leaf 15:42:51
好啊,我们一齐努力,多交流
回复
光辉岁月—驱动 15:43:19
如果是以前这个版本是16位,你现在修改为8位,哪么你就要将16位修改为8位,然后R CUSTOM 是不行的
leaf 15:43:58
硬件上只接了低八位,代码写成了16位,高八位都是0
回复
leaf 15:44:09
那要怎样编译?new?
回复
sea_fly 15:36:49
估计是blockwrite有问题
回复
光辉岁月—驱动 15:45:03
你发一个LCD——SW。H给我们看一下吧
回复
╃yorke 15:46:48
对啊 16位的代码怎么可以用在8位的板子上呢
回复
╃yorke 15:47:43
其实就是把16位的 放在两个8位的寄存器里就行了啊
回复
光辉岁月—驱动 15:49:47
NEW一下下载试试
回复
leaf 15:50:05
好吧
回复
光辉岁月—驱动 15:50:09
只要将#define MAIN_LCD_8BIT_MODE
回复
光辉岁月—驱动 15:50:14
然后NEW
回复
leaf 15:51:00
如果我写成16位的,初始化能够成功,不就是说明能够正常读写了吗?
回复
╃yorke 15:52:23
Init是OK啊 但是blockwrite就有问题了
回复
leaf 15:53:29
因为位数错了?我理解的是:位数错了就不能够正常通信,出来就应该是白屏
回复
光辉岁月—驱动 15:55:50
你不是有一个软件是正常的吧
回复
光辉岁月—驱动 15:55:55
你比对一下就行了
回复
leaf 15:55:56
#if (defined(MT6217) || defined(MT6218B) || defined(MT6219) || defined(MT6225) || defined(MT6226) || defined(MT6226M) || defined(MT6227))
#define LCD_CMD_DMA_MODE //remove it tmp;20070702
#define LCD_16BIT_MODE
// #define LCD_8BIT_MODE
#define LCD_DUMMYADDR (0x90000000)
#define LCD_HX8306A_CTRL_ADDR LCD_PARALLEL0_A0_LOW_ADDR
#define LCD_HX8306A_DATA_ADDR LCD_PARALLEL0_A0_HIGH_ADDR
#define MAIN_LCD_CMD_ADDR LCD_HX8306A_CTRL_ADDR
#define MAIN_LCD_DATA_ADDR LCD_HX8306A_DATA_ADDR
#ifdef LCD_16BIT_MODE
#define MAIN_LCD_OUTPUT_FORMAT LCM_16BIT_16_BPP_RGB565_1
#else
#define MAIN_LCD_OUTPUT_FORMAT LCM_8BIT_16_BPP_RGB565_1
#endif
#endif
/***********************S1D15G00********************************/
/*HIMAX, 262K Color LCD, Parallel Interface, Pxtel development board*/
#if (defined(MT6217) || defined(MT6218B) || defined(MT6219) || defined(MT6225) || defined(MT6226) || defined(MT6226M) || defined(MT6227))
#ifdef LCD_CMD_DMA_MODE
#define LCD_SEND_DMA_CMD(n) \
{\
while (LCD_IS_RUNNING);\
DISABLE_LCD_TRANSFER_COMPLETE_INT;\
DISABLE_ALL_LCD_LAYER_WINDOW;\
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(n);\
ENABLE_LCD_ROI_CTRL_CMD_FIRST;\
SET_LCD_ROI_WINDOW_SIZE(0, 0);\
START_LCD_TRANSFER;\
while (LCD_IS_RUNNING);\
}
#ifdef LCD_16BIT_MODE
#define LCD_CtrlWrite_HX8306A(_data) \
{\
SET_LCD_CMD_PARAMETER(0, LCD_CMD, _data);\
LCD_SEND_DMA_CMD(1);\
}
#define LCD_DataWrite_HX8306A(_data) \
{\
SET_LCD_CMD_PARAMETER(0, LCD_DATA, _data);\
LCD_SEND_DMA_CMD(1);\
}
#define LCD_delay_HX8306A()
#define LCD_CtrlWrite_HX8306A_ESD(_data) \
{\
*(volatile kal_uint32 *) LCD_HX8306A_CTRL_ADDR = _data;\
LCD_delay_HX8306A();\
}
#define LCD_DataWrite_HX8306A_ESD(_data) \
{\
*(volatile kal_uint32 *) LCD_HX8306A_DATA_ADDR = _data;\
LCD_delay_HX8306A();\
}
#elif (defined(LCD_8BIT_MODE))
#define myLCD_delay_HX8306A() \
{\
volatile kal_uint16 iI; \
for (iI = 0; iI < 0x20; iI++);\
}
#define LCD_CtrlWrite_HX8306A(_data) \
{\
SET_LCD_CMD_PARAMETER(0, LCD_CMD, (_data >> 8));\
LCD_SEND_DMA_CMD(1);\
myLCD_delay_HX8306A();\
SET_LCD_CMD_PARAMETER(0, LCD_CMD, (_data & 0x00FF));\
LCD_SEND_DMA_CMD(1);\
}
#define LCD_DataWrite_HX8306A(_data) \
{\
SET_LCD_CMD_PARAMETER(0, LCD_DATA, (_data >> 8));\
LCD_SEND_DMA_CMD(1);\
myLCD_delay_HX8306A();\
SET_LCD_CMD_PARAMETER(0, LCD_DATA, (_data & 0x00FF));\
LCD_SEND_DMA_CMD(1);\
}
#define LCD_delay_HX8306A()
#define LCD_CtrlWrite_HX8306A_ESD(_data) \
{\
*(volatile kal_uint8 *) LCD_HX8306A_CTRL_ADDR = (_data >> 8);\
*(volatile kal_uint8 *) LCD_HX8306A_CTRL_ADDR = (_data & 0x00FF);\
LCD_delay_HX8306A();\
}
#define LCD_DataWrite_HX8306A_ESD(_data) \
{\
*(volatile kal_uint8 *) LCD_HX8306A_DATA_ADDR = (_data >> 8);\
*(volatile kal_uint8 *) LCD_HX8306A_DATA_ADDR = (_data & 0x00FF);\
LCD_delay_HX8306A();\
}
#endif /* LCD_16BIT_MODE */
回复
leaf 15:56:06
#else /* LCD_CMD_DMA_MODE */
#ifdef LCD_16BIT_MODE
#define LCD_delay_HX8306A()
#define LCD_CtrlWrite_HX8306A(_data) \
{\
*(volatile kal_uint32 *) LCD_HX8306A_CTRL_ADDR = ((_data & 0xFF00) << 2) | ((_data & 0xFF) << 1);\
LCD_delay_HX8306A();\
}
#define LCD_DataWrite_HX8306A(_data) \
{\
*(volatile kal_uint32 *) LCD_HX8306A_DATA_ADDR = ((_data & 0xFF00) << 2) | ((_data & 0xFF) << 1);\
LCD_delay_HX8306A();\
}
#elif (defined(LCD_8BIT_MODE))
#define myLCD_delay_HX8306A() \
{\
volatile kal_uint16 iI; \
for (iI = 0; iI < 0x20; iI++);\
}
#define LCD_CtrlWrite_HX8306A(_data) \
{\
*(volatile kal_uint8 *) LCD_HX8306A_CTRL_ADDR = (_data >> 8);\
myLCD_delay_HX8306A(); \
*(volatile kal_uint8 *) LCD_HX8306A_CTRL_ADDR = (_data & 0x00FF);\
myLCD_delay_HX8306A(); \
}
#define LCD_DataWrite_HX8306A(_data) \
{\
*(volatile kal_uint8 *) LCD_HX8306A_DATA_ADDR = (_data >> 8);\
myLCD_delay_HX8306A(); \
*(volatile kal_uint8 *) LCD_HX8306A_DATA_ADDR = (_data & 0x00FF);\
myLCD_delay_HX8306A(); \
}
#endif /* LCD_16BIT_MODE */
#endif /* LCD_CMD_DMA_MODE */
#define LCD_DataRead_HX8306A (*(volatile kal_uint32 *)LCD_HX8306A_DATA_ADDR);
#endif
#endif /*_LCD_SW_H*/
回复
leaf 15:56:39
lcd驱动部分一模一样
回复
leaf 15:57:10
别的代码差别就大了,不好对比
回复
光辉岁月—驱动 15:57:14
你怎么还是定义为16位的?
回复
光辉岁月—驱动 15:57:22
你不是说是8位吗?
回复
光辉岁月—驱动 15:57:59
回复
leaf 15:58:11
修改之前的。设置成16位在另外一个包里面显示正常的
回复
leaf 15:58:18
所以就一直保留了
回复
光辉岁月—驱动 15:58:39
你这个是8位还是16位?
回复
光辉岁月—驱动 15:58:45
如果是8位就设置为8
回复
leaf 15:58:48
8位数据线,16位的寄存器,可以这样理解吗?这里的16设置的是什么?
回复
光辉岁月—驱动 15:58:59
写两次
回复
光辉岁月—驱动 15:59:04
第一次写高位
回复
sea_fly 15:59:06
晕倒,那肯定定义成8位
回复
光辉岁月—驱动 15:59:09
第二次写低位
光辉岁月—驱动 15:59:13
我的天,,,,,,,,,,,
回复
sea_fly 15:59:23
回复
leaf 15:59:31
回复
sea_fly 15:59:45
新手
回复
leaf 16:00:01
还真不是。
回复
leaf 16:00:21
8位的没点亮,16位的点亮了,就没追究
回复
╃yorke 16:00:21
那是...
回复
leaf 16:00:46
现在又出问题了,再回头来看,觉得奇怪
回复
L.G 16:01:42
回复
leaf 16:02:10
把8位的写成16位会出现我描述的现象吗?屏被划成好几块?
回复
光辉岁月—驱动 16:02:35
当然有可能,你写一次写的只有一半
回复
sea_fly 16:03:02
你用8位和16位数据线,代码写的不一样的,用一套代码怎么行
回复
leaf 16:04:18
同一块板子,两个代码包上的同一套驱动(lcd文件夹中内容完全一致),一个正常一个不正常
回复
sea_fly 16:06:25
16位,你一次写两个字节,8位是一次一个字节
回复
leaf 16:07:18
后面的ctrlwrite和datawrite函数定义不需要修改了吧?
回复
leaf 16:07:45
有道理。我new过后看看结果
回复
光辉岁月—驱动 16:11:18
你是用16位NEW,还是用8位NEW?
回复
leaf 16:12:25
8位
回复
leaf 16:16:14
LCM_8BIT_16_BPP_RGB565_1这里面的8和16分别代表什么?
回复
leaf 16:16:25
8位数据线,16呢?
回复
leaf 16:16:44
寄存器的为数在哪里设置呢?需要设置吗?
回复
sea_fly 16:17:03
回复
╃yorke 16:17:14
寄存器的为数应该是平台决定的吧
回复
leaf 16:18:18
从规格书上看,lcdc有8位寄存器和16位寄存器的区别吧?
回复
leaf 16:18:45
有些ic是16位寄存器,不是吗?
回复
L.G 16:18:49
原理图那边好像有标
回复
leaf 16:19:36
这个需要在软件代码里体现出来吗?在哪里体现呢?
回复
Eagle 17:30:46
在MTK怎么区分主副屏?
:):):)
