⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tftlcd_exp.c

📁 ADI blackfin DSP bf533 TFTLCD 340*240,基于亿旗的开发平台
💻 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 + -