|
各位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++);
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|