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

📄 iic0.h

📁 Philips LPC2000系列通过I2C读写EEPROM的程序, 没有读写长度的限制了. 关键词: ARM7, I2C, EEPROM
💻 H
字号:
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  Copyright (c)  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$												肖遥电子(广州)研发中心
$										Shawyoo Electronics (GuangZhou) R&D Center
$                       	http://www.shawyoo.com		 Email: autoele@qq.com
$								 QQ群:9069471/9069433/9524253		All rights reserved.	  
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  Copyright (c)  $$$$$$$$$$$$$$$$$$$$$$$$$$$ */
/*  
                                      文件描述
	文件名: 	  IIC0.h
	功能描述: IIC0底层驱动程序头文件
	编译环境: Keil for ARM + ARTX
	目标CPU:   LPC2000
	作者:	  肖建辉
	创建时间: 
	建议编辑环境:UltraEdit 11.00a+  制表符宽度为三个字符,程序可读性更好。
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
*/					  

#ifndef        __IIC0_H__
#define			__IIC0_H__


#include 	"RTOS.h"               /* ARTX kernel functions & defines     */
#include		"TWI.h"


#ifdef      IIC0_GLOBALS
#define     IIC0_EXT
#else
#define     IIC0_EXT    extern
#endif


// $$$$$$$$$$$$$$$$$$ <<< Use Configuration Wizard in Context Menu >>> $$$$$$$$$$$$$$$$$
// <h>IIC0相关设置


/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//   	<o>I2C_FREQUENCY: IIC0波特率设置 <100000-400000>
//   	<i> Default: 172800
*/
#define		I2C_FREQUENCY      172800

#if (I2C_FREQUENCY >= 400000)
#error  "Out of IIC MAX Frequency"
#endif	

// </h>
// $$$$$$$$$$$$$$$$$$$ <<< end of configuration section >>> $$$$$$$$$$$$$$$$$$$$$$$$$$$$

/* I2C Interface 0 	*/
#define I20CONSET     (*((volatile unsigned char *) 0xE001C000))
#define I20STAT       (*((volatile unsigned char *) 0xE001C004))
#define I20DAT        (*((volatile unsigned char *) 0xE001C008))
#define I20ADR        (*((volatile unsigned char *) 0xE001C00C))
#define I20SCLH       (*((volatile unsigned short*) 0xE001C010))
#define I20SCLL       (*((volatile unsigned short*) 0xE001C014))
#define I20CONCLR     (*((volatile unsigned char *) 0xE001C018))

						
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    IIC从机器件地址
*/
#define		IIC_SLAVER_ADDRESS			0x08
#define		IIC_EE_DEVICE_ADDR1			0xa2

/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    各种命令字枚举
*/
IIC0_EXT		enum
{
	IIC_GET_SPEED_COMMAND = 1,
	IIC_GET_GPS_COMMAND,
	IIC_GET_T485_COMMAND,
	IIC_EEPROM_UART0,
	IIC_EEPROM_GSM_GPRS,
	IIC_READ_COMM,						// IIC读命令(没有重复开始信号)
	IIC_WRITE_COMM,					// IIC写(没有重复开始信号)
	IIC_RW_COMM,						// IIC写读(需重复开始信号)
	IIC_INIT_CHECK_COMM = 'I',
	IIC_BEEP_LED_COMM  = 'B',
	IIC_SET_LED_BUZZER_COMMAND = 0x81,
} IIC_COMMAND_ENUM;



/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    IIC通讯相关变量定义
*/
IIC0_EXT		struct 
{
	uchar		ReadWrite;
	uchar		SlaverAddress;
	uchar		Command;		
	uchar		Busy;
	uchar		RW_Type;
	uchar		Status;
	uint16  	RLen;
	uint16	WLen;
	uchar		*pReadBuffer;
	uchar		*pWriteBuffer;
}  IIC;


/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函数名称:IIC_Read
   功能描述:按指定的从机地址的当前存储地址和长度读取数据
   入口参数:从机地址,任务命令,读取的长度,接收缓冲
   出口参数:无
   全局变量: 无
   创建时间:
   修改时间:
	注1:命令字作用 IIC通讯完毕时,该马上返回哪个任务
	注2:此函数对于操作非EEPROM时,很有用。比如与其它CPU的IIC通讯时,连续读100字节
*/ 	
uchar        IIC_Read(uchar SlaveAddr,uchar Comm,uint16 Length,uchar *pBuffer);

/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函数名称:IIC_Write
   功能描述:写数据到从机
   入口参数:从机地址,任务命令,长度,写入的数据区指针
   出口参数:
   全局变量: 
   创建时间:
   修改时间:
	注1:命令字作用 IIC通讯完毕时,该马上返回哪个任务
	注2:此函数对于操作非EEPROM时,很有用。比如与其它CPU的IIC通讯时,连续写100字节
	    写缓冲的前几个字节可用于从机认识的命令字或地址
*/ 	
uchar        IIC_Write(uchar SlaveAddr,uchar Comm,uint16 Length,uchar *pBuffer);

/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函数名称:IIC_WriteRead
   功能描述:按指定的从机地址的随机存储地址读取数据
   入口参数:器件地址,任务命令,写长度和写数据缓冲指针,读长度和数据缓冲指针
   出口参数:无
   全局变量: 
   创建时间:
   修改时间:
	注1:命令字作用 IIC通讯完毕时,该马上返回哪个任务
	注2:此函数对于操作非EEPROM时,很有用。比如与其它CPU的IIC通讯时,
	    连续写100字节后马上再连读100字节。写缓冲的前几个字节可用于从机认识的命令字或地址
*/ 	
uchar	IIC_WriteRead(uchar Addr,uchar Comm,uint16 WLen,uchar *pW,uint16 RLen,uchar *pR);


/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函数名称:ReadEEPROM
   功能描述:读EEPROM
   入口参数:器件地址,存储器地址,读长度,读取存储指针
   出口参数:无
   全局变量: 无
   创建时间:
   修改时间:	
	注:本函数只支持存储容量大于256字节的EEPROM,要支持小容量的,请自行修改
*/ 
void			ReadEEPROM(uchar DAddr,uint16 RAddr,uint16 RLen,uchar *pData);

/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函数名称:EEPROM_Write
   功能描述:写EEPROM
   入口参数:器件地址,页长度,写存储地址,写长度,待写数据指针
   出口参数:输入成功与否(只判断输入EEPROM,不判断是否写成功),返回0表示成功
   全局变量: 无
   创建时间:
   修改时间:
	注:本函数只支持存储容量大于256字节的EEPROM,要支持小容量的,请自行修改
*/ 
uchar		WriteEEPROM(uchar DAddr,uchar PageLen,uint16 WAddr,uint16 WLen,uchar *pData);


/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函数名称:I2cInit
   功能描述:I2c0初始化函数
   入口参数:无
   出口参数:无
   全局变量: 
   创建时间:
   修改时间:
*/ 
void		I2C0_Init(void);

#endif

/*
 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  End of File $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 */

⌨️ 快捷键说明

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