OpenEdv-开源电子网

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

请问下原子大哥和各位高手关于库函数例程IIC实验里的24C02程序问题~~拜托了~~

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2012-7-23
在线时间
0 小时
发表于 2012-7-23 12:56:41 | 显示全部楼层 |阅读模式

 最近在看原子大哥24C02的IIC实验例程,看到有个“检查AT24CXX是否正常”的函数有几个问题想请教一下,原函数如下:
//检查AT24CXX是否正常
//这里用了24XX的最后一个地址(255)来存储标志字.
//如果用其他24C系列,这个地址要修改
//返回1:检测失败
//返回0:检测成功
u8 AT24CXX_Check(void)
{
 u8 temp;
 temp=AT24CXX_ReadOneByte(255);//避免每次开机都写AT24CXX      
 if(temp==0X55)return 0;     
 else//排除第一次初始化的情况
 {
     AT24CXX_WriteOneByte(255,0X55);
     temp=AT24CXX_ReadOneByte(255);   
    if(temp==0X55)return 0;
 }

  return 1;            
}
1、这个检查函数是一定要有的么?如果没有这个函数会怎么样呢?

2、为什么要“避免每次开机都写AT24XX”呢?换句话说,如果没有避免这个,用久了会怎么样呢?

3、这里面的判断了两次temp==0X55,0X55是什么?有什么用的呢?

4、我现在是改写了这个函数,用来检测AT24C16的,请原子大哥和各位高手帮我检查下对不对,十分感谢:
//检查AT24CXX是否正常
//这里用了24XX的最后一个地址(255)来存储标志字.
//如果用其他24C系列,这个地址要修改
//返回1:检测失败
//返回0:检测成功
u8 AT24CXX_Check(void)
{
 u8 temp;
 temp=AT24CXX_ReadOneByte(2047);//避免每次开机都写AT24CXX     
 if(temp==0X55)return 0;    
 else//排除第一次初始化的情况
 {
  AT24CXX_WriteOneByte(2047,0X55);
     temp=AT24CXX_ReadOneByte(2047);  
  if(temp==0X55)return 0;
 }
 return 1;            
}
其实我就是把255改成了2047,其他还需要改么?
不过我下下去了还是检查不到AT24C16~~应该还有地方要改的吧?

5、谢谢原子大哥和各位高手了~~

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-7-23 14:02:40 | 显示全部楼层
回复【楼主位】luocooer:
---------------------------------
1,不一定.没有就无法检测24C02是否存在.
2,因为24C02是EEPROM器件,你可以百度一下EEPROM都有什么特性.
3,就是个标识符,可以随便定义.最好不要是0和0XFF.
4,代码无问题.检测不到请检查代码,你的EE_TYPE修改为24C16了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2012-7-23
在线时间
0 小时
 楼主| 发表于 2012-7-23 15:27:13 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
感谢原子大哥的回复,我是已经将EE_TYPE改成了24C16了,不过还是不能检测,我就在想是不是标志位0X55有问题要改呢。。。然后我用SW调试了下您的那个24C02的正确的程序,发现进行到这个函数的时候,“temp=AT24CXX_ReadOneByte(255);//避免每次开机都写AT24CXX”   这句话执行完后,temp是0XFF,然后后面的else里面的temp也是0XFF,后面就一直这样直接就检测不到了。。。不过不经过调试,直接运行又是可以检测到的,难道不能用SW来调试您的正确程序么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-7-23 17:38:20 | 显示全部楼层
回复【3楼】luocooer:
---------------------------------
IIC是可以SWD调试的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 23:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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