微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 调个屏,不管怎么改都只能刷一部分图像出来

调个屏,不管怎么改都只能刷一部分图像出来

时间:10-02 整理:3721RD 点击:
logical 15:00:33
调个屏,不管怎么改都只能刷一部分图像出来
回复
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

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

网站地图

Top