IIC总线简介

楼主
IIC总线简介
  [imga]../../upload/2006/05/01/161729.gif[/imga]
   在现代电子系统中,有为数众多的IC需要进行相互之间以及与外界的通信。为了提供硬件的效率和简化电路的设计,PHILIPS开发了一种用于内部IC控制的简单的双向两线串行总线I2C。I2C总线支持任何一种IC制造工艺,并且PHILIPS和其他厂商提供了种类非常丰富的I2C兼容芯片。作为一个专利的控制总线,I2C已经成为世界性的工业标准。
  [imga]../../upload/2006/05/01/161755.gif[/imga]
每个器件都有一个唯一的地址,而且可以是单接收的器件(例如:LCD驱动器)或者可以接收也可以发送的器件(例如:存储器)。发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅被寻址。I2C是一个多主总线,即它可以由多个连接的器件控制。
    基本的I2C总线规范于20年前发布,其数据传输速率最高为100Kbits/s,采用7位寻址。但是由于数据传输速率和应用功能的迅速增加,I2C总线也增强为快速模式(400Kbits/s)和10位寻址以满足更高速度和更大寻址空间的需求。
    I2C总线始终和先进技术保持同步,但仍然保持其向下兼容性。并且最近还增加了高速模式,其速度可达3.4Mbits/s。它使得I2C总线能够支持现有以及将来的高速串行传输应用,例如EEPROM和Flash存储器。

 摘自:zlgmcu
1楼
请问:为何IIC传送过程中,其地址(slaver address)是7bits?
IIC的书上说:送入SDA中的每个字节长度必须是8-bits,在IIC总线上,START信号后,一个从地址(slave address)被传送,在该字节中的bit7是一个读写选择信号,“0”表示写,“1”表示读。但在实际中传送的地址是8bits的,如在我们门的一个系统中EDID的地址是0xA0,这种矛盾怎么解释?请e-mail:xintan_chen@amlogic.com
2楼
你可能还没理解到,因为第一个字节(为slave address)由7位地址和一位R/W读写位组成的,这字节是个器件地址。
首先,你要知道:常用IIC接口通用器件的器件地址是由种类型号,及寻址码组成的,共7位。
如格式如下:
  D7 D6 D5 D4 D3 D2 D1 D0
1-器件类型由:D7-D4 共4位决定的。这是由半导公司生产时就已固定此类型的了,也就是说这4位已是固定的。

2-用户自定义地址码:D3-D1共3位。这是由用户自己设置的,通常的作法如EEPROM这些器件是由外部IC的3个引脚所组合电平决定的(用常用的名字如A0,A1,A2)。这也就是寻址码。
所以为什么同一IIC总线上同一型号的IC只能最多共挂8片同种类芯片的原因了。

3-最低一位就是R/W位。这位不用我多说了。

这没什么矛盾可解释,你再看看书本和多动脑子我想你很快就会明白的。
3楼
经你这么一说,我大概明白了,谢谢!
按你的说法:在IIC传送中,先传送最高位D7,我现在明白为何在我们的系统中EDID有两个地址是0xA0/0xA1,一个是读地址,一个是写地址,我以前还真没搞懂
4楼
您好,有关I2C的传送又来请教你了。

1st、 在我们系统的主芯片与MStar芯片的通信过程中,传送的第一个数据的最高位总是为低电平,比如我向某寄存器中先写一个数(0xff),再读取该寄存器,读出的数据的最高位总是为“0”(0x7f)。不过这种错误仅仅在第一个数据出现,以后的数据就正确了。

2nd、 在我们系统的主芯片与EEPROM芯片的通信过程中,情况就更糟糕,不管向memory Addr 中写什么数据,然后再读取这个memory Addr中数据,出来的数据总是“0xff”(note:slaver Addr正确,芯片的电源ok,也没有写保护WP=0),我实验了两块板子,不可能这两块板子的EEPROM都坏了吧!程序(与1st中的)是一样的,只是slaver Addr发生改变。

5楼
从你的资料看来,我无法总判定是那里或什么问题;估计很大程序上是你的程序问题。
要知道,主机向从访问时。
  1-先向总线发出芯片地址
  2-如果有芯片地址正确的芯片,会产生一个SDA上应答。
  3-接着主机再发出应答过的芯片发出将要所进行操作的片内地址。
  4-芯片地址正确的芯片,会再产生一个SDA上应答。
  5-此时如果是读操作,从芯片将输出数据到SDA上。如果是写操作,主机会将数据写到SDA上。
  就这样可以完成了一个读或写的操作。当然这里面还开始和停止位这些动作。
  对以此类的分析,我们一般建议学生使用我站销售的虚拟示波器来做分析,用ezSDO虚拟示波器可以方便地为IIC总线进行分析,因为有较深圳的波动存储功能。捕获回来的波形后,可以进行分析比较等动作。

电脑版 Page created in 0.1562 seconds width 3 queries.