IIC 差异电平传输 和 IIC 地址

IIC双向电平转换电路设计

 

   现代的集成电路工艺加工的间隙可达0.5μm 而且很少限制数字I/O 信号的最大电源电压和逻辑电平。

为了将这些低电压电路与已有的5V或其他I/O电压器件连接起来,接口需要一个电平转换器。对于双向的总线系统像I2C 总线电平转换器必须也是双向的,不需要方向选择信号。解决这个问题的最简单方法是连接一个分立的MOS-FET管到每条总线线路,尽管这个方法非常简单但它不仅能不用方向信号就能满足双向电平转换的要求还能将掉电的总线部分与剩下的总线系统隔离开来,保护低电压器件防止高电压器件的高电压毛刺波。

     双向电平转换器可以用于标准模式高达100kbit/s 或快速模式高达400kbit/s I2C 总线系统。

     通过使用双向电平转换器可以将电源电压和逻辑电平不同的两部分I2C 总线连接起来配置入下图所示。左边的低电压部分有上拉电阻而且器件连接到3.3V 的电源电压,右边的高电平部分有上拉电阻器件连接到5V 电源电压。两部分的器件都有与逻辑输入电平相关的电源电压和开漏输出配置的I/O。

     每条总线线路的电平转换器是相同的而且由一个分立的N通道增强型MOS-FET管串行数据线SDA的TR1和串行时钟线SCL 的TR2 组成。门极g 要连接到电源电压VDD1, 源极s 连接到低电压部分的总线线路而漏极d 则连接到高电压部分的总线线路。很多MOS-FET 管的基底与它的源极内部连接,如果内部没有,就必须建立一个外部连接。因此,每个MOS-FET 管在漏极和基底之间都有一个集成的二极管n-p 结。如下图所示。

 

 

电平转换器的操作

   在电平转换器的操作中要考虑下面的三种状态:

1、   没有器件下拉总线线路。

    低电压部分的总线线路通过上拉电阻Rp 上拉至VDD1(3.3V) MOS-FET 管的门极和源极都是VDD1(3.3V), 所以它的VGS 低于阀值电压MOS-FET 管不导通这就允许高电压部分的总线线路通过它的上拉电阻Rp 拉到5V。 此时两部分的总线线路都是高电平只是电压电平不同。

2、一个3.3V 器件下拉总线线路到低电平。

    MOS-FET 管的源极也变成低电平而门极是VDD1(3.3V)。VGS高于阀值,MOS-FET 管开始导通然后高电压部分的总线线路通过导通的MOS-FET管被VDD1(3.3V)器件下拉到低电平,此时两部分的总线线路都是低电平而且电压电平相同。

3、一个5V 的器件下拉总线线路到低电平。

   MOS-FET 管的漏极基底、二极管低电压部分被下拉,直到VGS 超过阀值,MOS-FET 管开始导通,低电压部分的总线线路通过导通的MOS-FET管被5V 的器件进一步下拉到低电平,此时两部分的总线线路都是低电平而且电压电平相同。

    这三种状态显示了逻辑电平在总线系统的两个方向上传输,与驱动的部分无关。状态1 执行了电平转

换功能,状态2和3按照I2C总线规范的要求在两部分的总线线路之间实现“线与”的功能。除了VDD1 (3.3V)

 和VDD2  (5.0V)的电源电压外,还可以是例如2V VDD1 和10V VDD2 等的正常操作。其中VDD2必须等于或高于VDD1 。

但是值得注意的是,VDD1作为较低部分的电压,必须能够大于所选择的MOS-FET的阀值电压,也就是必须能够打开MOS-FET。此管参数必须谨慎选择。如下两种参数MOS-FET,在VDD1 (1.8V)到VDD2  (3.0V) 的电路中就可能存在截然不同的效果。

管1

管2

 

    选择管1,由于VGS的范围是1.0~2.5V,很有可能出现大于1.8V的状况,因此VDD1方面传输低电平信号时,MOS-FET不能很完全的被打开,导致到VDD2  (3.0V)方面的信号不能彻底为低,出现半高状态。如下图:

 

     择管2,由于VGS的范围是0.9~1.5V小于1.8V,因此,通路才会正常工作。

     其他不同电压间的转换原理如上,请悉心选择器件。

   在3.3V IIC总线中用到5V IIC器件,该电路已实验通过。

 

 

IIC的地址

 

7位寻址

在7位寻址过程中,从机地址在启动信号后的第一个字节开始传输,该字节的前7位为从机地址,第8位为读写位,其中0表示写,1表示读。

slave-address-fig1.png

图1:7位寻址。I2C总线规范规定,标准模式I2C,从机地址为7位长,其次是读/写位。

任何I2C设备都必须遵循这个标准,USB2XXX传输的从机地址即为这7bit地址,不包含读写位,读写位会根据不同的函数自动添加进去。

保留地址

I2C规范保留了两组和8个地址,1111XXX和0000XXX。这些地址用于特殊用途。下表已被取自 I2C规范(2000年)。

从机地址+R/W 描述
0000 0000 呼叫地址
0000 0001 起始字节
0000 001X CBUS地址
0000 010X 保留供不同的总线格式
0000 011X 保留将来用
0000 1XXX HS模式主机码
1111 0XXX 10位从机地址
1111 1XXX 保留将来用

8位地址

一些厂商在提供从机地址的时候说的是包含了读写位的8bit地址,比如他说写地址为0x92,读地址为0x93,如下图所示

slave-address-fig2.png

图2: 8位寻址

这种情况下,你只需要将这个地址的前7bit提取出来,然后传入USB2XXX的接口函数即可,比如为0x49。

还有一种方式可以判断厂商提供的地址是7bit模式地址还是8bit地址模式的地址,7bit地址模式下,地址的取值范围在0x07到0x78之间,若超过了这个范围,那么这个地址可能就是8bit地址。

slave-address-fig3.png

图3:有效的7bit地址范围

10位寻址

I2C总线的10bit寻址和7bit寻址是兼容的,这样就可以在同一个总线上同时使用7bit地址和10bit地址模式的设备,在进行10bit地址传输时,第一字节是一个特殊的保留地址来指示当前传输的是10bit地址。

slave-address-fig4.png

图4:10bit地址寻址

在使用USB2XXX传输10bit地址模式的时候,只需要在初始化的时候配置为10bit地址模式,然后再调用读写数据函数的时候传入正确的10bit地址即可。

展开阅读全文

没有更多推荐了,返回首页