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

📄 lpc_lib_iic.c

📁 使用embest IDE开发工具开发的基于LPC2294 的触摸屏开发
💻 C
字号:
/*
**********************************************************************************************
*
*     		  Embest Info&Tech Co., Ltd.  All rights reserved.
*                   		  www.embedinfo.com
*			
*file:     		lpc_lib_IIC.c
*author:   		embest 
*establish: 	2006.xx.xx
*modify:		xx
*notes:			xx
**********************************************************************************************
*/
/*
**********************************************************************************************
*                                       include files
**********************************************************************************************
*/
#include	"..\..\com\lpc_lib_IIC\lpc_lib_IIC.h"
/*
**********************************************************************************************
*                                  global variable define 
**********************************************************************************************
*/


/*
**********************************************************************************************
* name:		IIC_init
* func:		initialize IIC
* para:		none
* ret:		none
* modify:
* comment:		
**********************************************************************************************
*/	

void IIC_init(void)
{
	INT32U i;
	
	i=PINSEL0;								 	//enable pin to IIC
	i &= (~P0_IIC_PINSEL0_MASK);
	i |= P0_IIC_PINSEL0_EN;
	PINSEL0 = i;
	
	I2C_I2SCLL=SCLL;							//write clock parameter
	I2C_I2SCLH=SCLH;
						
	I2C_I2CONSET=I2CONSET_I2EN;					//enable IIC function
	

}
/*
**********************************************************************************************
* name:		Wr24C02
* func:		write data to 24c02
* para:		Deaddr: device address. addr:memory unit address.  data: 
* ret:		none
* modify:
* comment:		
**********************************************************************************************
*/
void Wr24C02(INT8U Deaddr,INT8U addr,INT8U data)
{
	I2C_I2CONSET |= I2CONSET_STA;				//START
	
	while(!(I2C_I2CONSET & I2CONSET_SI)); 		//clear start bit
	I2C_I2CONCLR = I2CONCLR_STAC;
	
	I2C_I2DAT=(Deaddr&0xfe);					//send device address
	I2C_I2CONCLR = I2CONCLR_SIC;
						
	while(!(I2C_I2CONSET & I2CONSET_SI));
	I2C_I2DAT=addr;								//send memory address	
	I2C_I2CONCLR = I2CONCLR_SIC;
	
	while(!(I2C_I2CONSET & I2CONSET_SI));
	I2C_I2DAT=data;								//send data
	I2C_I2CONCLR = I2CONCLR_SIC;	
	

	while(!(I2C_I2CONSET & I2CONSET_SI));	
	I2C_I2CONSET |= I2CONSET_STO;				//stop
	I2C_I2CONCLR = I2CONCLR_SIC;		
	
	time_dly(50);								//delay time for data from buffer ram to rom
}


/*
**********************************************************************************************
* name:		Rd24C02
* func:		read data from 24c02
* para:		Deaddr:device address.  addr:read memory unit address.  data: data pointer
* ret:		none
* modify:
* comment:		
**********************************************************************************************
*/		

void Rd24C02(INT8U Deaddr,INT8U addr, INT8U *data)
{
	INT8U rebyte;
	
	I2C_I2CONSET |= I2CONSET_STA;				//START
	
	while(!(I2C_I2CONSET & I2CONSET_SI)); 		//clear start bit 
	I2C_I2CONCLR = I2CONCLR_STAC;
	
	I2C_I2DAT=(Deaddr&0xfe);					//send device address
	I2C_I2CONCLR = I2CONCLR_SIC;
	
					
	while(!(I2C_I2CONSET & I2CONSET_SI));
	I2C_I2DAT=addr;								//send memory address	
	I2C_I2CONCLR = I2CONCLR_SIC;
	time_dly(10);								//delay time for stability

	I2C_I2CONSET |= I2CONSET_STA;
	I2C_I2CONCLR = I2CONCLR_SIC;

	
	while(!(I2C_I2CONSET & I2CONSET_SI)); 		//reSTART
	I2C_I2CONCLR = I2CONCLR_STAC;
	
	I2C_I2DAT=(Deaddr|0x01);					//change to read mode	
	I2C_I2CONCLR = I2CONCLR_SIC;
	
	while(!(I2C_I2CONSET & I2CONSET_SI));		//ask for getting data
	I2C_I2CONCLR = I2CONCLR_SIC;

	while(!(I2C_I2CONSET & I2CONSET_SI));		//read data
	rebyte=I2C_I2DAT;
	
	I2C_I2CONSET |= I2CONSET_STO;				//stop	
	I2C_I2CONCLR = I2CONCLR_SIC;
			
	*data=rebyte;		
}
/*
**********************************************************************************************
* name:		IIC_close
* func:		close IIC function
* para:		none
* ret:		none
* modify:
* comment:		
**********************************************************************************************
*/

void IIC_close(void)
{
	INT32U i;
	
	i=PINSEL0;								 		//restore pin to GPIO
	i &= P0_IIC_PINSEL0_MASK;
	PINSEL0 = i;
						
	I2C_I2CONCLR=I2CONCLR_I2ENC;					//enable IIC function
		
}

⌨️ 快捷键说明

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