21ic问答首页 - AT24C512 写入数据每256个地址写入相同数据问题
AT24C512 写入数据每256个地址写入相同数据问题
zzzzzzzzz11112021-11-11
在使用AT24C512数据过程中,当向地址0写入数据时,地址256、512、(累加256)都会同时写入这个数据。向向地址1写入数据时,地址257、513、(累加256),其他地址也是相同情况。写入数据和读取数据都是正确没问题的 这样相当于最后只用到了256个地址,找不到任何问题,芯片也换了3个了,买了不同店的芯片。这是写入数据的代码,看哪位大拿能指点下,或者有遇到过类似问题的没有
//**********************************************//
//函数名称: void write_rom(uchar addr, uchar data)
//函数功能: 写数据到 ROM
//传入参数: addr 写入的地址
//返回参数: write_rom 待写入的数据
//编写时间: 2021-10-16
//**********************************************//
void write_rom(int addr, uchar data1)
{
uchar ch,i;
start_rom() ;
write_byte_rom(0xA0) ; //选择写操作
ack_rom() ;
ch=(unsigned char)addr/256;
write_byte_rom(ch) ; //写入地址高八位
ack_rom() ;
ch=(unsigned char)addr%256;
write_byte_rom(ch) ; //写入地址低八位
ack_rom() ;
write_byte_rom(data1) ; //写入数据
ack_rom() ;
stop_rom() ;
for(i=0x20; i!=0; i--)
{
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
}
}
//**********************************************//
//函数名称: void write_rom(uchar addr, uchar data)
//函数功能: 写数据到 ROM
//传入参数: addr 写入的地址
//返回参数: write_rom 待写入的数据
//编写时间: 2021-10-16
//**********************************************//
void write_rom(int addr, uchar data1)
{
uchar ch,i;
start_rom() ;
write_byte_rom(0xA0) ; //选择写操作
ack_rom() ;
ch=(unsigned char)addr/256;
write_byte_rom(ch) ; //写入地址高八位
ack_rom() ;
ch=(unsigned char)addr%256;
write_byte_rom(ch) ; //写入地址低八位
ack_rom() ;
write_byte_rom(data1) ; //写入数据
ack_rom() ;
stop_rom() ;
for(i=0x20; i!=0; i--)
{
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
delay5us() ;
}
}
赞0
此语句错误,结果是ch永远为0
评论
2021-11-16
赞0
评论
2021-11-12
赞0
评论
2021-11-12
赞0
评论
2021-11-12
赞0
评论
2021-11-12
您需要登录后才可以回复 登录 | 注册