CPLD驱动4.3寸TFT显示颜色问题
各位DX好,刚开始接触CPLD。参考这位DX的代码,驱动我的4.3寸TFT,分辨率为480*272。
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4180358&bbs_page_no=1&search_mode=4&search_text=wso75839840&bbs_id=9999
代码就改了一下。换了一个时钟。我是的54M的。
用STM32驱动的,送入CPLD数据为16位。SRAM这512K的。
下面是我STM32的代码。
1. 当写入65280个点(一半的屏)为红色。再写入32640个点(4分之一屏)为蓝色。
显示的时候上半屏正常,但下面的4分之一不是蓝色,而是紫色。
我换了其它颜色也是。感觉第一次的颜色总是保留下来了。
开始我以为是CPLD刷数据时,buffer没有清0.后面改了一下还是这样。
不知道为什么。
2. 如果要显示前景色和背景色,是刷两次屏吗?第一次刷背景色,第二次定点刷前景色?
那样的话SRAM中就要保存两屏的数据了。是不是我想错了。
void Send_Data(u16 data,u8 n)
{
Set_Cs;
if(n==1) Set_Rs;
else if(n==0) Clr_Rs;
Data_Convert(data);
Clr_Cs;
}
void Data_Convert(u16 data)
{
//GPIOE->ODR=GPIOE->ODR|(data&0xF0)<<3;
//GPIOD->ODR=GPIOD->ODR|(data&0x0C)>>2;
//GPIOD->ODR=GPIOD->ODR|(data&0x03)<<14;
GPIOD->ODR=GPIOD->ODR|(data&0x0C)>>2;
GPIOD->ODR=GPIOD->ODR|(data&0x03)<<14;
GPIOE->ODR=GPIOE->ODR|(data&0x1FF0)<<3;
GPIOD->ODR=GPIOD->ODR|(data&0xE000)>>5;
}
void TFT_test(void)
{
u16 i;
u16 j;
for(i=0;i<65280;i++) //65280
{
Send_Data(0x001F,1);
for(j=0;j<50;j++);
}
//Send_Data(0x001F,0);
//for(j=0;j<50;j++);
for(i=0;i<32640;i++)
{
Send_Data(0xF800,1);
for(j=0;j<50;j++);
}
} lz
==============================你用什么芯片驱动的,能上个图片吗 www.mcutech.cncpld+sram 回复【1楼】flyforyou85
-----------------------------------------------------------------------
我是用EPM570驱动的,方案是PPA2001的方案,按照他的原理图画的板子。
问题解决了!呵呵,开始一直以为是CPLD程序的事,就一直查。
后来发现是STM32程序的问题。没次发数据的时候没有清0.
加两句就可以了。
void Data_Convert(u16 data)
{
GPIOD->ODR=0x0000;
GPIOE->ODR=0x0000;
GPIOD->ODR=GPIOD->ODR|(data&0x0C)>>2;
GPIOD->ODR=GPIOD->ODR|(data&0x03)<<14;
GPIOE->ODR=GPIOE->ODR|(data&0x1FF0)<<3;
GPIOD->ODR=GPIOD->ODR|(data&0xE000)>>5;
}
页:
[1]