Chinaunix首页 | 论坛 | 博客
  • 博客访问: 527201
  • 博文数量: 118
  • 博客积分: 2575
  • 博客等级: 大尉
  • 技术积分: 1263
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-27 09:37
文章分类

全部博文(118)

文章存档

2017年(11)

2016年(8)

2015年(1)

2014年(9)

2013年(7)

2012年(38)

2011年(14)

2010年(18)

2009年(12)

分类: Delphi

2012-01-12 08:34:51

本来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) |
给主人留下些什么吧!~~