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

📄 yuv.c

📁 瑞泰公司ICETEK-YUV图像子系统设计范例
💻 C
字号:
#define	I2C_REG 	0x1600004
#define SYSRREG	    0x160000c 
#define VPTR		0x1400000	
unsigned int * sdram_ptr;
/*******************************************************************************
* Function prototypes
*******************************************************************************/
unsigned int 	count; 
int ms_period = 1;                                   



/*******************************************************************************
* IIC Function prototypes
*******************************************************************************/
void start_i2c(void);
void stop_i2c(void);
void ack_i2c(void);
void write_i2c(unsigned char data);

void Init_7111(void);
void Init_7190(void);
void delay_msec(short msec);
unsigned char val713_1[25] = {	
				     0xf8,0xc0,0x33,0x00,0x00,0xe9,0x0d,
				0xb8,0x01,0x80,0x47,0x40,0x00,0x01,0x2a,
				0x00,0x0c,0x38,0x00,0x00};
unsigned char val713_2[4] = {
				0x00,0x00,0x00,0x00};

unsigned char val713_3[0x21] = {
				0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,							
				0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,							
				0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,							
				0x00,0x54,0x07,0x83,0xff,0xff,0x00,0x00};							

unsigned char val76[0x36] = {	
				0x11,0x20,0x62,0x00,0x00,0x00,0x00,0x00,
				0x04,0x00,0x08,0x00,0xcb,0x8a,0x09,0x2a,
				0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
				0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
				0x00,0x00,0x00,0x44,0x20,0x00,0xff,0xff,
				0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,0xff,0xff,0x70};
	
				

                                
/*******************************************************************************
* FUNCTION : main
*******************************************************************************/
int i,j,ii;
void initDisplay( void )
{

	for(i=0;i<0xff;i++)
	{
		start_i2c();
		stop_i2c();
		delay_msec(5);
	}	    
	Init_7190();
	for(j=0;j<0x5;j++)
		for(ii=0;ii<0x5;ii++);
	Init_7111();
/*	while(1){
		for(i=0;i<0x7fffff;i++);
			*(unsigned volatile int *)SYSRREG = 0x9;
		for(i=0;i<0x7fffff;i++);
			*(unsigned volatile int *)SYSRREG = 0xa;
		for(i=0;i<0x7fffff;i++);
			*(unsigned volatile int *)SYSRREG = 0xc;
		}*/
			

}
void delay_msec(short msec)
{
  
 	for(i=0;i<0x1000;i++);
}
void start_i2c(void)
{
	*(unsigned volatile int *)I2C_REG = 0x025;			/*	"00100101":sda,scl = '1' */
	delay_msec(1);
	*(unsigned volatile int *)I2C_REG = 0x024;			/*	"00100100":sda= '0',scl = '1' */
	delay_msec(1);
}
void stop_i2c(void)
{	
	*(unsigned volatile int *)I2C_REG = 0x024;			/*	"00100101":sda = '0',scl = '1' */
	delay_msec(1);
	*(unsigned volatile int *)I2C_REG = 0x025;			/*	"00100101":sda,scl = '1' */
	delay_msec(1);
}		
void ack_i2c(void)
{
	*(unsigned volatile int *)I2C_REG = 0x020;			/*	"00100101":sda='z',scl = '0' */
	*(unsigned volatile int *)I2C_REG = 0x022;			/*	"00100101":sda='z',scl = '0' */
	delay_msec(1);
	*(unsigned volatile int *)I2C_REG = 0x026;			/*	"00100101":sda='z',scl = '1' */
	delay_msec(1);
	*(unsigned volatile int *)I2C_REG = 0x022;			/*	"00100101":sda='z',scl = '0' */
	delay_msec(1);
	*(unsigned volatile int *)I2C_REG = 0x021;			/*	"00100101":sda='1',scl = '0' */
	delay_msec(1);
}	
void write_i2c(unsigned char data)
{
	unsigned char BitCounter = 8;
	unsigned char temp;
	unsigned int reg_val;
	
	reg_val = 0x020;
	*(unsigned volatile int *)I2C_REG = 0x20;			/*SCL 置低 sda 置低*/
	delay_msec(1);										/*延时*/
	do{
		temp = data;
		reg_val &= 0x0fffffffb;
		*(unsigned volatile int *)I2C_REG = reg_val;	/*SCL 置低*/
		delay_msec(1);									/*延时*/
		
		if((temp&0x80)==0x80)
			reg_val |= 0x01;							/*如果最高位是1*/
		else
			reg_val &= 0x0fffffe;
		*(unsigned volatile int *)I2C_REG = reg_val;		/*设置SDA*/
		delay_msec(1);									/*延时*/

		reg_val |= 0x004;
		*(unsigned volatile int *)I2C_REG = reg_val;		/*SCL 置高*/
		delay_msec(1);									/*延时*/

		temp = data<<1;
		data = temp;
		BitCounter --;
	}while(BitCounter);

	reg_val &= 0x0fffffffb;
	*(unsigned volatile int *)I2C_REG = reg_val;		/*SCL 置低*/
	delay_msec(3);										/*延时*/
}	

void Init_7111(void)
{
	int i;
	
	start_i2c();
	write_i2c(0x4a);			
	ack_i2c();
	write_i2c(0x01);
	ack_i2c();
	for(i=0;i<0x14;i++){
		write_i2c(val713_1[i]);
		ack_i2c();
		}
	stop_i2c();
	delay_msec(1);

	start_i2c();
	write_i2c(0x4a);			
	ack_i2c();
	write_i2c(0x15);
	ack_i2c();
	for(i=0;i<4;i++){
		write_i2c(val713_2[i]);
		ack_i2c();
		}
	stop_i2c();
	delay_msec(1);
	
	start_i2c();
	write_i2c(0x4a);			
	ack_i2c();
	write_i2c(0x40);
	ack_i2c();
	for(i=0;i<0x20;i++){
		write_i2c(val713_3[i]);
		ack_i2c();
		}
	stop_i2c();
	delay_msec(1);
	
}
void Init_7190(void)
{
	int i;

	start_i2c();
	write_i2c(0xd6);	
	ack_i2c();
	write_i2c(0x00);	
	ack_i2c();
	for(i=0x0;i<0x36;i++){
		write_i2c(val76[i]);
		ack_i2c();
	}
	stop_i2c();
	delay_msec(5);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -