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

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

?? i2c_test.c

?? I2C testing sample code
?? C
字號:
//****************************************************************************
// 
// Faraday Technology Coporation 
// Copyright (C) Microsoft Corporation. All rights reserved.
//                                
//*--------------------------------------------------------------------------*
//* Name:I2C_test.c                                                          *
//* Description: I2C test functions                                          *
//* Author: Shawn, Hsiao                                                     *
//* Date: 2006/08/07                                                         *
//* Version:0.1	                                                             *
//* Note: modified from old burn-In                                          *
//****************************************************************************

//============================================================================
//        Include
//============================================================================

#include <stdio.h>
#include "I2C_test.h"
#include "fLib.h"
#include "I2C.h"			

//============================================================================
//        Definition
//============================================================================

#define I2C_DEBUG	// must define, and do not know why...

//============================================================================
//        Global Variables
//============================================================================

volatile BOOL DT_LOCK;
volatile BOOL DR_LOCK;
volatile BOOL I2C_LOCK;

UINT32 I2C_TEST_RESULT;

//============================================================================
//        Functions
//============================================================================

extern void DelayTime1(UINT32);
extern unsigned int PMU_get_pclk(void);
extern UINT32 Esc_Key;
extern INT32 fLib_printf(const char *f, ...);

extern void API_SYS_set_MUX_I2C(void);

/* I2C test main
*/
int I2CTest (void)
{
	UINT32 i;
	int ret = 0;
	
	I2C_TEST_RESULT=  TRUE;

	printf("\rBegin I2C Test... \n");
	
	// set MUX to I2C
	API_SYS_set_MUX_I2C();

	// set delay timer
	fLib_Timer_Init(1,1000,Timer_Tick_Dispatcher);

	EnableIRQ();			//It enables ARM's IRQ in the Boot.s

	/*Initiated I2C
	*/
	//setting PCLK clock  cycles
	fLib_I2C_SetTGSR(I2C_GSR_Value,I2C_TSR_Value);
	//set clock divider
	fLib_I2C_SetClockdiv(PMU_get_pclk()/50/2/1000);

	/* set interrupt
	*/
	fLib_ConnectInt(FIE702x_IRQ_I2C1, I2C_Isr);
	fLib_SetIntTrig(FIE702x_IRQ_I2C1,EDGE,H_ACTIVE);
	fLib_EnableInt(FIE702x_IRQ_I2C1);

	/* byte write test
	*/
	// pattern 1
	i = ByteWriteTest1();
	if(i == FALSE)
	{
		I2C_TEST_RESULT=FALSE;
		printf("Fail!\n");
		ret = -1;
	}

	// pattern 2
	i = ByteWriteTest2();
	if(i==FALSE)
	{
		I2C_TEST_RESULT=FALSE;
		printf("Fail!\n");
		ret = -1;
	}

	/* page write test
	*/
	// pattern 1
	i = PageWriteTest1();
	if(i == FALSE)
	{
		I2C_TEST_RESULT=FALSE;
		printf("Fail!\n");
		ret = -1;
	}

	// pattern 2
	i = PageWriteTest2();
	if(i == FALSE)
	{
		I2C_TEST_RESULT=FALSE;
		printf("Fail!\n");
		ret = -1;
	}

	printf("End I2C Test!\n");

	fLib_CloseInt(FIE702x_IRQ_I2C1);

	DisableIRQ();			//It disables ARM's IRQ in the Boot.s
	fLib_Timer_Close(1);
	
	return ret;
}

/* I2C ISR
*/
void I2C_Isr(void)
{
	UINT32 status;

	fLib_ClearInt(FIE702x_IRQ_I2C1);

	status = fLib_I2C_ReadStatus();

	if(status & I2C_DT)
	{
		DT_LOCK = FALSE;
		if(!(status & I2C_BUSY))
			I2C_LOCK = FALSE;
	}
	else
	{
		if(status & I2C_DR)
			DR_LOCK = FALSE;
	}
}

/* byte write test pattern 1
*/
UINT32 ByteWriteTest1(void)
{
	UINT32 i, rdata;
	
	for(i = 0; i < 0x100; i ++)
	{
		// wtite byte
		ByteWrite(i,i);

		DelayTime1(12); //delay 10ms for write to device

		rdata = RandomRead(i);

		// verify byte
		if(rdata != i)
		{	// error message
			printf("Read data no match!, write=%d read=%d\n", i, rdata);
			printf("Write Byte and Verify Loop Test Fail!\n");
			return FALSE;
		}

		DelayTime1(10);

		if(Esc_Key) 
			return FALSE;
	}
	
	printf("Write Byte and Verify Loop Test Success!\n");
	
	return TRUE;
}

/* byte write test pattern 2
*/
UINT32 ByteWriteTest2()
{
	UINT32 i, rdata;

	for(i = 0; i < 0x100; i ++)
	{
		// write byte
		ByteWrite(i,i);
		DelayTime1(12); //delay 10ms for write to device
	}

	for(i = 0; i < 0x100; i ++)
	{
		rdata = RandomRead(i);
		
		// verify byte
		if(rdata != i)
		{	// error message
			printf("Read data no match!\n");
			printf("Write All Bytes and Verify Test Fail\n");
			return FALSE;
		}
		
		DelayTime1(10);

		if(Esc_Key) 
			return FALSE;
	}

	printf("Write All Bytes and Verify Test Success!\n");

	return TRUE;
}

/* page write test pattern 1
*/
UINT32 PageWriteTest1()
{
	UINT32 i , j, rdata;

	/*write 8 and read 8
	*/
	for(i = 0;i < 0x100; i += 8)
	{
		// page write
		PageWrite(i);
		DelayTime1(12); //delay 10ms for write to device

		for(j = i; j < i + 8; j ++)
		{
			// verify 
			rdata = RandomRead(j);

			if(rdata != j)
			{	// error message
				printf("Read data no match! write=%d read=%d\n",j,rdata);
				printf("Write Page and Verify Loop Test Fail!\n");
				return FALSE;
			}

			DelayTime1(10); //delay 10ms for write to device

		}//end for j

		if(Esc_Key) 
			return FALSE;
	} //end for i

	printf("Write Page and Verify Loop Test Success!\n");

	return TRUE;
}

/* page write test pattern 2
*/
UINT32 PageWriteTest2()
{
	UINT32 i, rdata;

	/* write all and read all
	*/
	for(i = 0;i < 0x100; i += 8)
	{
		// page write
		PageWrite(i);
		DelayTime1(12); //delay 10ms for write to device
	}

	for(i = 0; i < 0x100; i ++)
	{
		// verify
		rdata = RandomRead(i);

		if(rdata != i)
		{
			printf("Read data no match! write=%d read=%d\n",i,rdata);
			printf("Write All Pages and Verify Test Fail!\n");
			return FALSE;
		}

		DelayTime1(10); //delay 10ms for write to device

		if(Esc_Key) 
			return FALSE;
	}

	printf("Write All Pages and Verify Test Success!\n");

	return TRUE;
}

/* byte write
*/
void ByteWrite(UINT32 waddr,UINT32 wdata)
{
	/* give decive ID
	*/
	// write slave address to device
  fLib_I2C_WriteData(WRITE_DEVICE);

	//set control to start
	DT_LOCK = TRUE;
	fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN|I2C_START);

  // checking status
  while(DT_LOCK == TRUE)
	;

	/* give address
	*/
  // write address to device
	fLib_I2C_WriteData(waddr);

#ifdef I2C_DEBUG
	fLib_printf("Write address %x\r", waddr);
#endif

  // set control to start
	DT_LOCK = TRUE;
	fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN);

	// checking status
  while(DT_LOCK == TRUE)
  ;

	/* give data
	*/
  // write data to device
	fLib_I2C_WriteData(wdata);

#ifdef I2C_DEBUG
	fLib_printf("Write data %x\r", wdata);
#endif

  // set control to stop
	DT_LOCK = TRUE;

	fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN|I2C_STOP);

  // waiting start to stop
#ifdef I2C_DEBUG
	fLib_printf("Waiting to stop...\r");
#endif

	// checking status
	while(DT_LOCK == TRUE)
	;
}

/* page write
*/
void PageWrite(UINT32 addr)
{
	UINT32 i;
	UINT32 waddr;

	/* give decive ID
	*/
 	// write slave address to device
	fLib_I2C_WriteData(WRITE_DEVICE);

	// set control to start
	fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN|I2C_START);

	//checking status
	while(DT_LOCK==TRUE)
	;

	/* give address
	*/
	// write address to device
	waddr = 0;
	fLib_I2C_WriteData(waddr);

	DelayTime1(10);

#ifdef I2C_DEBUG
	fLib_printf("Write address %x\r", waddr);
#endif

	/* give data
	*/
	// set control to start
	fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN);

	//checking status
	while(DT_LOCK==TRUE)
	;

	for(i = addr; i < addr + 8; i ++)
	{
		// write data to device
		fLib_I2C_WriteData(i);

		DelayTime1(10);

#ifdef I2C_DEBUG
		fLib_printf("Write data %x\r", i);
#endif

		// set control to start
		fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN);

	 	// clear status
		while(DT_LOCK==TRUE)
		;
	}

	// set control to stop
	fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN|I2C_STOP);

	// waiting start to stop
#ifdef I2C_DEBUG
	fLib_printf("Waiting to stop...\r");
#endif

	while(I2C_LOCK==TRUE)
	;
}

/* random read
*/
UINT32 RandomRead(UINT32 raddr)
{
	UINT32 rdata;

	/* give decive ID
	*/
	// write slave address to device
	fLib_I2C_WriteData(WRITE_DEVICE);

	// set control to start
	DT_LOCK = TRUE;
	fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN|I2C_START);

	// checking status
	while(DT_LOCK==TRUE)
  ;

	/* give address
	*/
	// write address to device
	fLib_I2C_WriteData(raddr);
  	
#ifdef I2C_DEBUG
	fLib_printf("Write address %x\r",raddr);
#endif

	// set control to start
	DT_LOCK = TRUE;
	fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN);

 	// checking status
	while(DT_LOCK==TRUE)
	;
  
 	/* read data from rom
 	*/
 	// write slave address to device
	// waddr=READ_DEVICE;
	fLib_I2C_WriteData(READ_DEVICE);

	//set control to start
	DT_LOCK = TRUE;
	fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN|I2C_START);

	// checking status
	while(DT_LOCK == TRUE)
  ;
  
	// read data
	// set control to stop
	DR_LOCK = TRUE;
	fLib_I2C_IOCtrl(I2C_ENABLE|I2C_TBEN|I2C_STOP|I2C_ACKNAK);

 	// checking status
	while(DR_LOCK == TRUE)
  ;
  
	rdata = fLib_I2C_ReadData();
#ifdef I2C_DEBUG
	fLib_printf("Read data=%x\r",rdata);
#endif

	DelayTime1(10);

	return(rdata);
}

extern void i2c_rw_func(void);

/* I2C Test Main
*/
void I2C_Test_Main()
{
	int sel;
	
gain:	
	printf("\n\n[I2C Test]\n");
	printf("(1) I2C Test      (2) I2C Read/Write         \n");
	printf("(3) exit\n");
	
	scanf("%d", &sel);
	
	switch(sel)
	{
	case 1:	// I2C Test
		I2CTest();
		goto gain;
		break;
	case 2:	// I2C Read/Write
		i2c_rw_func();
		goto gain;
		break;
	case 3:	// exit
		break;	
	default:
		goto gain;
		break;	
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费观看视频在线| 久久99蜜桃精品| 国产精品伦理在线| 久久久激情视频| 久久亚区不卡日本| 久久久久高清精品| 国产精品欧美极品| 综合激情成人伊人| 亚洲午夜视频在线观看| 一区二区三区日韩欧美| 夜夜嗨av一区二区三区网页| 伊人色综合久久天天人手人婷| 一区二区视频免费在线观看| 夜夜精品视频一区二区| 日韩不卡手机在线v区| 秋霞电影一区二区| 国产69精品久久久久毛片| www.在线成人| 在线影视一区二区三区| 51精品国自产在线| 久久亚洲一级片| 日韩毛片视频在线看| 亚洲欧美激情一区二区| 三级欧美在线一区| 国产精一品亚洲二区在线视频| 国产91在线看| 欧美亚洲日本国产| 久久久久国产免费免费| 一区二区三区在线观看动漫| 毛片不卡一区二区| jlzzjlzz亚洲日本少妇| 欧美一区二区观看视频| 中文一区在线播放 | 色偷偷久久一区二区三区| 欧美性色欧美a在线播放| 欧美成人伊人久久综合网| 亚洲免费观看高清完整版在线观看熊| 日本最新不卡在线| 成人黄色在线看| 欧美一级日韩一级| 亚洲男人的天堂一区二区| 毛片一区二区三区| 在线视频综合导航| 国产精品视频第一区| 免费成人在线播放| 欧美在线999| 国产精品国产三级国产aⅴ中文| 亚洲6080在线| 色综合久久99| 国产精品福利一区| 国产麻豆成人传媒免费观看| 日韩一区二区免费高清| 亚洲综合免费观看高清完整版在线 | 日韩一区二区中文字幕| 亚洲欧美一区二区久久| 国产成人精品www牛牛影视| 欧美老肥妇做.爰bbww| 亚洲人成在线播放网站岛国| 国产成人综合亚洲网站| 日韩欧美在线网站| 午夜精品久久久| 欧美专区日韩专区| 欧美国产一区在线| 成人免费视频app| 国产日产欧美一区二区视频| 老司机精品视频一区二区三区| 欧美吻胸吃奶大尺度电影| 日韩伦理免费电影| 91碰在线视频| 亚洲一区二区三区美女| 欧美天堂一区二区三区| 亚洲综合av网| 欧美日韩视频第一区| 亚洲国产一区二区在线播放| 欧美视频中文字幕| 亚洲成av人综合在线观看| 欧美日韩一区小说| 日本不卡一二三区黄网| 欧美一区二区精美| 国产精品中文字幕日韩精品| 国产午夜精品一区二区三区视频 | 日韩在线一区二区三区| 欧美美女喷水视频| 蜜桃一区二区三区在线| 精品成人一区二区三区四区| 国产成人午夜视频| 日韩美女视频19| 日本韩国精品一区二区在线观看| 亚洲欧美另类久久久精品2019| 色综合久久66| 视频一区视频二区在线观看| 日韩欧美激情在线| 夫妻av一区二区| 一二三区精品视频| 欧美一区二区三区在线观看视频| 精品伊人久久久久7777人| 中文无字幕一区二区三区| 99re这里都是精品| 日本vs亚洲vs韩国一区三区| 久久久久久久久久美女| 色综合久久久久综合| 天堂成人免费av电影一区| 久久久亚洲高清| 欧日韩精品视频| 韩国成人精品a∨在线观看| 日韩美女精品在线| 欧美sm极限捆绑bd| 91免费视频网址| 美女免费视频一区二区| 18成人在线视频| 欧美一级在线免费| 色综合一个色综合亚洲| 国内精品第一页| 午夜私人影院久久久久| 欧美国产精品v| 日韩欧美123| 欧美日韩中文字幕一区| 国产精品一级在线| 日韩中文字幕1| 一区二区三区中文在线观看| 久久精品在线观看| 欧美一区二区三区免费大片| 91一区二区三区在线观看| 国产在线日韩欧美| 日韩va欧美va亚洲va久久| 国产精品少妇自拍| 久久精品亚洲精品国产欧美kt∨| 精品视频在线免费观看| 99久久精品国产麻豆演员表| 国产一区二区精品在线观看| 日韩中文欧美在线| 亚洲国产一区二区在线播放| 亚洲国产精品精华液2区45| 精品久久久久久最新网址| 欧美三级三级三级爽爽爽| 色婷婷香蕉在线一区二区| 国产成人精品三级麻豆| 国产一区二区三区综合| 日本怡春院一区二区| 天天亚洲美女在线视频| 午夜精品久久久久久久| 香港成人在线视频| 亚洲电影中文字幕在线观看| 亚洲视频资源在线| 最好看的中文字幕久久| 综合自拍亚洲综合图不卡区| 国产精品久久久久婷婷二区次| 国产精品视频九色porn| 亚洲欧洲性图库| 国产精品免费久久| 欧美国产1区2区| 国产精品毛片久久久久久久| 国产精品水嫩水嫩| 综合色中文字幕| 亚洲欧美一区二区三区国产精品 | 国产suv一区二区三区88区| 国产美女娇喘av呻吟久久| 国产美女视频91| av激情亚洲男人天堂| 97精品国产露脸对白| 色就色 综合激情| 欧美午夜理伦三级在线观看| 在线播放视频一区| 精品国产污网站| 欧美激情一区二区三区不卡| 亚洲人成精品久久久久| 亚洲成人av电影在线| 免费观看在线色综合| 国产麻豆精品视频| 91免费精品国自产拍在线不卡| 欧美性猛交xxxxxx富婆| 欧美大肚乱孕交hd孕妇| 欧美高清在线视频| 亚洲一区二区三区四区在线观看 | 国产凹凸在线观看一区二区| 99久久国产免费看| 欧美日韩一级视频| 欧美变态tickle挠乳网站| 日本一区二区不卡视频| 亚洲成人先锋电影| 久久99国产乱子伦精品免费| 国产91丝袜在线播放0| 在线观看国产91| 久久一留热品黄| 亚洲一区在线观看免费| 激情综合网最新| 成人av一区二区三区| 在线91免费看| 中文字幕人成不卡一区| 奇米影视在线99精品| 99re这里只有精品首页| 日韩精品一区二区在线观看| 一区精品在线播放| 狠狠色伊人亚洲综合成人| 91浏览器在线视频| 精品1区2区在线观看| 五月天欧美精品| 91伊人久久大香线蕉| 久久久综合九色合综国产精品| 亚洲成年人影院|