一IIC通信
现今,在低端数字通信应用领域,我们随处可见IICI
terI
tegratedCircuit和SPISerialPeripheralI
terface的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(forIIC)和Motorola(forSPI)出于不同背景和市场需求制定了这两种标准通信协议。IIC开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互联方式。电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memorymappedIO)的方式来互联微控制器和外围设备的。要实现内存映射,设备必须并联入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。为了节省微控制器的引脚和和额外的逻辑芯片,使印刷电路板更简单,成本更低,位于荷兰的Philips实验室开发了‘I
terI
tegratedCircuit’,IIC或IIC,一种只使用二根线接连所有外围芯片的总线协议。最初的标准定义总线速度为100kbps。经历几次修订,主要是1995年的400kbps,1998的34Mbps。有迹象表明,SPI总线首次推出是在1979年,Motorola公司将SPI总线集成在他们第一支改自68000微处理器的微控制器芯片上。SPI总线是微控制器四线的外部总线(相对于内部总线)。与IIC不同,SPI没有明文标准,只是一种事实标准,对通信操作的实现只作一般的抽象描述,芯片厂商与驱动开发者通过datasheets和applicatio
otes沟通实现上的细节。IICINTERICBUSIIC的数据输入输出用的是一根线,但是由于IIC的数据线是双向的,所以隔离比较复杂,SPI则比较容易。所以系统内部通信可用IIC若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是IIC和SPI都不适合长距离传输。IIC总线是双向、两线SCL、SDA、串行、多主控(multimaster)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。IIC通信是两根线,发送的开始状态和结束状态都与SCL有关,SDA上先发送设备地址,后发送寄存器地址和数据。硬件简单,软件协议稍微多点,比如开始状态,结束状态,数据变化状态对时序都有严格要求IIC是多主设备的总线,IIC没有物理的芯片选择信号线,没有仲裁逻辑电路,只使用两条信号线‘serialdata’SDA和‘serialclock’SCL。IIC协议规定:1每一支IIC设备都有一个唯一的七位设备地址;2数据帧大小为8位的字节;3数据(帧)中的某些数据位用于控制通信的开始、停止、r