亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? i2c.c

?? 基于BF533的視頻采集及顯示
?? C
字號:
#include "I2C.h"
/*------------------------------------------------------------------------------
// I2C Peripheral Function Prototypes
//------------------------------------------------------------------------------
void Init(void);								//  Initialize I2C port
void Start(void);								//  Sends I2C Start Trasfer
void Stop(void);								//  Sends I2C Stop Trasfer
bool Write(unsigned char data_out);				//  Writes data over the I2C bus
bool Read(unsigned char *data_in, bool send_ack);// Reads data from the I2C bus
void SetSCLK(bool state);						//  Set SCLK to <state>
void SetSDATA(bool state);						//  Set SDATA to <state>
bool GetSDATA();								//  Get SDATA state
*/
//------------------------------------------------------------------------------
// I2C Peripheral Variables
//------------------------------------------------------------------------------

unsigned int Delay = 0x00000000;
unsigned char IdentAddr = 0x0;

//------------------------------------------------------------------------------
// I2C Functions - Master
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// 	Routine:	Init
//	Inputs:		none
//	Outputs:	none
//	Purpose:	Initialize I2C for the ADu812C
//------------------------------------------------------------------------------
void INL Init(void)
{
	*pFIO_DIR	|=  SCLK;		// Set SCLK as output and SDATA as input/high
	*pFIO_POLAR	&= ~SDATA;		// Enable Active High
	*pFIO_EDGE	&= ~SDATA;		// Enable Level Sensitivity
	*pFIO_INEN	|=  SDATA;		// Enable SDATA Input Buffer
	SetSDATA(1);				// Set SDATA as input/high
	SetSCLK(1);					// Set SCLK high
}
//------------------------------------------------------------------------------
// 	Routine:	Start
//	Inputs:		none
//	Outputs:	none
//	Purpose:	Sends I2C Start Trasfer - "S"
//------------------------------------------------------------------------------
void INL Start(void)
{
//	11182003 - Following line has been added! (Fixed thanks to Andrew Seddon).
//			   Shouldn't Stop() be setting SCLK high?
	SetSCLK(1);					// Set SCLK high
	SetSDATA(0);				// Set SDATA output/low
	SetSCLK(0);					// Set SCLK low
}
//------------------------------------------------------------------------------
// 	Routine:	Stop
//	Inputs:		none
//	Outputs:	none
//	Purpose:	Sends I2C Stop Trasfer - "P"
//------------------------------------------------------------------------------
void INL Stop(void)
{
	SetSDATA(0);				// Set SDATA output/low
	SetSCLK(1);					// Set SCLK high
	SetSDATA(1);				// Set SDATA as input/high
}
//------------------------------------------------------------------------------
// 	Routine:	Write
//	Inputs:		data_out
//	Outputs:	bool
//	Purpose:	Writes data over the I2C bus and return status.
//------------------------------------------------------------------------------
bool INL Write(unsigned char data_out)
{
	unsigned char index;

	// An I2C output byte is bits 7-0 (MSB to LSB). Shift one bit at a time to
	// the SDATA output, and then clock the data to the I2C Slave device.

	// Send 8 bits out the port	
	for(index = 0; index < 8; index++)
	{
		// Output the data bit to the device
		SetSDATA(((data_out & 0x80) ? 1 : 0));

		data_out <<= 1;						// Shift the byte by one bit
		SetSCLK(1);							// Set SCLK high
		SetSCLK(0);							// Set SCLK low
	}

	SetSDATA(1);							// Set SDATA input/high
	SetSCLK(1);								// Set SCLK high

	if (!GetSDATA())
	{
		SetSCLK(0);							// Set SCLK low
		return true;						// ACK from slave
	} else
	{
		SetSCLK(0);							// Set SCLK low
		return false;						// NACK from slave
	}
}
//------------------------------------------------------------------------------
// 	Routine:	Read
//	Inputs:		*data_in, send_ack (if true send the ACK signal else send NACK)
//	Outputs:	bool
//	Purpose:	Reads data from the I2C bus and return it in data_in.
//				Returns status.
//------------------------------------------------------------------------------
bool INL Read(unsigned char *data_in, bool send_ack)
{
	unsigned char index;

	*data_in = 0x00;

	SetSDATA(1);							// Set SDATA input/high
	SetSCLK(0);								// Set SCLK low

	// Get 8 bits from the device
	for(index = 0; index < 8; index++)
	{
		*data_in <<= 1;						// Shift the data right 1 bit
		SetSCLK(1);							// Set SCLK high
//		11182003 - Line moved...
//		SetSCLK(0);							// Set SCLK low
		*data_in |= GetSDATA();				// Read the data bit
//		11182003 - to here! (Fixed thanks to Andrew Seddon).
		SetSCLK(0);							// Set SCLK low
	}

	if (send_ack)
		SetSDATA(0);		// Set data pin to output/low to ACK the read
	else
		SetSDATA(1);		// Set data pin to input/high to NACK the read

	SetSCLK(1);								// Set SCLK high
	SetSCLK(0);								// Set SCLK low
	SetSDATA(0);							// Set SDATA output/low
	SetSDATA(1);							// Set SDATA input/high

	return true;
}
//------------------------------------------------------------------------------
// 	Routine:	SetSDATA
//	Inputs:		state
//	Outputs:	none
//	Purpose:	Set the I2C port SDATA pin to <state>.
//------------------------------------------------------------------------------
void INL SetSDATA(bool state)
{
	unsigned int i, d;
	
	if (state)
	{
		*pFIO_DIR	&=  ~SDATA;				// Set SDATA as input/high.
	
	} else
	{
		*pFIO_INEN   &= ~SDATA; 
    	//*pFIO_FLAG_C = SDATA;
		*pFIO_DIR	|=  SDATA;				// Set SDATA as output.
		*pFIO_FLAG_D &= ~SDATA;				// Set SDATA low.
		//*pFIO_FLAG_C = SDATA;
		*pFIO_INEN   |=  SDATA;   // 

		}

	// Delay
	for (i = 0; i < Delay; i++) { asm("nop;"); }
}
//------------------------------------------------------------------------------
// 	Routine:	SetSCLK
//	Inputs:		state
//	Outputs:	none
//	Purpose:	Set the I2C port SCLK pin to <state>.
//------------------------------------------------------------------------------
void INL SetSCLK(bool state)
{
	unsigned int i, d;
	
	if (state)
	{
		*pFIO_FLAG_D |= SCLK;				// Set SCLK high.
	} else
	{
		*pFIO_FLAG_D &= ~SCLK;				// Set SCLK low.
	}

	// Delay
	for (i = 0; i < Delay; i++) { asm("nop;"); }
}
//------------------------------------------------------------------------------
// 	Routine:	GetSDATA
//	Inputs:		none
//	Outputs:	bool
//	Purpose:	Get the I2C port SDATA pin state.
//------------------------------------------------------------------------------
bool INL GetSDATA()
{
    
	return ((*pFIO_FLAG_D & SDATA) ? 1 : 0);	
}

//------------------------------------------------------------------------------
// Procedure:	I2C_Init
// Inputs:		identaddr
// Outputs:		bool
// Description:	Initialize I2C and setup Slave Ident Addr. then check the ident
//				for response and returns true if ok.
//------------------------------------------------------------------------------
bool I2C_Init(unsigned char identaddr)
{
	bool ret;

	// Calculate Delay NEED FIX!!!
	Delay = ((*pPLL_CTL & 0x7e00) >> 9)*6;
	//Delay = 0x1000;
	if ((*pPLL_CTL & 0x0001) == 0x0001)
		Delay /= 2;

	IdentAddr = identaddr;

	Init();								// Initialize I2C port
	Start();							// Check Slave Ident Addr
	ret = Write(IdentAddr);
	Stop();

	return ret;							// Return true if Ident Addr. Ok
}
//------------------------------------------------------------------------------
// Procedure:	I2C_Write
// Inputs:		data out, address
// Outputs:		bool
// Description:	Writes a byte to the given address and return status.
//------------------------------------------------------------------------------
extern bool I2C_Write(unsigned char data_out, unsigned char address)
{
	Start();	// Send start signal
	if (!Write(IdentAddr))				// Send identifier I2C address
	{
		Stop();							// Send I2C Stop Transfer
		return false;
	}
//	DelayTVP5150();
	if (!Write(address))				// Send address to device
	{
		Stop();							// Send I2C Stop Transfer
		return false;
	}
//	DelayTVP5150();
	if (!Write(data_out))				// Send byte to device
	{
		Stop();							// Send I2C Stop Transfer
		return false;
	}
//	DelayTVP5150();
	Stop();								// Send I2C Stop Transfer
//	DelayTVP5150();
	return true;
}
//------------------------------------------------------------------------------
// Procedure:	I2C_Read
// Inputs:		*data_in, address
// Outputs:		bool
// Description:	Reads a byte from the given address and return status.
//------------------------------------------------------------------------------
bool I2C_Read(unsigned char *data_in, unsigned char address)
{
	Start();							// Send start signal
	if (!Write(IdentAddr))				// Send identifer I2C address
	{
		Stop();							// Send I2C Stop Transfer
		return false;
	}
//	DelayTVP5150();
	if (!Write(address))				// Send address to device
	{
		Stop();							// Send I2C Stop Transfer
		return false;
	}
//	DelayTVP5150();
	Start();							// Send I2C Start Transer
	if (!Write(IdentAddr+1))			// Send identifer I2C address
	{
		Stop();							// Send I2C Stop Transfer
		return false;
	}
//	DelayTVP5150();
	if (!Read(data_in, false))			// Read byte
	{
		Stop();							// Send I2C Stop Transfer
		return false;
	}
//	DelayTVP5150(); 
	Stop();								// Send I2C Stop Transfer

	return true;
}

/*void INL DelayTVP5150()
{
	asm("p0.l=0x57C0;");
	asm("p0.h=0x1;");
	asm("lsetup(_delay_begin,_delay_end) lc0=p0;");
	asm("_delay_begin:");
	asm("_delay_end:");
	asm("nop;");
}*/

bool SAA7113_Cnfg(void)
{
    bool Status;
    I2C_Init(0x4A);
   
    
    Status=I2C_Write(0x08,0x01);   		//行增量延遲線
    Status=I2C_Write(0xC3,0x02);  		//input control; cvbs from AI22
    Status=I2C_Write(0x33,0x03);		//analog control 2  
    Status=I2C_Write(0x00,0x04);		//analog control 3 gain控制
    Status=I2C_Write(0x00,0x05);//analog control 4 gain控制
    Status=I2C_Write(0xE9,0x06);	//水平同步開始
    Status=I2C_Write(0x00,0x07);	//水平同步開始   SA7113配置
    Status=I2C_Write(0xB8,0x08);   //同步控制
    Status=I2C_Write(0x01,0x09);	//亮度控制
    Status=I2C_Write(0x80,0x0A);	//亮度控制
    Status=I2C_Write(0x47,0x0B);	//亮度對比度控制
    Status=I2C_Write(0x40,0x0C);              	//色度,飽和度控制
    Status=I2C_Write(0x00,0x0D);//色相控制
    Status=I2C_Write(0x01,0x0E);	//色度控制
    Status=I2C_Write(0x0F,0x0F);	//色度增益控制
    Status=I2C_Write(0x00,0x10);	//格式、延遲補償_延遲0、標準的656信號
    Status=I2C_Write(0x0C,0x11);   	//output control
    Status=I2C_Write(0x01,0x12);	//RTS0 output control
    Status=I2C_Write(0x00,0x13);	//output control
    Status=I2C_Write(0x00,0x15);	//VGATE 起始脈沖取值
    Status=I2C_Write(0x00,0x16);   	//VGATE 停止脈沖取值
    Status=I2C_Write(0x00,0x17);	//VGATE 控制的高位,配合15H和16H使用
    Status=I2C_Write(0x02,0x40);	//分離器控制1
    Status=I2C_Write(0x00,0x58);	//可編程的幀編碼
    Status=I2C_Write(0x54,0x59);	//水平偏置
    Status=I2C_Write(0x07,0x5A); 	//垂直偏置
    Status=I2C_Write(0x83,0x5B);	//場偏置
    Status=I2C_Write(0x00,0x5E);	//分離器鑒別碼 
    
    
 

    	return Status;

       
	
}

bool ADV7179_Cnfg(void)
{
    bool Status;
    I2C_Init(0x56);
    Status=I2C_Write(0x05,0x00);
    Status=I2C_Write(0x10,0x01);
    Status=I2C_Write(0x00,0x02);
    Status=I2C_Write(0x00,0x03);
    Status=I2C_Write(0x15,0x04);
    Status=I2C_Write(0x00,0x05);
    Status=I2C_Write(0x00,0x06);
    Status=I2C_Write(0x08,0x07);
    Status=I2C_Write(0x00,0x08);   
    Status=I2C_Write(0xCB,0x09);
    Status=I2C_Write(0x8A,0x0A);
    Status=I2C_Write(0x09,0x0B);
    Status=I2C_Write(0x2A,0x0C);
    Status=I2C_Write(0x00,0x0D);
    Status=I2C_Write(0x00,0x0E);
    Status=I2C_Write(0x00,0x0F);
    Status=I2C_Write(0x00,0x10);
    Status=I2C_Write(0x00,0x11);   
    Status=I2C_Write(0x00,0x12);
    Status=I2C_Write(0x00,0x13);
    Status=I2C_Write(0x00,0x14);
    Status=I2C_Write(0x00,0x15);
    Status=I2C_Write(0x00,0x16);   
    Status=I2C_Write(0x00,0x17);
    Status=I2C_Write(0x00,0x18);
    Status=I2C_Write(0x00,0x19);

	return Status;
    
}






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲一区字幕| 一区在线播放视频| 制服丝袜中文字幕一区| 色88888久久久久久影院按摩 | 亚洲制服丝袜av| 亚洲女同一区二区| 一区二区三区日韩在线观看| 国产精品毛片无遮挡高清| 国产人成一区二区三区影院| 国产网站一区二区| 中文字幕国产一区| 亚洲精品乱码久久久久久久久| 亚洲少妇30p| 香蕉成人伊视频在线观看| 亚洲午夜激情网页| 麻豆91免费观看| 国产一区欧美日韩| 成人av资源在线观看| 91在线免费看| 777午夜精品免费视频| 日韩欧美一级片| 中文无字幕一区二区三区 | 99re66热这里只有精品3直播 | 国产三级欧美三级日产三级99| 国产调教视频一区| **网站欧美大片在线观看| 亚洲最大的成人av| 蜜臀91精品一区二区三区| 国产东北露脸精品视频| 91福利资源站| 久久综合久色欧美综合狠狠| 日韩美女视频一区二区| 午夜视频一区二区| 国产精品456| 欧美性猛交xxxx乱大交退制版| 欧美一区二区三区视频| 国产亚洲一二三区| 亚洲成人激情自拍| 成人午夜免费av| 91精品国产高清一区二区三区| 久久久精品国产99久久精品芒果| 亚洲欧美日韩国产手机在线| 日韩电影在线一区二区| av电影在线观看不卡| 欧美一区二区三区色| 亚洲青青青在线视频| 免费成人在线观看视频| 色综合天天综合给合国产| 精品国产乱码久久久久久闺蜜| 亚洲美腿欧美偷拍| 国产suv精品一区二区6| 欧美一区二区啪啪| 亚洲自拍偷拍欧美| 成人高清视频免费观看| 精品99久久久久久| 日韩精品高清不卡| 欧美亚洲动漫精品| 亚洲精品成人a在线观看| 成人少妇影院yyyy| 精品久久久久久久久久久院品网| 五月婷婷综合在线| 欧美三片在线视频观看| 最新日韩av在线| 国v精品久久久网| 精品国产乱子伦一区| 日本美女一区二区三区| 欧美亚洲高清一区二区三区不卡| 成人免费一区二区三区视频| 国产盗摄女厕一区二区三区| 欧美大片一区二区| 日本免费新一区视频| 欧美日韩亚洲国产综合| 亚洲精品国产品国语在线app| 国产激情一区二区三区四区| 精品美女一区二区| 九一九一国产精品| 精品国产亚洲一区二区三区在线观看| 亚洲成在线观看| 欧美精品在线视频| 天天影视色香欲综合网老头| 欧美三级午夜理伦三级中视频| 亚洲美腿欧美偷拍| 欧美视频你懂的| 亚洲一区二区三区视频在线| 欧美日韩国产中文| 日韩国产高清在线| 精品日韩一区二区三区| 成人综合婷婷国产精品久久免费| 国产欧美日本一区二区三区| www.久久精品| 亚洲一区二区三区影院| 欧美精品成人一区二区三区四区| 免费不卡在线视频| 久久精品一区二区三区不卡牛牛| 国产精品白丝av| 亚洲视频一区二区在线观看| 99精品国产一区二区三区不卡| 亚洲激情av在线| 91精品国产综合久久久久久| 久久精品国产一区二区三| 国产免费久久精品| 在线亚洲一区观看| 久久成人久久爱| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 五月综合激情日本mⅴ| 日韩片之四级片| 粉嫩久久99精品久久久久久夜| 亚洲精品成人少妇| 欧美成人女星排行榜| 国产高清成人在线| 一个色综合网站| 精品国产一区久久| 欧美性生活一区| 国产乱码精品1区2区3区| 夜夜爽夜夜爽精品视频| 精品久久久久久久久久久久久久久久久| 成人美女在线视频| 日韩高清一区在线| 日韩一区在线看| 欧美一级在线观看| 91视频观看视频| 韩日精品视频一区| 午夜精品福利视频网站| 久久精品在线免费观看| 欧美日韩大陆在线| av亚洲精华国产精华| 老司机免费视频一区二区| 中文字幕亚洲电影| 欧美精品一区视频| 91精品国产综合久久久蜜臀图片| av成人动漫在线观看| 狠狠色丁香久久婷婷综| 亚洲成av人在线观看| 国产精品高潮呻吟久久| 欧美成人aa大片| 欧美高清dvd| 欧洲一区在线电影| av在线不卡电影| 国产成人99久久亚洲综合精品| 蜜桃av一区二区在线观看 | 免费精品视频在线| 亚洲丶国产丶欧美一区二区三区| 国产精品污www在线观看| 日韩精品在线一区二区| 欧美午夜宅男影院| 色网站国产精品| 99精品视频中文字幕| 成人h动漫精品一区二区| 国产一区999| 国产99精品国产| 国产一区二区电影| 国产乱码精品一区二区三区忘忧草| 奇米影视在线99精品| 日本午夜一区二区| 午夜伊人狠狠久久| 亚洲一区中文日韩| 亚洲激情图片一区| 亚洲成av人片在线| 日本中文字幕一区二区有限公司| 性久久久久久久久| 日韩不卡一区二区| 日韩精品福利网| 久久精品国产第一区二区三区| 日韩不卡手机在线v区| 久久国产精品99精品国产| 久久99精品国产.久久久久久| 蜜桃91丨九色丨蝌蚪91桃色| 麻豆免费看一区二区三区| 国产在线乱码一区二区三区| 国产精品一区二区在线观看网站| 成人性生交大片免费看在线播放| 成人免费视频caoporn| 91蜜桃视频在线| 欧美精品tushy高清| 精品久久人人做人人爱| 日本一区二区免费在线| 亚洲日本在线天堂| 午夜在线成人av| 国内精品伊人久久久久影院对白| 国产大片一区二区| 欧美性受xxxx| 精品欧美一区二区三区精品久久| 国产日韩欧美精品综合| 亚洲蜜桃精久久久久久久| 五月综合激情网| 国产成+人+日韩+欧美+亚洲| 色综合久久中文字幕| 6080日韩午夜伦伦午夜伦| 国产欧美日韩亚州综合| 午夜精品一区二区三区免费视频 | 日韩免费一区二区| 亚洲国产成人午夜在线一区| 亚洲男帅同性gay1069| 视频一区二区三区入口| 国产成人免费视| 欧美精品一级二级三级| 欧美高清一级片在线观看| 午夜视频一区在线观看| 国产风韵犹存在线视精品| 欧美日韩1区2区|