在线时间12 小时
UID258663
注册时间2015-7-9
NXP金币0
该用户从未签到
注册会员

- 积分
- 131
- 最后登录
- 2015-11-15
|
发表于 2015-9-11 15:39:39
|
显示全部楼层
数据手册里有提到读写的,我给你一段我的吧
#ifndef _EEPROM_H_ /*prevent duplicated includes*/
#define _EEPROM_H_
#include "derivative.h" /* include peripheral declarations */
/*------------------------------------------------------------------------------*/
#define EEPROMStart 0x1400
#define EEPROMEnd 0x17FF
#define ERR_OK 0 /* OK */
#define ERR_WRONG 1
#define ERR_RANGE 2 /* Parameter out of range */
#define ERR_BUSY 3 /* Device is busy */
#define ERR_MISALIGN 4 /* Requested value or method not available */
#define ERR_NON_BLANK 5 /* EEPROM word not blank */
#define ERR_BLANK 6 /* EEPROM word blank */
/*-- Function Prototypes -------------------------------------------------------*/
extern void EEPROM_Init(void);
extern void Read_EEPROM(unsigned int start_addr, unsigned char *pReadbuf, unsigned char length);
extern void Write_EEPROM(unsigned int start_addr, unsigned char *pData, unsigned char length);
/*------------------------------------------------------------------------------*/
#endif /*EEPROM_H*/
void EEPROM_Init(void)
{
if (FCDIV_DIVLD == 0) FCDIV = 0x4C; //20M/8/(12+1)=192.3KHz 5.2us
}
//写EEPROM 起始地址 数据指针 字节数
void Write_EEPROM(unsigned int start_addr, unsigned char *pData, unsigned char length)
{
unsigned char i;
unsigned char *pAddr;
if(FSTAT_FACCERR == 1)
FSTAT_FACCERR = 1;//通过写入1来清除错误标记
pAddr = (unsigned char *)(start_addr);//指定地址
*pAddr = 0x01;
FCMD = 0X40;//擦除命令
FSTAT_FCBEF = 1;//启动命令
asm{ //等待4个bus cycle
NOP
NOP
NOP
NOP
}
while(FSTAT_FCCF == 0);//等待完成
for(i = 0; i < length; i++)
{
if(FSTAT_FACCERR == 1)
FSTAT_FACCERR = 1;
pAddr = (unsigned char *)(start_addr + i);
*pAddr = pData[i];
FCMD = 0X20;//写入命令
FSTAT_FCBEF = 1;// 启动命令
asm
{
NOP
NOP
NOP
NOP
}
while(FSTAT_FCCF == 0);//等待完成
}
}
//读取EEPROM 起始地址 存放的buf 字节数
void Read_EEPROM(unsigned int start_addr, unsigned char *pReadbuf, unsigned char length)
{
unsigned char i;
unsigned char *pAddr;
for(i = 0; i < length; i++)
{
pAddr = (unsigned char *)(start_addr);
pReadbuf[i] = *pAddr;
start_addr++;
}
}
|
|