📄 tftlcd_exp.c
字号:
/********************************************************
*
* Copyright (c) 2007, BeiJing EFLAG Technology Co., LTD.
* All rights reserved.
*
* 文件名称 : TFTLCD_Exp.c
* 摘 要 : TFTLCD实验
*
* 当前版本 :
* 作 者 :
* 完成日期 :
*
* 取代版本 :
* 原作者 :
* 修改内容 :
* 完成日期 :
*
********************************************************/
#include <cdefBF533.h>
#include <ccblkfn.h>
#include <sys/exception.h>
#include "Exp_Config.h"
#include "sys_res.h"
#include "sys_func.h"
//#define POLS 0x8000
//#define FLOW_AUTO 0x1000
#define PORT_CFG_OUTPUT_23FS 0x0010
unsigned char DisplayBuffer[262][960];
/********************************************************
*
* 函数名 : Init_CPLD
* 函数功能 : 配置CPLD
* 函数输入参数 :
* 函数输出 :
* 说明 :
*
********************************************************/
void Init_CPLD(void)
{
*pCtrlClrReg1 = 0xff;
Delay(0x100);
//*pCtrlSetReg2 = (0x03|1<<4);
//*pCtrlClrReg2 = (1<<4);
*pCtrlSetReg2 = 0x03; //Use TFT_CLK as PPI_CLK
Delay(0x100);
}
/********************************************************
*
* 函数名 : Init_PPI
* 函数功能 : 初始化PPI配置
* 函数输入参数 :
* 函数输出 :
* 说明 :
*
********************************************************/
void Init_PPI(void)
{
*pPPI_DELAY = 0xcb;//106 cycle delay before writing out data
*pPPI_COUNT = 959;//960 samples per line
//data length:8 bit,PPI_FS1 and 2 are treated as falling edge,2 to 3 external FS,non-ITU-R 656 mode,TX mode
//Output mode,unpacking enabled
*pPPI_CONTROL = POLS | PACK_EN | PORT_CFG_OUTPUT_23FS | XFR_TYPE | PORT_DIR;
ssync();
}
/********************************************************
*
* 函数名 : Init_DMA0_PPI
* 函数功能 : 初始化PPI DMA配置
* 函数输入参数 :
* 函数输出 :
* 说明 :
*
********************************************************/
void Init_DMA0_PPI(void)
{
*pDMA0_START_ADDR = DisplayBuffer;
*pDMA0_X_COUNT = 960/2;
*pDMA0_X_MODIFY = 2; //stride(in bytes) to take after each decrement
*pDMA0_Y_COUNT = 262;
*pDMA0_Y_MODIFY = 2;
//Flow autobuffer mode,clear prereceived data,2-dimenion,16 bit
*pDMA0_CONFIG = FLOW_AUTO | RESTART | DMA2D | WDSIZE_16;
ssync();
}
/********************************************************
*
* 函数名 : Init_Timer
* 函数功能 : 初始化Timer配置
* 函数输入参数 :
* 函数输出 :
* 说明 :
*
********************************************************/
void Init_Timer(void)
{
*pTIMER1_PERIOD = 1224;
*pTIMER1_WIDTH = 5;
//Run in emulation,use PWM_CLK to clock counter,Sample PPI_CLK pin
//count to end of period,PWM_OUT mode
*pTIMER1_CONFIG = EMU_RUN | CLK_SEL | TIN_SEL | PERIOD_CNT | PWM_OUT;
*pTIMER2_PERIOD = 320688;
*pTIMER2_WIDTH = 3672;
*pTIMER2_CONFIG = EMU_RUN | CLK_SEL | TIN_SEL | PERIOD_CNT | PWM_OUT;
ssync();
}
/********************************************************
*
* 函数名 : Init_DisplayBuf
* 函数功能 :
* 函数输入参数 :
* 函数输出 :
* 说明 :
*
********************************************************/
void Init_DisplayBuf(void)
{
unsigned int i,j;
for(i=0;i<=261;i++)
{
for(j=0;j<20;j++)
{
DisplayBuffer[i][j*3+0] = 0x77;
DisplayBuffer[i][j*3+1] = 0x00;
DisplayBuffer[i][j*3+2] = 0x00;
}
for(j=40;j<80;j++)
{
DisplayBuffer[i][j*3+0] = 0xff;
DisplayBuffer[i][j*3+1] = 0x55;
DisplayBuffer[i][j*3+2] = 0x00;//red
}
for(j=80;j<120;j++)
{
DisplayBuffer[i][j*3+0] = 0x00;
DisplayBuffer[i][j*3+1] = 0xff;
DisplayBuffer[i][j*3+2] = 0x00;//green
}
for(j=120;j<160;j++)
{
DisplayBuffer[i][j*3+0] = 0x00;
DisplayBuffer[i][j*3+1] = 0x00;
DisplayBuffer[i][j*3+2] = 0xff;//blue
}
for(j=160;j<200;j++)
{
DisplayBuffer[i][j*3+0] = 0xff;
DisplayBuffer[i][j*3+1] = 0xff;
DisplayBuffer[i][j*3+2] = 0x0;//red+green
}
for(j=200;j<240;j++)
{
DisplayBuffer[i][j*3+0] = 0x00;
DisplayBuffer[i][j*3+1] = 0xff;
DisplayBuffer[i][j*3+2] = 0xff;//red+blue
}
for(j=240;j<280;j++)
{
DisplayBuffer[i][j*3+0] = 0xff;
DisplayBuffer[i][j*3+1] = 0x00;
DisplayBuffer[i][j*3+2] = 0xff;//green+blue
}
for(j=280;j<320;j++)
{
DisplayBuffer[i][j*3+0] = 0xff;
DisplayBuffer[i][j*3+1] = 0xff;
DisplayBuffer[i][j*3+2] = 0xff;
}
}
}
/********************************************************
*
* 函数名 : Start_imageIn_fromPPI1
* 函数功能 : 使能DMA和PPI
* 函数输入参数 :
* 函数输出 :
* 说明 :
*
********************************************************/
void Start_TFTLCD_fromPPI(void)
{
*pDMA0_CONFIG |= 1;
Init_Timer();
*pPPI_CONTROL |= 1;
*pTIMER_ENABLE= 0x0006;//enable timer
}
/********************************************************
*
* 函数名 : TFTLCD_Exp
* 函数功能 :
* 函数输入参数 :
* 函数输出 :
* 说明 :
*
********************************************************/
void TFTLCD_Exp(void)
{
unsigned char color_index = 0;
Init_CPLD();
Init_PPI();
Init_DMA0_PPI();
Init_DisplayBuf();
Start_TFTLCD_fromPPI();
while (1)
{
asm("nop;");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -