本来IIC算是最简单的期间之一,但是我在上面吃的苦头不是一点两点,所以把一些相关的知识记录下来。
IIC只使用两个信号,SCL提供时钟,SDL作为数据线使用。SCL与SDL都属于具有AND-wired属性,也就是说,连接在IIC总线上的器件,只要有一个把它们拉低,那总线上的信号就是低。IIC就是根据这个属性来进行时钟同步与总线仲裁的。
时钟同步:慢速器件通过将SCL拉低,从而导致时钟拉长。
总线仲裁:往SDL上输出数据的设备,如果发现自己输出的是高电平,但是实际上SDL检测到的却是低电平(当然是被某个输出低电平的器件拉低了),那就失去了总线。这样做的原因是保证得到总线使用权的器件不用重新开始整个IIC操作过程(IIC总线上的信号对它而言,是正确的)。
数据的改变:器件改变数据只能发生在SCL低期间。也就是说,一旦SCL变高了,SDL上的数据就是稳定的。与之不符合的两个特殊情况就是产生的START与STOP信号。START与STOP的通过在SCL低是改变SDL信号实现。
START:当SCL低时,SDL从高到低改变,产生START条件。
STOP:SCL低时,SDL从低变高,产生STOP条件。
阅读(1057) | 评论(0) | 转发(0) |