1、首先确认你的I2C的速率,软件模拟的话就与MCLK直接相关了,自然单片机的速率下降就会正常;如果是硬件I2C的话需要看时钟来源是不是MCLK并作修改。
2、看你的电路并没有进行上拉也就是SDA和SCL需要接4.7K或者10K的电阻至VCC即可。
3、如果你的I2C是等待延时的话建议修改delay参数或者使用返回ACK查询方式。
4、有问题随时hi我,可以给你传一份调试通过的代码!
1、用示波器检查一下波形,看看是不是受到干扰啦;
2、检查接地,看有没有共地;
3、降低上拉电阻的阻值;
4、检查上拉电阻的位置,尽量靠近master
你说的单片机的速度是指什么?
你要确定一下I2C clock的频率,是不是超过了AT24C256所能接受的时钟频率了。
两次写数据之间有没有等待前一次的数据写完?可以等20MS,或者再写判断有没有正确的ACK信号。