|
发表于 2014-6-14 10:58:56
|
显示全部楼层
V2和V3开发板用的RA8875驱动有段时间没有更新了,看这个V5开发板上的这个函数吧,解决了这个问题:
/*
*********************************************************************************************************
* 函 数 名: RA8875_DrawLine
* 功能说明: 采用RA8875的硬件功能,在2点间画一条直线。
* 形 参:
* _usX1, _usY1 :起始点坐标
* _usX2, _usY2 :终止点Y坐标
* _usColor :颜色
* 返 回 值: 无
*********************************************************************************************************
*/
void RA8875_DrawLine(uint16_t _usX1 , uint16_t _usY1 , uint16_t _usX2 , uint16_t _usY2 , uint16_t _usColor)
{
/* pdf 第131页
RA8875 支持直线绘图功能,让使用者以简易或低速的MCU 就可以在TFT 模块上画直线。先设
定直线的起始点REG[91h~94h] 与结束点REG[95h~98h],直线的颜色REG[63h~65h],然后启
动绘图设定REG[90h] Bit4 = 0, Bit0=0 且REG[90h] Bit7 = 1,RA8875 就会将直线的图形写入
DDRAM,相对的在TFT 模块上就可以显示所画的直线。
*/
if ((_usX1 == _usX2) && (_usY1 == _usY2))
{
RA8875_PutPixel(_usX1, _usY1, _usColor);
return;
}
/* 设置起点坐标 */
RA8875_WriteReg(0x91, _usX1);
RA8875_WriteReg(0x92, _usX1 >> 8);
RA8875_WriteReg(0x93, _usY1);
RA8875_WriteReg(0x94, _usY1 >> 8);
/* 设置终点坐标 */
RA8875_WriteReg(0x95, _usX2);
RA8875_WriteReg(0x96, _usX2 >> 8);
RA8875_WriteReg(0x97, _usY2);
RA8875_WriteReg(0x98, _usY2 >> 8);
RA8875_SetFrontColor(_usColor); /* 设置直线的颜色 */
s_ucRA8875Busy = 1;
RA8875_WriteReg(0x90, (1 << 7) | (0 << 4) | (0 << 0)); /* 开始画直线 */
// while (RA8875_ReadReg(0x90) & (1 << 7)); /* 等待结束 */
RA8875_WaitBusy();
s_ucRA8875Busy = 0;
} |
|