调个屏,不管怎么改都只能刷一部分图像出来
调个屏,不管怎么改都只能刷一部分图像出来
回复
logical 15:00:40
23D+DSP
回复
logical 15:00:52
另一块屏是好的
回复
Harrison 15:01:37
LCD是挂在EMI上吧
回复
logical 15:01:39
可以保证MV,MX,MY,SS,GS都是好的,IC是HX8367
回复
logical 15:01:41
恩
回复
Harrison 15:01:55
是不是FLASH的page mode打开了
回复
logical 15:02:32
flash参数和LCM有关?
回复
Harrison 15:03:05
我猜测是这样,你把page mode改一下0试一下
回复
logical 15:03:37
FLASH是指IC里面的GRAM吗?
回复
光辉岁月—驱动 15:05:32
什么有一块是好的?
回复
光辉岁月—驱动 15:05:38
是同一个屏?
回复
光辉岁月—驱动 15:05:43
同一种屏?
回复
Harrison 15:05:50
logical 15:05:58
2块屏 不同IC 一个好 一个不好
回复
Harrison 15:06:13
那就估计不是我说的
回复
Harrison 15:06:29
那可能就是屏的原因
回复
logical 15:07:00
这个项目上只需要用一块即可,我是拿另外的屏测试上层传过来的数据是否正常
回复
光辉岁月—驱动 15:07:16
能不能搞一张照片出来?
回复
logical 15:07:20
不大像
回复
光辉岁月—驱动 15:07:51
给搞一张照片,大家可能好讨论了
回复
logical 15:08:16
好
回复
netmark 15:18:59
一屏好一屏坏,那肯定是初始化代码有问题了
回复
logical 15:19:08
恩
回复
logical 15:19:23
就是一直在查初始化代码
回复
netmark 15:19:31
拿代码到25上调过了再来试
回复
光辉岁月—驱动 15:23:01
这个IC是什么分辩率的?
回复
光辉岁月—驱动 15:23:09
是哪一半显示不对?
回复
光辉岁月—驱动 15:23:14
给图片看一睛
回复
光辉岁月—驱动 15:23:19
用手机拍摄
回复
logical 15:26:42
logical 15:26:50
很模糊
回复
logical 15:27:05
左边部分区域可以显示图像
回复
光辉岁月—驱动 15:27:37
你这是横屏?
回复
logical 15:28:45
正常的,我横着拍了
回复
logical 15:29:16
初始化里面 刷单色是对的
回复
光辉岁月—驱动 15:29:30
你试一下将block write 函数return出来
回复
光辉岁月—驱动 15:29:53
然后刷单色,看能否刷全屏
回复
光辉岁月—驱动 15:30:06
这样可以测出你的INIT是否正常
回复
logical 15:30:58
你的意思是只刷一次吗
回复
光辉岁月—驱动 15:31:01
有可能是你的屏的MV MX MY SS GS有问题
回复
netmark 15:31:17
这还用讨论,不是init就是block
找屏要不就可以了
回复
logical 15:32:12
不会
回复
logical 15:32:35
我对照规格书半天不会错的
回复
光辉岁月—驱动 15:34:09
将BLOCK WRITE贴出来看一下
回复
logical 15:34:47
LCD_set_reg(0x0002,(startx&0x00ff)>>8);
LCD_set_reg(0x0003,(startx&0x00ff)>>8);
LCD_set_reg(0x0004,(endx&0x00ff)>>8);
LCD_set_reg(0x0005,(endx&0x00ff));
LCD_set_reg(0x0006,(starty&0x00ff)>>8);
LCD_set_reg(0x0007,(starty&0x00ff));
LCD_set_reg(0x0008,(endy&0x00ff)>>8);
LCD_set_reg(0x0009,(endy&0x00ff));
LCD_CtrlWrite(0x0022);
ENABLE_LCD_TRANSFER_COMPLETE_INT;
DISABLE_LCD_ROI_CTRL_CMD_FIRST;
while (LCD_IS_RUNNING) {};
START_LCD_TRANSFER;
}
回复
光辉岁月—驱动 15:35:34
有没有一个写X,Y的START的寄存器?\
回复
logical 15:35:47
02 -09啊
回复
光辉岁月—驱动 15:35:51
错了
回复
光辉岁月—驱动 15:35:59
LCD_set_reg(0x0006,(starty&0x00ff)>>8);
LCD_set_reg(0x0007,(starty&0x00ff));
回复
光辉岁月—驱动 15:36:06
这个就错了
回复
logical 15:36:16
void LCD_BlockWrite(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)
{
kal_uint16 roi_offset_x,roi_offset_y;
kal_uint16 roi_width,roi_height;
volatile kal_uint32 buff;
kal_uint32 gap_x, gap_y;
kal_int32 gap_left;
kal_int32 i;
while (LCD_IS_RUNNING){};
lcd_assert_fail = KAL_TRUE;
// myLCDDevice[gSelectedLCD].lcd_subType->BlockWrite(startx,starty,endx,endy);
ENABLE_LCD_TRANSFER_COMPLETE_INT;
DISABLE_LCD_ROI_CTRL_CMD_FIRST;
//while (LCD_IS_RUNNING) {};
START_LCD_TRANSFER;
while (LCD_IS_RUNNING) {};
#if 1
/ /ff = get_lcd_frame_buffer_address();
buff = (kal_uint32)p_test_buffer;
//DMA_WaitUntilRdy(1);
DMA_Stop_Now(1);
DMA_ACKI(1);
DRV_WriteReg32(DMA_SRC(1), (kal_uint32)buff);
DRV_WriteReg32(DMA_DST(1), (kal_uint32)MAIN_LCD_DATA_ADDR);
gap_x = endx-startx+1;
gap_y = endy-starty+1;
gap_left = gap_x * gap_y - 65520;
if (gap_left <= 0) //65520=240*273
{
DRV_WriteReg32(DMA_COUNT(1),(kal_uint16)(gap_x*gap_y));
(*(volatile kal_uint32 *)DMA_CON(1) )=DMA_CON_SIZE_SHORT|DMA_CON_SINC;
myLCDDevice[SelectedType_No].lcd_Type->BlockWrite( startx, starty, endx, endy);
DMA_Start(1);
DMA_WaitUntilRdy(1);
}else
{
DRV_WriteReg32(DMA_COUNT(1),(kal_uint16)(65520));
(*(volatile kal_uint32 *)DMA_CON(1) )=DMA_CON_SIZE_SHORT|DMA_CON_SINC;
myLCDDevice[SelectedType_No].lcd_Type->BlockWrite( startx, starty, endx, endy);
DMA_Start(1);
DMA_WaitUntilRdy(1);
/ cond transfer
DMA_Stop_Now(1);
DMA_ACKI(1);
DRV_WriteReg32(DMA_SRC(1), (kal_uint32)buff + 65520*2);
DRV_WriteReg32(DMA_DST(1), (kal_uint32)MAIN_LCD_DATA_ADDR);
DRV_WriteReg32(DMA_COUNT(1),(kal_uint16)gap_left);
(*(volatile kal_uint32 *)DMA_CON(1) )=DMA_CON_SIZE_SHORT|DMA_CON_SINC;
DMA_Start(1);
DMA_WaitUntilRdy(1);
}
回复
光辉岁月—驱动 15:36:17
LCD_set_reg(0x0006,(starty&0xff00)>>8);
回复
光辉岁月—驱动 15:36:45
LCD_set_reg(0x0002,(startx&0x00ff)>>8);
LCD_set_reg(0x0003,(startx&0x00ff)>>8);
LCD_set_reg(0x0004,(endx&0x00ff)>>8);
LCD_set_reg(0x0005,(endx&0x00ff));
LCD_set_reg(0x0006,(starty&0x00ff)>>8);
LCD_set_reg(0x0007,(starty&0x00ff));
LCD_set_reg(0x0008,(endy&0x00ff)>>8);
LCD_set_reg(0x0009,(endy&0x00ff));
LCD_CtrlWrite(0x0022);
ENABLE_LCD_TRANSFER_COMPLETE_INT;
DISABLE_LCD_ROI_CTRL_CMD_FIRST;
while (LCD_IS_RUNNING) {};
START_LCD_TRANSFER;
}
回复
光辉岁月—驱动 15:37:04
LCD_set_reg(0x0002,(startx&0xff00)>>8);
回复
光辉岁月—驱动 15:37:10
看到没有
回复
光辉岁月—驱动 15:37:15
高位和低位的事
回复
logical 15:39:28
我想想
回复
光辉岁月—驱动 15:39:37
YY
回复
光辉岁月—驱动 15:39:51
明显不对吧.你的高位与0相与
回复
光辉岁月—驱动 15:39:53
是0
回复
光辉岁月—驱动 15:39:59
然后左移8位
回复
光辉岁月—驱动 15:40:08
哪不是将0写进去吗?
回复
士心化十 15:40:51
光辉岁月—驱动
是对的,,
logical,看来逻辑混乱了
回复
logical 15:41:40
...
回复
光辉岁月—驱动 15:41:41
分辨率是多少?
回复
logical 15:41:47
240x320
回复
光辉岁月—驱动 15:41:49
240*320?
回复
logical 15:41:54
恩
回复
光辉岁月—驱动 15:41:55
哪你肯定错了,呵呵
回复
logical 15:42:37
我一直认为自己block函数没有问题,压根就没怀疑
回复
光辉岁月—驱动 15:43:05
这很正常,你自信
回复
士心化十 15:43:39
奇怪的是,你另外一块屏怎么会显示正常
难道是块小分辨率的屏
回复
光辉岁月—驱动 15:43:58
他是做兼容的
回复
光辉岁月—驱动 15:44:06
这个是分开写的对就在的BLOCK
回复
光辉岁月—驱动 15:44:10
所以没有问题
回复
光辉岁月—驱动 15:44:19
猜的
回复
logical 15:44:46
回复
logical 15:44:57
you are right
回复
logical 15:45:20
用的是蓝色部分总线
回复
光辉岁月—驱动 15:46:18
这个是硬件相关的,和你没什么关系,你只要知道是16位的就行了
回复
光辉岁月—驱动 15:46:22
你在做23D?
回复
logical 15:46:26
恩