51单片机I2C总线的问题。为什么写不进到外部eeprom啊?

2024-07-04 04:03:34
推荐回答(3个)
回答1:

ead_byte()中第一个SCL=0:表示让对方输入数据;( I2C总线是SCL=0时从设备输出数据,SCL=1时竖袜主设备接收数据。)
第一个SDA=1:表示释放数据线,这样对方发数据到总线上,因为在SDA=0时,会线与,所以对方发不斗配了数据。

write_byte中的“SCL = 0; delay(1); SDA = 1; delay(1); ”和read_byte()中一个意思。只是这里write_byte之后要接收应答信号。

可参考下面的资料空纤指
I2C总线信号时序分析

铁电存储器 FM24C16G(I2C接口) 数据手册
时钟芯片 DS3231(I2C接口) 数据手册

回答2:

我只能说神改你的时序肯定不对 你单步信察运行一下 与芯片手册进行核对 在滑瞎茄写入和读出指令之间加个0.2MS的延时

回答3:

SDA=CY;
这里不对吧?
左移会唯族圆进位吗?
建议:改成 SDA=temp&0x80;
把temp=temp<<1; 放指塌在后面试试穗空。