📄 eeprom.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 + -