查看: 1845|回复: 5

[其他] mc9s98dz60如何将变量的值放在eeprom中????急!在线等。

[复制链接]

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
23
最后登录
2015-12-1
发表于 2015-9-10 16:08:29 | 显示全部楼层 |阅读模式
在写一个程序,需要将两个变量保存在eeprom中,断电后上电还能记着这两个变量的值,并能继续使用,请问该怎么编写呢?数据手册只是教了如何初始化等等,但是具体的将变量保存在相应的地址中,并没有说明。求大神帮助   谢谢啦
我知道答案 目前已有5人回答
回复

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
23
最后登录
2015-12-1
 楼主| 发表于 2015-9-10 16:18:17 | 显示全部楼层
没有人吗!唉
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

243

帖子

0

高级会员

Rank: 4

积分
856
最后登录
2016-6-11
发表于 2015-9-10 21:45:31 | 显示全部楼层
先看你EEPROM的接口,SPI还是I2C。配置的例程应该都有的,然后自己写调用的函数,函数读和写都有协议和时序的,你可以参考对应的datasheet

另外这个做一个普及
http://zhidao.baidu.com/link?url ... EWKXUjDxqpoZLeLCLtG
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

28

帖子

0

注册会员

Rank: 2

积分
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++;  
    }  
  
}  


回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
23
最后登录
2015-12-1
 楼主| 发表于 2015-9-16 11:01:01 | 显示全部楼层
Athlon-258663 发表于 2015-9-11 15:39
数据手册里有提到读写的,我给你一段我的吧

#ifndef _EEPROM_H_        /*prevent duplicated includes*/

谢谢层主,对我的帮组太大了,我目前刚进公司,学习这个芯片还有一点困难,真的非常感谢!!!
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

28

帖子

0

注册会员

Rank: 2

积分
131
最后登录
2015-11-15
发表于 2015-9-17 17:12:02 | 显示全部楼层
shelley逃离 发表于 2015-9-16 11:01
谢谢层主,对我的帮组太大了,我目前刚进公司,学习这个芯片还有一点困难,真的非常感谢!!! ...

我也是实习,来这里多学习。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 02:25 , Processed in 0.097543 second(s), 26 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表