1.不管是输出高电平或者在空闲时,SDA和SCL的高电平都应该是浮高,虽然都是高电平,实际是外部上拉电阻的作用,而不是MASTER输出的高电平.因此不管楼主的做法:"空闲时刻,SCL上电平的高低是无所谓的"极易引起误动作,今后程序的兼容性也成问题.单片机在I2C中要输出高电平,需将相应的IO口设置成高阻状态(输入状态),而要输出低电平,则要先将对应锁存器设置成0,然后把端口状态设置成输出状态.<br />2.在I2C协议中,除START和STOP条件外,所有SDA的数据电平改变必须在SCL为低电平时,否则视为START或STOP条件.遵循此原则,楼主第二个问题就不应该存在<br />
|