环境:
硬件:LT7683
emwin:V6.16
LCD:800X480 RGB
接口:FSMC8080 16bit->RGB M565
现象:字体只显示红色,不能显示其他颜色;彩条能正常输出
颜色设置(0x0000FF)能输出正确的字体,更换(0xFF0000)输出不正确;
红色正常显示
蓝色只有两个点出现,其余字体没有出现
LT7683的EMwin驱动,主要依照RA8875修改
static void _SetPixelIndex(GUI_DEVICE * pDevice, int x, int y, LCD_PIXELINDEX PixelIndex)
LT768_DrawPixel(xPhys, yPhys, PixelIndex);
static LCD_PIXELINDEX _GetPixelIndex(GUI_DEVICE * pDevice, int x, int y)
PixelIndex = LT768_GetPixel(xPhys, yPhys);
static void _FillRect(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1)
PixelIndex = LCD__GetColorIndex();
LT768_DrawSquare_Fill(x0, y0, x1, y1, PixelIndex);
调用的画像素和读取像素函数,经过测试能够正确读取和写入
[C] 纯文本查看 复制代码 void LT768_DrawPixel(
unsigned short x // x坐标
,unsigned short y // y坐标
,unsigned short Color // 像素颜色
)
{
Goto_Pixel_XY(x, y);
pstLt768xDev2->writeReg(0x04);
pstLt768xDev2->writeDataPixel(Color & 0xF800);
Check_Mem_WR_FIFO_not_Full();
pstLt768xDev2->writeDataPixel(Color & 0x07E0);
Check_Mem_WR_FIFO_not_Full();
pstLt768xDev2->writeDataPixel(Color & 0x001F);
Check_Mem_WR_FIFO_not_Full();
Check_Mem_WR_FIFO_Empty();
}
unsigned short LT768_GetPixel(
unsigned short x // x坐标
,unsigned short y // y坐标
)
{
unsigned short tmpColor = 0;
unsigned short tmpRed = 0;
unsigned short tmpGreen = 0;
unsigned short tmpBlue = 0;
Goto_Pixel_XY(x, y);
pstLt768xDev2->writeReg(0x04);
lt768x_LibDelayMs(1);
pstLt768xDev2->readData(); //发送空周期
lt768x_LibDelayMs(1);
tmpRed = pstLt768xDev2->readData();
Check_Mem_WR_FIFO_not_Full();
tmpGreen = pstLt768xDev2->readData();
Check_Mem_WR_FIFO_not_Full();
tmpBlue = pstLt768xDev2->readData();
Check_Mem_WR_FIFO_not_Full();
Check_Mem_WR_FIFO_Empty();
tmpColor = (tmpRed & 0xF800) | (tmpGreen & 0x07E0) | (tmpBlue & 0x001F);
return tmpColor;
}
程序
[C] 纯文本查看 复制代码
/* 初始 emWin */
GUI_Init();
/* 使能窗口使用内存设备 */
WM_SetCreateFlags(WM_CF_MEMDEV);
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
/* 设置前景色、字体大小 */
GUI_SetColor(0xFF0000);
GUI_SetFont(&GUI_Font24B_ASCII);
GUI_DispStringHCenterAt("COLOR_ShowColorBar - Sample", 160, 5);
// /* 显示色条 */
_DemoShowColorBar();
while(1)
{
GUI_Delay(10);
}
请问造成这个问题是在LT7683的底层函数、LT7683的EMWIN接口上、还是EMWIN哪里没有设置正确呢?
|