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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? drv_i2c.c

?? Enhanced LPC213x device drivers,tools ADS1.2
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
////////////////////////////////////////////////////////////////////////
#include "config_60_61.h"
#include "config_GD61.h"
#include "include_GD61.h"

////////////////////////////////////////////////////////////////////////
#define ONE_BYTE_SUBA		1
#define TWO_BYTE_SUBA		2
#define X_ADD_8_SUBA		3

#define I2C_EN				0x40	//I2CONSET bits define
#define I2C_STA				0x20
#define I2C_STO				0x10
#define I2C_SI				0x08
#define I2C_AA				0x04

#define I2C_W				0xFE
#define I2C_R				0x01

#define I2C_DEV_FREE		0x01
#define I2C_DEV_BUSY		0x00
#define I2C_TRANS_LIMIT		100		//100 milsecond, about 100 bytes

extern volatile uint16 mSecondTick;
///////////////////////////////////////////////////////////////////////
/* 定義用于和I2C中斷傳遞信息的全局變量 */
volatile uint8 	I2C_dveAddr;		//I2C器件從地址
volatile uint8 	I2C_subAddrNum;		//I2C子地址字節(jié)數(shù)
volatile uint32	I2C_subAddr;		//I2C器件內(nèi)部子地址

volatile uint8 	*I2C_dbuf_Pt;		//數(shù)據(jù)緩沖區(qū)指針
volatile uint8  I2C_byteNum;		//要讀取/寫入的數(shù)據(jù)個(gè)數(shù)
volatile uint8 	I2C_endFlag;		//I2C總線結(jié)束標(biāo)志:結(jié)束總線是置1

volatile uint8 	I2C_subAddrFlag;	// 	子地址控制。
									//	0--子地址已經(jīng)處理或者不需要子地址
									//	1--讀取操作
									//	2--寫操作
///////////////////////////////////////////////////////////////////////
void I2C_StopAct(void);
void I2C_Initialize(uint32 FrqI2C);

//uint8 I2C_SendByte(uint8 sla, uint8 dat);
//uint8 I2C_RcvByte(uint8 sla, uint8 *dat);

uint8 I2C_ReadNByte (uint8 sla, uint8 suba_type, uint32 suba, uint8*s, uint8 num);
uint8 I2C_WriteNByte(uint8 sla, uint8 suba_type, uint32 suba, uint8*s, uint8 num);

void __irq IRQ_I2C_Serving(void);

///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
void I2C_StopAct(void)
{
	IRQDisable();

	I2CONSET 	= I2C_STO;			//0x10;	/*結(jié)束總線*/
	I2CONCLR 	= I2C_STA|I2C_SI;	//0x28;
	I2C_endFlag = I2C_DEV_FREE;		//1; 

	VICVectAddr = 0x00;     		/*中斷處理結(jié)束*/

	IRQEnable();					// 使能IRQ中斷
}

/*
///////////////////////////////////////////////////////////////////////
** 函數(shù)名稱 :I2C_Initialize()
** 函數(shù)功能 :I2C初始化
** 入口參數(shù) :FrqI2C	I2C總線頻率(最大400K)
** 出口參數(shù) :無
///////////////////////////////////////////////////////////////////////
*/
void I2C_Initialize(uint32 FrqI2C)
{
	IRQDisable();

	if (FrqI2C > 400000) FrqI2C = 400000;

	PINSEL0  = 	(PINSEL0 & (~0xF0))|0x50; 	// 不影響其它管腳連接

	I2SCLH 	 = 	(LPC_FPCLK/FrqI2C + 1)/2;	/* 設(shè)定I2C時(shí)鐘*/
	I2SCLL 	 = 	(LPC_FPCLK/FrqI2C)/2;

	I2CONCLR = 	I2C_STA|I2C_SI |I2C_AA;		//0x2C;
	I2CONSET = 	I2C_EN;		//0x40;			/* 使能主I2C*/

/* 設(shè)置I2C中斷允許 */
	VICVectCntl3 = (0x20|INT_IIC0);			/* I2C通道分配到IRQ slot3*/
	VICVectAddr3 = (int32)IRQ_I2C_Serving;	/* 設(shè)置I2C中斷向量*/
	VICIntEnable = 1<<INT_IIC0;				/* 使能I2C中斷*/

	IRQEnable();							// 使能IRQ中斷
}

/*
**********************************************************************************
** 函數(shù)名稱 :I2C_ReadNByte()
** 函數(shù)功能 :從有子地址器件任意地址開始讀取N字節(jié)數(shù)據(jù)
** 入口參數(shù) :	sla			器件從地址
**				suba_type	子地址結(jié)構(gòu)	1-單字節(jié)地址	2-8+X結(jié)構(gòu)	2-雙字節(jié)地址
**				suba		器件子地址
**				s			數(shù)據(jù)接收緩沖區(qū)指針
**				num			讀取的個(gè)數(shù)
** 出口參數(shù) :	TRUE		操作成功
**				FALSE		操作失敗
**********************************************************************************
*/
//#define ONE_BYTE_SUBA		1
//#define TWO_BYTE_SUBA		2
//#define X_ADD_8_SUBA		3

uint8 I2C_ReadNByte (uint8 sla, uint8 suba_type, uint32 suba, uint8 *s, uint8 num)
{
	I2C_StopAct();	DelayMS_(1);

	if (num>0){	/* 判斷num個(gè)數(shù)的合法性 *//* 參數(shù)設(shè)置 */

		if (suba_type == ONE_BYTE_SUBA){		/* 子地址為單字節(jié) */
			I2C_dveAddr  	= sla|I2C_R;	//+ 1;	/* 讀器件的從地址,R=1 	*/
			I2C_subAddr    	= suba;			/* 器件子地址 */
			I2C_subAddrNum	= 1;			/* 器件子地址為1字節(jié) */

		}else if (suba_type == TWO_BYTE_SUBA){	/* 子地址為2字節(jié) */
			I2C_dveAddr  	= sla|I2C_R;	// + 1;	/* 讀器件的從地址,R=1 	*/
			I2C_subAddr   	= suba;			/* 器件子地址 */
			I2C_subAddrNum	= 2;			/* 器件子地址為2字節(jié) */

		}else if (suba_type == X_ADD_8_SUBA){	/* 子地址結(jié)構(gòu)為8+X*/
			I2C_dveAddr		= (sla+((suba>>7)&0x0e))|I2C_R;	//1;/* 讀器件的從地址,R=1	*/
			I2C_subAddr		= suba & 0x0ff;	/* 器件子地址 */
			I2C_subAddrNum	= 1;			/* 器件子地址為8+x */
		}
		
		I2C_dbuf_Pt     = s;				/* 數(shù)據(jù)接收緩沖區(qū)指針 */
		I2C_byteNum     = num;				/* 要讀取的個(gè)數(shù) */
		
		I2C_subAddrFlag = 1;				/* 有子地址, 讀操作 */
		I2C_endFlag     = I2C_DEV_BUSY;		//0;

		I2CONCLR = 	I2C_AA|I2C_SI|I2C_STA;	/* AA SI STA ,清除STA,SI,AA標(biāo)志位 */
		I2CONSET = 	I2C_STA|I2C_EN;			/* STA I2CEN ,置位STA,啟動(dòng)I2C總線 */
		
		/* 等待I2C操作完成 */
		mSecondTick=I2C_TRANS_LIMIT;
		while((I2C_endFlag == I2C_DEV_BUSY)&&(mSecondTick>1));
		if(I2C_endFlag	   == I2C_DEV_BUSY) DB_SendString("time overflow in I2C_ReadNByte()");

		if (I2C_endFlag == I2C_DEV_FREE)	return (TRUE);
		else								return (FALSE);			
	}
	return (FALSE);
}

/*
***********************************************************************************
** 函數(shù)名稱 :I2C_WriteNByte()
** 函數(shù)功能 :向有子地址器件寫入N字節(jié)數(shù)據(jù)
** 入口參數(shù) :	sla			器件從地址
**				suba_type	子地址結(jié)構(gòu)	1-單字節(jié)地址	3-8+X結(jié)構(gòu)	2-雙字節(jié)地址
**			  	suba		器件內(nèi)部物理地址
**			  	*s			將要寫入的數(shù)據(jù)的指針
**			  	num			將要寫入的數(shù)據(jù)的個(gè)數(shù)
** 出口參數(shù) :	TRUE		操作成功
**			  	FALSE		操作失敗
**********************************************************************************
*/
//#define ONE_BYTE_SUBA		1
//#define TWO_BYTE_SUBA		2
//#define X_ADD_8_SUBA		3

uint8 I2C_WriteNByte(uint8 sla, uint8 suba_type, uint32 suba, uint8 *s, uint8 num)
{
	I2C_StopAct();	DelayMS_(1);

	if (num>0){	/* 如果讀取的個(gè)數(shù)為0,則返回錯(cuò)誤 */	/* 設(shè)置參數(shù) */

		if (suba_type == ONE_BYTE_SUBA){			/* 子地址為單字節(jié) */
			I2C_dveAddr 	= sla & I2C_W;	/* 讀器件的從地址	 	*/
			I2C_subAddr    	= suba;			/* 器件子地址 			*/
			I2C_subAddrNum	= 1;			/* 器件子地址為1字節(jié) 	*/
		}
		
		else if (suba_type == TWO_BYTE_SUBA){		/* 子地址為2字節(jié) */
			I2C_dveAddr     = sla & I2C_W;	/* 讀器件的從地址 		*/
			I2C_subAddr   	= suba;			/* 器件子地址 			*/
			I2C_subAddrNum	= 2;			/* 器件子地址為2字節(jié) 	*/

		}else if (suba_type == X_ADD_8_SUBA){		/* 子地址結(jié)構(gòu)為8+X */
			I2C_dveAddr	    = (sla+((suba>>7)&0x0e)) & I2C_W;	/*讀器件的從地址*/
			I2C_subAddr		= suba & 0x0ff;	/* 器件子地址			*/
			I2C_subAddrNum	= 1;			/* 器件子地址為8+X	 	*/
		}

		I2C_dbuf_Pt     = s;				/* 數(shù)據(jù) 				*/
		I2C_byteNum     = num;				/* 數(shù)據(jù)個(gè)數(shù) 			*/
		
		I2C_subAddrFlag = 2;				/* 有子地址,寫操作 	*/
		I2C_endFlag     = I2C_DEV_BUSY;	//0;
	
		I2CONCLR = 	I2C_AA|I2C_SI|I2C_STA;	/* AA SI STA  清除STA,SI,AA標(biāo)志位 */
		I2CONSET = 	I2C_STA|I2C_EN;			/* STA I2CEN, 置位STA,啟動(dòng)I2C總線 */
		
		/* 等待I2C操作完成 */
		mSecondTick=I2C_TRANS_LIMIT;
		while((I2C_endFlag == I2C_DEV_BUSY)&&(mSecondTick>1));
		if((I2C_endFlag	   == I2C_DEV_BUSY)) DB_SendString("time overflow in I2C_WriteNByte()");
		
		if (I2C_endFlag == I2C_DEV_FREE)	return (TRUE);
		else								return (FALSE);	
	}
	return (FALSE);
}

/*
**************************************************************************
** 函數(shù)名稱 :__irq IRQ_I2C_Serving()
** 函數(shù)名次 :硬件I2C中斷服務(wù)程序。 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品露脸对白| 欧美色网一区二区| 一区二区免费看| 亚洲婷婷综合久久一本伊一区| 日韩欧美自拍偷拍| 91精品国产免费| 欧美美女直播网站| 欧美视频精品在线| 欧美午夜片在线看| 欧美日韩三级一区| 欧美日韩另类国产亚洲欧美一级| 在线观看日韩一区| 91福利社在线观看| 欧美日韩激情在线| 欧美精品99久久久**| 欧美日韩国产经典色站一区二区三区| 日本韩国精品一区二区在线观看| 日本韩国欧美一区二区三区| 欧美伊人久久久久久午夜久久久久| 欧美日韩一区二区欧美激情| 欧美另类变人与禽xxxxx| 538在线一区二区精品国产| 欧美高清一级片在线| 日韩免费高清av| 久久午夜国产精品| 国产精品入口麻豆原神| 亚洲人亚洲人成电影网站色| 亚洲综合色成人| 日日欢夜夜爽一区| 激情图片小说一区| 成人av免费在线| 91成人国产精品| 91精品国产入口| 国产片一区二区| 亚洲女与黑人做爰| 秋霞午夜鲁丝一区二区老狼| 国产一本一道久久香蕉| 99re热这里只有精品免费视频| 欧美午夜精品一区二区三区 | 3d动漫精品啪啪一区二区竹菊| 91精品综合久久久久久| 久久久精品人体av艺术| 亚洲另类在线视频| 奇米精品一区二区三区四区| 国产91精品一区二区麻豆亚洲| 在线免费av一区| 26uuu国产在线精品一区二区| 中文字幕日韩av资源站| 亚洲va欧美va人人爽午夜| 国产在线精品一区二区| 91美女视频网站| 日韩免费视频一区| 亚洲伦理在线免费看| 精品一二线国产| 日本韩国精品在线| 久久色.com| 亚洲综合色噜噜狠狠| 国产剧情一区在线| 欧美另类z0zxhd电影| 国产精品视频免费| 日本美女视频一区二区| 波多野结衣一区二区三区| 欧美一区二区视频网站| 一区在线观看视频| 国产一区二区影院| 欧美日韩成人一区| 亚洲青青青在线视频| 国产一区二区在线影院| 在线不卡欧美精品一区二区三区| 日本一区二区在线不卡| 久久国产免费看| 色域天天综合网| 欧美激情中文字幕一区二区| 天堂在线一区二区| 在线视频欧美精品| 中文字幕在线免费不卡| 美日韩黄色大片| 欧美日韩另类一区| 亚洲男同性视频| 成人av在线影院| 久久综合九色综合欧美98| 日韩激情一二三区| 欧美午夜一区二区三区免费大片| 中文字幕乱码亚洲精品一区| 精品在线观看视频| 欧美精品久久久久久久久老牛影院| 亚洲伦理在线免费看| av在线播放成人| 欧美韩国日本一区| 国产成人在线色| 精品美女一区二区| 久久aⅴ国产欧美74aaa| 9191久久久久久久久久久| 亚洲愉拍自拍另类高清精品| 91在线播放网址| 国产精品久久午夜夜伦鲁鲁| 久久精品99久久久| 欧美精品黑人性xxxx| 天天av天天翘天天综合网色鬼国产| 色88888久久久久久影院野外| 国产精品私人自拍| 成人精品高清在线| 国产精品美女久久久久aⅴ| 成人性生交大合| 中文字幕一区二区三区乱码在线 | 北岛玲一区二区三区四区| 国产农村妇女毛片精品久久麻豆 | 蜜桃一区二区三区在线观看| 欧美人伦禁忌dvd放荡欲情| 亚洲1区2区3区4区| 欧美日韩在线观看一区二区 | 亚洲成人免费av| 欧美在线不卡视频| 婷婷激情综合网| 91精品国产综合久久香蕉麻豆| 日本vs亚洲vs韩国一区三区二区| 911精品产国品一二三产区 | 欧美一区二区三区在线视频| 五月激情六月综合| 日韩一级大片在线| 国产精品资源在线| 综合中文字幕亚洲| 欧美日韩专区在线| 日产欧产美韩系列久久99| 久久这里都是精品| 成人h动漫精品一区二区 | 99久久久久久99| 国产精品高潮呻吟| 91免费看视频| 亚洲va欧美va天堂v国产综合| 制服丝袜一区二区三区| 美女国产一区二区| 亚洲国产成人在线| 一本高清dvd不卡在线观看| 五月婷婷久久丁香| 久久亚洲影视婷婷| 91蜜桃在线观看| 三级欧美韩日大片在线看| 精品动漫一区二区三区在线观看| 国产精品一级在线| 亚洲欧美一区二区三区国产精品| 欧美亚洲综合网| 亚洲午夜一二三区视频| 在线不卡免费av| 国产成人在线看| 亚洲国产精品麻豆| 精品99一区二区| 99久久精品国产一区二区三区| 亚洲国产精品一区二区尤物区| 精品少妇一区二区三区视频免付费| 国产成人精品免费看| 亚洲国产精品麻豆| 久久久精品综合| 欧洲日韩一区二区三区| 久久精品国产99| 亚洲人成网站影音先锋播放| 欧美一区二区三区四区久久| 成人手机在线视频| 日日摸夜夜添夜夜添国产精品 | 久久蜜臀精品av| 91亚洲精品一区二区乱码| 青青草97国产精品免费观看无弹窗版| 久久久久国产精品厨房| 欧美日免费三级在线| 成人涩涩免费视频| 蜜桃av一区二区在线观看| 中文字幕五月欧美| 欧美va亚洲va国产综合| 在线观看www91| 国产.欧美.日韩| 婷婷成人激情在线网| 国产精品久久久久影院亚瑟| 欧美一区二区大片| 色网站国产精品| 国产精品18久久久| 日韩和欧美的一区| 亚洲一区在线观看网站| 亚洲国产激情av| 精品久久人人做人人爽| 欧美日韩一卡二卡三卡| 色综合天天综合狠狠| 久久国产精品无码网站| 亚洲福利一区二区| 亚洲啪啪综合av一区二区三区| 久久综合狠狠综合久久综合88| 777奇米四色成人影色区| 色婷婷久久一区二区三区麻豆| 国产大陆精品国产| 精品一区二区免费在线观看| 午夜欧美在线一二页| 亚洲欧美色图小说| 国产精品成人一区二区三区夜夜夜| 欧美v国产在线一区二区三区| 制服丝袜亚洲色图| 欧美日韩国产一级二级| 日本久久一区二区三区| 国产成人免费视频一区| 久久国产成人午夜av影院| 美腿丝袜亚洲一区| 日韩福利电影在线观看|