本帖最后由 eehome 于 2013-1-5 09:55 编辑
IIC串行总线接口设计与应用
I2C(Inter Intergrated Circuit)总线是一种用于IC器件之间连接的二线制总线。它通过两根线(SDA,串行数据线;SCL,串行时钟线)在连到总线上的器件之间传送信息,根据地址识别每个器件(不管是微控制器、LCD驱动器、存储器还是键盘接口)根据器件的功能可以工作于发送或接收方式。 对于发送器和接收器而言,在进行数据传送时可以是主器件,也可以是从器件,主器件用于启动总线上传送数据并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件,总线上住和从、发送和接收的关系不是永久的,而仅取决于此时数据传送的方向。
SDA和SCL都是双向I/O线,通过上拉电阻接正电源。当总线空闲时,2根线都是高电平。连接总线器件的输出级必须是开漏或集电极开路,以具有线“与”功能。I2C总线上数据传诵的最高速率为100Kb/s,连到总线上器件数量仅受总线电容400pF的限制。
送到SDA线上的每个字节必须为8位,每次传送的字节数不限,每个字节后面必须跟1个响应位。数据传送时,先传最高位。如果接收器件不能接收下一个字节(例如正在处理一个内部中断,在这个中断处理完前就不能接收I2C总线上的数据字节),可以使时钟保持低电平,迫使主器件处于等待状态。当从机准备好接收下一个数据字节释放SCL线后继续传送。
数据传送过程中,确认数据是必须的。认可位对应于主器件的一个时钟,在此时钟内发送器件释放SDA线,而接收器件必须将SDA线拉成低电平,使SDA在该时钟的高电平期间为稳定的低电平。
通常被寻址的接收器件必须在收到每个字节后作出响应,若从器件正在处理一个实时事件不能接收而不对地址认可时,从器件必须使SDA保持高电平,此时主器件产生一个结束信号使传送异常结束。
发生在SDA线上的总线竞争是这样进行的:如果一个主器件发送高电平,而另一个主器件发送一个低电平,此时其发送电平与SDA总线上电平不对应的器件自动关掉其输出级。当然,也可以有多个主器件参与竞争,这取决于I2C总线上主器件的数目。总线竞争可以在许多位上进行。第一级竞争是地址位的比较,如果主器件寻址同1个从器件,则下一步竞争进入数据位的比较,因为是利用I2C总线上信息进行仲裁,所以信息不会丢失。
在I2C总线上传送信息时的时钟同步是由连在SCL线上的器件的逻辑“与”完成的。SCL线上由高到低的跳变将影响有关的器件,使它们开始低电平期。一旦一个器件时钟跳为低电平,将使SCL线保持低电平直至该时钟到达高电平。
当所有器件结束它们的低电平期时,时钟线被释放返回高电平。这样使器件时钟之间没有差别,而所有的器件都同时开始它们的高电平期。之后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生1个同步时钟,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。
I2C总线还设有广播呼叫地址用于寻址总线上的所有器件。若一个器件不需要广播呼叫寻址中所提供的任何数据,该器件可以忽略该地址,不作响应。如果器件需要广播呼叫寻址中提供的数据,该器件应对地址作出响应。其表现为一个接收器。第二个和接着的数据字节为每个从器件所响应并接收处理。从器件对不能处理的字节应忽略,并不作出响应。
0
|
|
|
|
谢谢分享!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
|
ddddddddddddddddddddddddddddddddddd
|
|
|
|
|