首页 > 技术文章 > 手机研发 > 基带 > I²C介面的特性与应用

I²C介面的特性与应用

52RD.com 2006年9月5日 宇量            评论:3条 查看 我来说两句

I²C(Inter Integrated Circuit)是荷兰飞利浦公司提倡的串联介面(serial interface),它与微导线元件(Microwire devices )的用途相同,两者主要差异是微导线元件使用三条导线,如果包含CS在内时则多达四条导线,相较之下I²C却只有二条导线。I²C的通信速度标准模式为0~100kbps,快速模式为0~400kbps,高速模式为0~3.4Mbps。

表1是I²C的信号名称与功能一览,I²C可作Bus连接,Bus的静电容量低于400pF时,一个Bus甚至可作复数个元件连接。I²C与微导线、SPI不同,它没有选择元件的晶片选择(chip selector)信号,I²C的元件闸道(gate)选择是以送讯指令的元件位址(devices address)执行。I²C的Bus以开放渠道((open drain)连接信号线,它还可以在Bus上作复数个主元件(master devices)的连接,不过同时成为接收(active)的主元件却只有一个,它与微导线元件一样,经常使用8根脚架的串联EEPRON type元件,目前市面上已经出现1Mbite超大容量I²C元件,该元件除了应用在设定资讯记忆体之外,经常被当作取代CPU程式的ROM使用。
 



表1 I²C信号的功能一览
 

I²C的储取时序
图1是Atmel Corporation开发的典型I²C元件AT24C02的脚架配置图,AT24C02属于2kbit串联EEPROM,它与SPI type的串联EEPROM一样都是8位元储取(access),2kbit的场合,以256×8位元储取时变成8位元。
 



图1 I²C介面的serial EEPROM AT24C02的脚架配置图
 

图2是I²C介面的serial EEPROM AT24C02的基本存取时序(timing)图,它与微导线元件或是SPI元件主要差异是I²C元件无晶片选择功能,此外为识别通信的开始与结束,因此使用开始条件与结束条件(condition)两种特殊状态识别通讯的开始与结束。
 



图2 I²C介面的serial EEPROM AT24C02的基本存取时序
 

图3是I²C元件的开始条件与结束条件,它与一般的存取相异,开始条件的SCL为”H”状态时,会使SDA从”H”变成”L”, 结束条件的SCL为”L”状态时,会使SDA从”H”变成”H”。
 



图3 开始与停止的条件
 

 
I²C的写入行程
图4是AT24C02的位组写入格式,I²C元件的写入行程(read cycle)不同于微导线元件与SPI元件,由图可知动作上I²C元件首先发佈开始条件,藉此宣佈开始进行通信,接着发佈8位元(bit)的元件位址,该元件位址是由表2的分配位元(assign bit)决定。元件位址的高阶4元件表示元件型式,记忆体元件的场合为1010b,Bit3~Bit1则是选择晶片的位址。

虽然I²C串联EEPROM拥有从A0一直到A2的位址脚架,不过此处设定的位址却变成元件的位址,例如A0与A1为”L”状态,A2为”H”状态下存取该元件时,元件的位址的Bit3~Bit1必需是100b,接着最低阶位元的Bit0才是表示读(read)或是写(write)的操作位元,写入行程时该位元变成0,读取行程时则变成1。
 



图4 AT24C02的位组写入的格式
 



表2 元件位址
 

I²C的通信与SPI一样以8位元进行,不过I²C接收指令的目标(target)元件会将ACK送返,此时ACK的Host会与送出第9位元的时脉(clock)同步。由于目标元件会将SDA Line变成”L”形成可识别状态,因此主元件(Host device)送出8位元的元件位址后,会使SDA Line变成输入状态,此时为接收ACK因此发佈下一个时脉并接收ACK,整体而言为了结束元件位址传送,因此动作上要求9个时脉。如果元件位址一旦正常送讯,立即传送8位元的位址,成为写入资料的记忆位址。它与元件位址一样传送位址的8位元之后,发佈ACK读取的时脉,同时确认目标元件的ACK。写入行程的场合,写入资料的位元会持续续进行,一旦8位元的资料传送作业结束立即确认ACK,接着为表示通信即将结束,此时会发佈结束条件停止通信作业。

图5是I²C介面的串联(serial)EEPROM AT24C02的随机读取格式((random read format)。I²C的读取行程(read cycle)与微导线、SPI元件有若干差异,I²C的读取行程利用「读取位址的设定(假写入)」与「资料的读取」两种方式进行。读取行程与写入行程一样,会依序发佈开始条件、元件位址、读取位址,虽然在写入行程持续发佈写入资料,不过在读取行程上必需再度中断写入行程,此时读取位址的值变成目标元件内部resistor(亦即current pointer)设定状态。 在读取行程发佈第二次的开始条件之后,再度发佈元件位址,此时为了表示它是读取作业,因此必需将元件位址的最低阶位元的位元变成”H”,如此一来读取1个时脉的ACK之后,才会自动进入资料收讯状态。
 



图5 I²C介面的serial EEPROM AT24C02的随机读取格式
 

有关资料的收讯,首先发佈8位元份的时脉再从MSB读取资料,虽然资料的读入第9个时脉的host会将ACK送返,不过通信的最终资料(亦即发佈结束条件之前的资料)的场合却不会发佈ACK,因此此处的位元停留在”H”状态,最后才发佈结束条件停止读取作业。随着元件的不同,某些元件具备「可以使该资料的读取部位反覆进行数次」,以及「位址可以连续高速读取资料的连续读取(sequence read)」等功能。连续读取的场合,读取最终资料以外的资料位元之后必需将ACK送返。图6是I²C介面的serial EEPROM AT24C02的连续读取格式。
 



图6 I²C介面的serial EEPROM AT24C02的连续读取格式
 

I²C元件与微处理器之间的介面利用两条GPIO进行,I²C元件一旦变成开放渠道(open drain),SCL与SDA的Line就必需举升(pull up)。图7是典型单晶片微处理器与I²C介面串联EEPROM AT24C02之间的介面,如图所示AT24C02介面分别使用PIC16F648A 、ATtiny2313、H8/3694F、R8C/15、μPD78F922等IC。

存取程式的结构与微导线元件、SPI元件相同,GPIO的初始化与位元控制部位则与元件有依存关系。表3是使用78KOS微处理机(μPD78F922)的存取程式,它与存取程式一样,如果更改GPIO的初始化与位元控制部位的关数,就能够使用其它型式的微处理器,接着依序介绍存取程式的关数功能。
 



图7 典型单晶片微处理器与I²C介面串联EEPROM AT24C02之间的介面
 



表3 使用78KOS微处理机(μPD78F922)的存取程式
 

此处请读者注意,由于下列关数与硬件有依存关系,因此必需配合微处理器进行调整修改。

(a).硬件依存部位
▶关数名称: void PortInit( )
执行埠(port)的初始化。
▶关数名称: void ClkCnt(char sbit)
执行SCL作业。Sbit若是0的话,必需将SCL设定成”L”,除此之外SCL一律
设定成”H”。由于I²C是开放渠道,因此SCL=H时会变成Hi-Z状态。
▶关数名称: void DatCnt(char sbit)
执行SDA作业。Sbit若是0的话,必需将SDA设定成”L” 除此之外SCL一律设定成”H”。由于I²C是开放渠道,因此SDA=H时会变成Hi-Z状态。
▶关数名称: char DatChk( )
执行SDA的读入作业。SDA若是”L”时会将0送返,SDA若是”H”时,会将0以外的值送返。

(b).内部关数
下列关数应用在内部处理。
▶关数名称: void InitInterface( )
执行介面的初始化。唿叫Port Init( ),执行埠的初始化,使控制信号变成不执行(default)状态。
▶关数名称: void StartInterface( )
发佈开始条件,开始进行通信。
▶关数名称: void StopInterface( )
发佈结束条件,停止进行通信。
▶关数名称: void SenDat(char dat,char cnt )
执行资料送讯,使资料位元从高阶位元传送cnt位元份。
▶关数名称: char RecvDat(char cnt )
执行资料收讯,接收从高阶位元传送的cnt位元份。

(c).元件存取关数
以下关数是元件存取的关数。高阶应用时只要唿叫此关数,就可以对元件进行存取,存取存取关数共有两种,分别如下:
▶关数名称: void I²CRead(char *buff,char adr)
它是I²C元件的读取关数,可以读取指定位址的8位元资料,并将收容读取资料的buff pointer交给缓冲器(buffer)。
▶关数名称: void I²CWrite(char *buff,char adr)
I²C元件的写入关数,可以将8位元的资料写入指定位址,并将收容写入资料的buff pointer交给缓冲器(buffer)。不过写入时间的控制并不是以此关数执行,因此高阶应用必需等待写入时间。

 
H8/3694F的I²C模组IIC2
H8/3694F内建I²C模组IIC2,由于IIC2是比照I²C元件,因此同样介面具备次设定(sub set)的功能,可以选择时脉同步式串联格式。
使用I²C时IIC2的特征如下:
‧mast模式时,会自动产生开始条件与结束条件
‧可以选择收讯时的承诺输出强度(acknowledge output level)
‧可以自动下载(load)送讯时的承诺位元
‧内建位元同步/待机功能
‧6种插入要件(送讯资料empty,送讯结束、收讯资料满溢(full),仲裁损失(arbitration lost),检测NACK,检测结束条件)
‧可以直接驱动Bus

图8是H8/3694F内建I²C模组(IIC2)的方块图。IIC2内部的出纳(Resistor)种类分别如下:
‧ICCR1 Resistor(I²C Bus控制Resistor 1)
‧ICCR2 Resistor(I²C Bus控制Resistor 2)
‧ICMR Resistor(I²C Bus模式Resistor)
‧ICIER Resistor(I²C 中断器(interrupt) enable Resistor)
‧ICSR Resistor(I²C Bus状态(status) Resistor)
‧SAR Resistor(伺服位址(slave address) Resistor)
‧ICDAT Resistor(I²C Bus送讯Resistor)
‧ICDARR Resistor(I²C Bus收讯Resistor)
‧ICDARS Resistor(I²C Bus移动Resistor)
ICDAT Resistor属于收容送讯资料的出纳(Resistor),因此写入的资料实际上会被送讯;ICDRR Resistor是收讯资料的Resistor;虽然ICDRS Resistor为内部处理用出纳(Resistor),不过却无法从CPU进行存取,详细电路图请参考7(c)。
 



图8 H8/3694F内建I²C模组(IIC2)的方块图
 

 
实际程式
表2是IIC2使用可以对I²C进行存取的程式一览,程式内的各关数的功能分别如下:
▶关数名称: int I²CMode(int mode)
进行I²C介面模式的设定,mode O为读取,mode 1写入。此处所谓的读取/写入是指介面的读取/写入。

例如进行串联EEPROM的读取时,虽然必需先设定元件位址与读取位址,不过它却是属于写入模式,此处请读者注意,不能将上述操作与一般读取作业混杂
▶关数名称: int StartCondition( )
发佈开始条件。
▶关数名称: int StopCondition( )
发佈结束条件。
▶关数名称: int ByteWrite( unsigned char dat)
发佈1Byte资料的写入(送讯)。ACK未被检测时,发生错误(error)时的折返值变
成0(FALSE)。

▶关数名称: int ByteRead( )
进行1Byte资料的读取(收讯)
▶关数名称: void WaitRDRF( )
等待收讯作业结束,实际上它是以ByteWrite等待收讯作业的结束,所以不
需要唿叫此关数。
 





表4 使用H8/3694F内建I²C模组时的存取程式
 

使用以上关数执行I²C元件串联EPROM AT24C02的读写时,必需配合下列操作:
▶1Byte的写入
资料写入I²C元件要求下列作业:
①发佈开始条件
②元件位址的送讯
③写入位址的送讯
④写入资料的送讯
⑤发佈结束条件
执行以上一连串作业的关数是「void I²CWrite(char adr,char dat)」。使用串联EPROM进行写入作业时,必需等待作业后的写入时间,如果结束写入作业立即进行下一个操作时,写入作业可能无法正确进行。


▶1Byte的读入
资料读入I²C元件要求下列作业:
①发佈开始条件
②元件位址的送讯
③读入位址的送讯
④发佈结束条件
⑤元件位址的送讯(读入模式)
⑥资料的读入
⑦发佈结束条件
执行以上一连串作业的关数是「int I²CRead(char adr)」。使用以上关数可以轻易对I²C元件进行存取。

由于I²C串联介面的通信速度具备三种模式,而且可能在一个Bus上作复数个元件连接,因此I²C串联介面广泛应用在各种通讯产品,一般认为未来可望持续扩大应用范围。

(52RD.com)
读取...
顶一下
 更多基带资源 到基带论坛讨论
·热门文章 HOT
·SD和MMC记忆卡介面技术
·未来手机功能的重大改进 (英)
·天线收发技术、构型设计动向
·I²C介面的特性与应用
·从阻抗匹配解析射频传输线技术
·通讯手持设备的参考时钟设计
·新兴手机双处理器互连架构
·辐射研究专家忧心仲仲,手机=“21世...
·低成本手机单芯片架构占优势
·移动终端中三类射频电路的发展趋势
·超3G无线通信技术领域的芯片设计发展...
·移动存储器全面解析
·如何解决手机中WiMax、蓝牙和Wi-Fi共...
·200多项专利揭示苹果触摸屏背后的秘密
·手机基带+AP方案渐成主流 挑战仍在
·摄像机的定焦和变焦镜头
·提升可携式装置锂电池充电效率
·手机Modem+AP方案渐成主流 挑战仍在
·手机音腔结构的设计
·最新手机结构专利精选(一)
·精彩评论 HOT
·赞助商链接 SUPPORT
·相关文章 CORRELATION
·I²C介面的特性与应用[9-5]
·特别推荐 RECOMMEND
·评  论 COMMENT
3楼 guozhuang 发表于 2007-10-25 19:15
  好文章 ,比我书上的还好
2楼 redhx 发表于 2007-8-29 11:52
  好文章,谢谢
1楼 sunnyair 发表于 2007-7-3 14:15
  好文章,谢谢
共有评论3篇 查看所有评论
推荐朋友 打印本页