OpenEdv-开源电子网

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

IIC 24C02地址标志字问题并上传Cadence16.5所画的关于MINI STM32 V3.0 相关元器件封装图。

[复制链接]

7

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-1-4
在线时间
0 小时
发表于 2015-5-9 17:38:49 | 显示全部楼层 |阅读模式
5金钱

IIC 24C02地址标志字问题并上传Cadence16.5所画的关于MINI STM32 V3.0 相关元器件封装图。

Cadence16.5对应的MINISTM32相关元器件封装.rar

405.79 KB, 下载次数: 125

最佳答案

查看完整内容[请看2#楼]

1、对于其他芯片,对应数据手册进行修改即可 2、这个0x55是自定义的,可以用其他的,比如0xaa之类的,原理就是往一个地址写入一个数值,再读取出来做比较,如果正确就说明通讯之类的没问题,否则就错误
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-5-9 17:38:50 | 显示全部楼层
1、对于其他芯片,对应数据手册进行修改即可
2、这个0x55是自定义的,可以用其他的,比如0xaa之类的,原理就是往一个地址写入一个数值,再读取出来做比较,如果正确就说明通讯之类的没问题,否则就错误
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

7

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-1-4
在线时间
0 小时
 楼主| 发表于 2015-5-9 17:38:50 | 显示全部楼层
回复【5楼】八度空间:
---------------------------------
谢谢您了。问题解决了。今天又重新检查了硬件电路是硬件的问题。非常感谢您。
回复

使用道具 举报

7

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-1-4
在线时间
0 小时
 楼主| 发表于 2015-5-10 15:12:06 | 显示全部楼层
回复【2楼】八度空间:
---------------------------------
您好。谢谢你的帮助。请问您一下的。我用的24CO2芯片是ATMEL268 24C02N SU27D。对于这个检查是否正常工作程序,我把最后一个地址255改为0(即所有的255改为0,让它从第一个地址先写入一个任意数据,然后再读出这个数据,),
//检查AT24CXX是否正常工作

u8 AT24CXX_Check(void)
{
u8 temp;
temp=AT24CXX_ReadOneByte(0);    
if(temp==0X55)return 0;    
else
{
AT24CXX_WriteOneByte(0,0X55);
    temp=AT24CXX_ReadOneByte(0);   
if(temp==0X55)return 0;
}
return 1;   
}

按照先写入再读出道理,为什么这样貌似不行啊???
之所以这样改是因为我没有找到24CO2芯片型号为ATMEL268 24C02N SU27D的最后一个地址去存储标志字。是不是必须要找到最后一个地址去存储标志字???
回复

使用道具 举报

7

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-1-4
在线时间
0 小时
 楼主| 发表于 2015-5-10 15:47:47 | 显示全部楼层
回复【2楼】八度空间:
---------------------------------
还有就是关于硬件电路,我没有接错,因为昨天下午我检查了三遍,今天上午又检查了两遍。谢谢您的帮忙。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-5-10 17:24:00 | 显示全部楼层
回复【3楼】SJ似水年华:
---------------------------------
/**
  *****************************************************************************
  * @Name: 检测24c02
  *
  * @Brief: 利用EEPROM第一个地址读写一个字节数据来检测 
  *
  * @Input: driveaddr:设备地址
  *
  * @Output: none
  *
  * @Return: 0:表示24c02正常
  *           1:表示24c02错误或者已损坏
  *****************************************************************************
**/
u8 EEPROM_Check(u16 driveaddr)
{
u8 test_value = 0;

test_value = EEPROM_Read_Byte(driveaddr, 0x0); //首先读取第一个地址空间的数据
if(test_value == Check_Data) //用这个字节来检测总线上的EEPROM
{
return 0; //设备正常
}
else
{ //EEPROM是全新的,执行下面操作
test_value = 0;
EEPROM_Write_Byte(driveaddr, 0x0, Check_Data); //向EEPROM第一个地址空间写入0x55
for(test_value = 0;test_value < 250;test_value++) {} //延时一定时间再读取
test_value = EEPROM_Read_Byte(driveaddr, 0x0); //再次读取第一个地址空间的数据

if(test_value != Check_Data) return 1; //器件错误、损坏或者不存在
}
return 0; //EEPROM正常
}


上面是我的测试代码
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

7

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-1-4
在线时间
0 小时
 楼主| 发表于 2015-5-12 07:43:28 | 显示全部楼层
回复【5楼】八度空间:
---------------------------------
您好啊。能不能把您这个程序的工程文件上传一下啊。因为我工程里没有上面对应的函数。麻烦您了。比如“Check_Data”对应的是什么都不知道。
我把检测能否工作程序改成这样的,不知道有没有问题(因为没有您上面程序所提到的函数只能这样改),麻烦你看一下。谢谢。。。


u8 EEPROM_Check(u16 driveaddr) 

u8 test_value = 0; 

test_value = AT24CXX_ReadOneByte(driveaddr); //指定地址读入一个字节
if(test_value == 0X55) //

return 0; //

else 
{ //EEPROM?????????è????????????×÷
test_value = 0; 
AT24CXX_WriteOneByte(driveaddr, 0X55); //指定地址写入一个字节
for(test_value = 0;test_value < 250;test_value++) {} //延时
test_value = AT24CXX_ReadOneByte(driveaddr); //指定地址读入一个字节

if(test_value != 0X55) return 1; //????????????

return 0; //EEPROM?? 


下面是主函数中关于24C02检测函数的调用
  while(EEPROM_Check(0x00))//?ì??????24c02
{
LCD_ShowString(60,150,200,16,16,"24C02 Check Failed!");
delay_ms(500);
LCD_ShowString(60,150,200,16,16,"Please Check!      ");
delay_ms(500);
LED0=!LED0;//DS0????
}

可是还是报错了。是不是芯片有问题啊?但是我是刚买的24C02啊。


回复

使用道具 举报

7

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-1-4
在线时间
0 小时
 楼主| 发表于 2015-5-12 09:43:25 | 显示全部楼层
回复【5楼】八度空间:
---------------------------------
您好,刚才芯片换了一下,还是相同的结果,就是检测函数一直检测不到24CO2存在。我用的24C02是ATMEL268 24C02N SU27D
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-5-12 22:15:29 | 显示全部楼层
回复【8楼】SJ似水年华:
---------------------------------
恭喜恭喜
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 13:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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