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

📄 eeprom.h

📁 关于24CXX的驱动程序,你可以很方便的加入到自己的应用程序
💻 H
字号:
/*
 *CopyRight  Reserved?  凯拓科技版权所有  http://www.ktopcn.com  
 *文件名:EEPROM.h
 *描述:提供EEPROM的底层驱动,本模块以I2C为驱动。
 *
 *版本:v1.0
 *作者:ktop
 *日期:2004/11/11
 */
 
 #ifndef EEPROM_H
	#define	EEPROM_H


#include <msp430x14x.h>   
#include "i2c.h"	

 #ifndef TRUE
	#define TRUE	1
	#define true	1
#endif

#ifndef FALSE
	#define	FALSE	0
	#define	false	0
#endif

#ifndef uchar
#define uchar unsigned char
#define	UCHAR uchar
#endif

#ifndef uint
#define uint unsigned int
#define	UINT uint
#endif

#ifndef ulong
#define ulong unsigned long
#define	ULONG ulong
#endif

#ifndef bool
#define bool unsigned char
#define	BOOL bool
#endif

#ifndef CONST
#define	CONST const
#endif


#ifdef EEPROM_C
/*********************************************配置参数*****************************************/
#define				I2C_24C01						0						//定义存储器类型	
#define				I2C_24C02						1
#define				I2C_24C04						2
#define				I2C_24C08						3
#define				I2C_24C16						4
#define				I2C_24C32						5
#define				I2C_24C64						6
#define				I2C_24C128						7
#define				I2C_24C256						8
#define				I2C_24C512						9
#define				I2C_MEM						I2C_24C32     			//选用24C02作为存储器

#define				DELAY_VAL					30000					//写入FLASH延时值,视具体的CPU速度而定。

#if					I2C_MEM <= I2C_24C02
#define				EEPROM_PAGE_SIZE			8						//定义写入时的页大小

#elif				(I2C_MEM > I2C_24C02) && (I2C_MEM <= I2C_24C16)
#define				EEPROM_PAGE_SIZE			16

#elif				(I2C_MEM > I2C_24C16) && (I2C_MEM <= I2C_24C64)
#define				EEPROM_PAGE_SIZE			32

#elif				(I2C_MEM > I2C_24C64) && (I2C_MEM <= I2C_24C256)
#define				EEPROM_PAGE_SIZE			64

#elif				(I2C_MEM == I2C_24C512)
#define				EEPROM_PAGE_SIZE			128

#else
#define				EEPROM_PAGE_SIZE			8
#endif
			
#define				EEPROM_BUF_SIZE				16						//EEPROM的读写缓冲大小,单位:字节
#define				BUF_ENABLE					false					//读写缓冲使能位、TRUE,使能,false:禁用
																		//如果使能读写缓冲,能提高读写速度,但需要
																		//占用RAM,为防止数据丢失,在写入完成后,应调用flush
#define				DEVICE_ADDR_R				0XA1					//存储器读地址
#define				DEVICE_ADDR_W				0XA0					//存储器写地址
  
#define				WRITE_EN()					P2DIR |= 0X08; P2OUT &= ~0x08
#define				WRITE_DS()					P2DIR |= 0X08; P2OUT |= 0X08
																		//清看门狗	
#define				CLRWATCHDOG()				
#define				NOP()						_NOP()
#endif
																		
/********************************************参数定义******************************************/

/*
 *函数性质:公共
 *入口:无
 *出口:无
 *功能:存储器模块初始化。
 */
void MemoryIni(void);


/*
 *函数性质:公共
 *入口:存储器地址uiAddr,读入数据缓冲地址pData,读入长度uiLen
 *出口:无
 *功能:从存储器中读出给定长度的数据,注意:pData所指向的缓冲大小应确保能存入uiLen
 *长度的数据。
 */
void ReadMemory(uint uiAddr,uchar *pData, uint uiLen);


/*
 *函数性质:公共
 *入口;存储器地址uiAddr,待写入的数据地址pData, 待写入的数据长度uiLen。
 *出口:写入成功标志, true:写入成功  false:写入失败
 *功能:将给定长度的数据写入到存储器中,并返回写入成功标志。
 */
bool WriteMemory(uint uiAddr, uchar *pData, uint uiLen);


#if 	BUF_ENABLE == true
/*
 *函数性质:公共
 *入口:无
 *出口:无
 *功能:刷新BUffer中的数据,使buffer中的数据存入到EEPROMK中。
 */
void Flush(void);	 
#endif

#endif

⌨️ 快捷键说明

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