OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7119|回复: 7

AT24C02存储数据时候出现问题

[复制链接]

5

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2012-8-2
在线时间
8 小时
发表于 2013-7-12 15:19:22 | 显示全部楼层 |阅读模式

 
  AT24CXX_WriteOneByte(0,0x0a);    //校验码
  AT24CXX_WriteOneByte(1,0x0b);    //校验码
  AT24CXX_WriteOneByte(2,0x0c);    //校验码
  AT24CXX_WriteOneByte(3,0x0a);    //默认通道设置

  AT24CXX_WriteOneByte(4,0x0F);     //MacFlags默认

只能读取地址0,1,2的数据,3,4地址的数据无法读出,这个问题谁能解释下吗
 temp1=AT24CXX_ReadOneByte(3);    //temp1发送到数码管
    

conscience,confidence,courage
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2012-8-2
在线时间
8 小时
 楼主| 发表于 2013-7-12 15:46:51 | 显示全部楼层
void save_channel_defualt(void)
{
     u8 addr_pannel;
 unsigned int cur_value;
 unsigned char temp,channel;
 state_pan=0xc0;   //1100 0000
//  for(channel=0;channel<3;channel++)
//  {
   addr_pannel=pannel_addr_eep; //   +channel*28
 for(temp=0;temp<13;temp++)
 {
//    WDR();
   cur_value=para_value[temp];
AT24CXX_WriteOneByte(addr_pannel++,(cur_value>>8)&0xff);//低地址   写高8位
cur_value=para_value[temp];  
AT24CXX_WriteOneByte(addr_pannel++,cur_value&0xff); //高地址   写低8位
//连续存储13次将13个状态的当前状态保存下来。  
 }
 AT24CXX_WriteOneByte(addr_pannel++,0);
 AT24CXX_WriteOneByte(addr_pannel++,state_pan);
// }
 AT24CXX_WriteOneByte(0,0x0a); //校验码
 AT24CXX_WriteOneByte(1,0x0b); //校验码
 AT24CXX_WriteOneByte(2,0x0c); //校验码
 AT24CXX_WriteOneByte(3,0x0a);        //默认通道设置为0

 AT24CXX_WriteOneByte(4,0x0F); //MacFlags默认为0
}
void save_defualt(void)
{
   u8 addr_pannel;
 unsigned char temp_flag1,temp_flag2,temp_flag3;
 addr_pannel=0; //
   temp_flag1=AT24CXX_ReadOneByte(addr_pannel++);
 temp_flag2=AT24CXX_ReadOneByte(addr_pannel++);
 temp_flag3=AT24CXX_ReadOneByte(addr_pannel++);
 if(!((temp_flag1==0x0a)&&(temp_flag2==0x0b)&&(temp_flag3==0x0c)))
 {
     load_value();
     save_channel_defualt();
 }
}


void load_pannel()
{  
 u8 addr_pannel;
 unsigned int cur_value,cur_temp;
 unsigned char temp;
 addr_pannel=pannel_addr_eep;    //+pannel_channel*28
 for(temp=0;temp<13;temp++)
 {
  cur_value=AT24CXX_ReadOneByte(addr_pannel++);  
cur_value=cur_value<<8;
cur_temp=AT24CXX_ReadOneByte(addr_pannel++);
cur_value|=cur_temp;
if ((cur_value<= para_tab[temp].max)&&(cur_value>= para_tab[temp].min))
    para_tab[temp].value = cur_value;
else
    para_tab[temp].value = para_tab[temp].min;
 }

 cur_value=AT24CXX_ReadOneByte(addr_pannel++);  //当前值
 cur_value=cur_value<<8;

 cur_temp=AT24CXX_ReadOneByte(addr_pannel++);
 cur_value|=cur_temp;

 if (cur_value <255)     //获取state_pan
  state_pan = cur_value&0xff;
 else
  state_pan = 0;
  
 if(!(state_pan&ar_arc_f))
     ClrBit(state_pan,c_v);       //在手工焊时,单位默认为电压.   
}
conscience,confidence,courage
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-12 19:13:11 | 显示全部楼层
你的24C02是好的吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2012-8-2
在线时间
8 小时
 楼主| 发表于 2013-7-12 21:33:30 | 显示全部楼层
板子买来第一次做这个实验
conscience,confidence,courage
回复 支持 反对

使用道具 举报

5

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2012-8-2
在线时间
8 小时
 楼主| 发表于 2013-7-12 21:35:30 | 显示全部楼层
不确定啊,但是检查24c02那个函数我放到main里了,通过检测了
conscience,confidence,courage
回复 支持 反对

使用道具 举报

5

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2012-8-2
在线时间
8 小时
 楼主| 发表于 2013-7-12 21:36:22 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
不确定 ,第一次用它
conscience,confidence,courage
回复 支持 反对

使用道具 举报

70

主题

6769

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13162
金钱
13162
注册时间
2012-11-26
在线时间
3817 小时
发表于 2013-7-12 22:00:57 | 显示全部楼层
多换几个地址试试
学无止境
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-7-12 23:19:32 | 显示全部楼层
回复【楼主位】aniken:
---------------------------------
你多多测试几个地址,看一下是什么效果,检查24c02的函数贴出来?  有的检查24c02函数的程序就是,给01地址存进数据在读回来,如果对了就说明at24c02是好的,并不是所有的地址都检查一遍是不是好的。所以如果at24c02是坏的,那么可能就检查不到。所以你多测试几个地址   有的时候是时序上没写好,程序不稳定造成的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 07:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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