在线时间37 小时
UID2087604
注册时间2014-4-22
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 303
- 最后登录
- 2021-11-15
|

楼主 |
发表于 2015-9-18 18:28:18
|
显示全部楼层
Flexbus LCD例程只提供写点接口,但没有读点接口,移植emWin时需要读点,画点很OK,自己写了一个读点函数,读回来的数据都不对,相当抑郁。
int16_t iTftLcmDrawPixel(uint16_t uiRgbCode, uint16_t uiPosX, uint16_t uiPosY)
{
if ((uiPosX >= TFT_LCD_WIDTH_PIXEL) || (uiPosY >= TFT_LCD_HEIGHT_PIXEL))
return API_NULL;
prvTftLcdWrtCmd(0x2A);
prvTftLcdWrtData(uiPosX >> 8);
prvTftLcdWrtData(uiPosX & 0xFF);
prvTftLcdWrtCmd(0x2B);
prvTftLcdWrtData(uiPosY >> 8);
prvTftLcdWrtData(uiPosY & 0xFF);
prvTftLcdWrtCmd(0x2C);
prvTftLcdWrtData(uiRgbCode);
return API_SUCC;
}
int16_t iTftLcmReadPixel(uint16_t *puiRgbCode, uint16_t uiPosX, uint16_t uiPosY)
{
if (NULL == puiRgbCode)
return API_SUCC;
if ((uiPosX >= TFT_LCD_WIDTH_PIXEL) || (uiPosY >= TFT_LCD_HEIGHT_PIXEL))
return API_NULL;
prvTftLcdWrtCmd(0x2A);
prvTftLcdWrtData(uiPosX >> 8);
prvTftLcdWrtData(uiPosX & 0xFF);
//prvTftLcdWrtData(uiPosX >> 8);
//prvTftLcdWrtData(uiPosX & 0xFF);
prvTftLcdWrtCmd(0x2B);
prvTftLcdWrtData(uiPosY >> 8);
prvTftLcdWrtData(uiPosY & 0xFF);
//prvTftLcdWrtData(uiPosY >> 8);
//prvTftLcdWrtData(uiPosY & 0xFF);
prvTftLcdWrtCmd(0x2E);
*puiRgbCode = *(volatile uint16_t *)TFT_LCD_DATA_ADDR; // dummy read
*puiRgbCode = *(volatile uint16_t *)TFT_LCD_DATA_ADDR;
return API_SUCC;
}
void vTftLcmWriteRead(void)
{
uint32_t ulIdx;
uint16_t uiWrite[7] = {0xF800, 0x07E0, 0x001F, 0xFF00, 0x00FF, 0xFFFF, 0x0000};
uint16_t uiRead[7] = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};
for (ulIdx = 0; ulIdx < 7; ++ulIdx)
{
iTftLcmDrawPixel(uiWrite[ulIdx], (10+ulIdx), 20);
iTftLcmReadPixel(&uiRead[ulIdx], (10+ulIdx), 20);
}
ulIdx = 0;
}
阿莫论坛有人提及每次都"读点的时候要设置读取的点的坐标",可正常读,可这也是每次读时都设置点地址了,却永远不成功。 |
|