AT24C1024 EEPROM怎样复位
我在制作第二台掌上电脑,用了2个AT24C1024,之前我的第一台用1个AT24C1024EEPROM的试验用的掌上电脑的AT24C1024可以读写数据,但是第二台器件寻址不了,仔细研究说明书了,发现说明书说AT24C1024可以复位,于是就试了一下,添加了复位函数,但是还是寻址不了。这是我写的IIC部分程序片段:void Init_IIC()
{
P0M1=0x03;
P0M0=0x03;
SCL=0;
SDA=0;
}
void Reset_IIC()
{
unsigned char i;
SCL=0;
SDA=1;
for(i=0;i<16;i++)
{
SCL=1;
Delay_uS();
//Feleer();
while(SDA==0);
//Feleer();
SCL=0;
Delay_uS();
}
//Start_IIC();
//Feleer();
}
void Start_IIC()
{
SDA=1;
Delay_uS();
SCL=1;
Delay_uS();
SDA=0;
Delay_uS();
SCL=0;
Delay_uS();
}
void Stop_IIC()
{
SCL=0;
Delay_uS();
SDA=0;
Delay_uS();
SCL=1;
Delay_uS();
SDA=1;
}
void Addr_Dive(unsigned char addr_dive,bit p0,bit opr)
{
//Write_Byte(addr_dive|((unsigned char)p0)<<1|opr);
Write_Byte(0x50<<1);
//Feleer();
while(Read_ACK());
Feleer();
}
void Addr_Word(unsigned char addr_word)
{
Write_Byte(addr_word);
while(Read_ACK());
}
void Write_Byte(unsigned char byte)
{
unsigned char i;
for(i=0;i<8;i++)
{
SCL=0;
Delay_uS();
if(byte&(0x80>>i))
{
SDA=1;
}
else
{
SDA=0;
}
Delay_uS();
SCL=1; //上升沿写入
Delay_uS();
}
SCL=0;
}
bit Read_ACK()
{
bit ack;
SCL=0;
Delay_uS();
SDA=1;
Delay_uS();
SCL=1;
Delay_uS();
SCL=0; //下降沿输出
ack=SDA;
return(ack);
}
void Delay_uS()
{
;
}
搞了好久还是没寻址成功......哪位做过2片AT24C1024读写的网友,说明书上面关于复位的2点说明是什么意思?有空的时候可否指点一下,谢谢啦!!!
[此贴子已经被作者于2020-7-12 23:23编辑过]