IIC总线学习笔记
1 IIC总线简介
1.1 iic简介
在消费电子、电信和工业电子领域,看似无关的设计之间往往有许多相似之处。例如,几乎每个系统都包括:一些智能控制,通常是一个单片机微控制器的通用电路,如LCD和LED驱动器,远程I/O端口,RAM, EEPROM,实时时钟或a /D和D/ a转换器,面向应用的电路,如数字调谐和信号处理电路的无线电和视频系统,温度传感器,为了充分利用这些相似性,使系统设计师和设备制造商都受益,同时最大化硬件效率和电路简单性,飞利浦半导体(现在的NXP Semiconductors)开发了一种简单的双向2线总线,用于有效的ic间控制。这种总线被称为Inter IC或i2c总线。所有兼容i2c总线的设备都包含一个片上接口,允许它们通过i2c总线直接相互通信。这种设计思路解决了数字控制电路设计中遇到的许多接口问题。以下是i2c总线的一些特性:只需要两条总线线路;一个串行数据线(SDA)和一个串行时钟线(SCL)。连接到总线上的每个设备都是通过唯一地址可寻址的软件,并且简单的控制器/目标关系始终存在;控制器可以作为控制器-发射机或控制器-接收器运行。它是一种真正的多控制器总线,包括碰撞检测和仲裁,以防止两个或多个控制器同时发起数据传输时数据损坏。IIC支持多主多从机制。
iic应用实例图如下图所示:
从上图可以看到IIC总线可以支持多种ic器件例如 LED, PCA9541,EEPROMs等。目前支持IIC协议的器件也是越来越多。
1.2 iic通信方式
IIC是一种串行半双工的通信方式,每8位传输一次,在标准的数据传输方式下可以在高达100kbit /s在快速模式(Fast-mode)下最大可达400kbit /s,快快速方式下(Fast-mode Plus)下最大可达1mbit /s,在高速模式下最大可达3.4 Mbit/s。在超高速下可达5Mbps(单向传输)。
下面介绍几种通信方式:
单工通信就是指只允许一方向另外一方传送信息,而另一方不能回传信息。比如电视遥控器、收音机广播等,都是单工通信技术。
半双工通信是指数据可以在双方之间相互传播,但是同一时刻只能其中一方发给另外一方,比如我们的对讲机就是典型的半双工。
全双工通信就发送数据的同时也能够接收数据,两者同步进行,就如同我们的电话一样,我们说话的同时也可以听到对方的声音。
1.3 SDA与SCL的逻辑电平
IIC协议在不同的传输速率下SDA与SCL的电压值是不确定的,如下图所示在不同模式下的电气参数。在标准模式下低电平(LOW)的输入电压最小-0.5V最大0.3V,高电平(HIGH)输入电压最小0.7V最大为输入电压最大值加0.5或者5.5V。
2 IIC总线的几种信号
2.1数据有效性
I2C协议对数据的采样发生在SCL高电平期间,SCL为高电平时,SDA必须保持稳定,不允许改变,只有当SCL线上的时钟信号为LOW(低电平)时,数据线的高或低状态才会改变。每个传输的数据位产生一个时钟脉冲。
2.2 空闲信号
当总线空闲时,两条线(SDA与SCL)都被输出级的上一级晶体管拉到高电平。
2.3 起始信号与 结束信号
IIC协议规定当SCL高电平期间SDA有高电平跳变为低电平时表示一个起始信号,总线为繁忙状态,当多次触发起始信号时,总线总是保持为繁忙状态,直到出现停止信号。当SCL高电平期间,SDA有低电平跳变为高电平时表示一个停止信号,总线为空闲状态。
2.4数据传输格式
放到SDA线上的每个字节必须是8位长。每次传输可以传输的字节数是不受限制的。在确认周期中,控制器在每个字节传输完成后,也就是在第九个周期驱动SDA为低电平(USDA LOW)表示应答信号。数据以高位(MSB)优先传输。
2.5应答信号与非应答信号
应答信号
在IIC协议中当,主机发送完数据后会释放SDA并保持高电平,即第9个SCL时钟周期内如果从机正确的收到了主机发来的数据,会把SDA拉低,表示应答响应。
非应答信号
当第9个SCL时钟周期时,SDA保持高电平,表示非应答信号。非应答信号可能是主机产生也可能是从机产生,产生非应答信号的情况主要有以下几种:
1. 总线上没有带有传输地址的接收器,因此没有设备响应应答。
2. 接收器无法接收或发送,因为它正在执行一些实时功能,并没有准备好开始与控制器通信。
3. 在传输过程中,接收方获取它不理解的数据或命令。
4. 在传输过程中,接收端无法接收到更多的数据字节。
2.6 目标地址和R/W位
IIC总线保留地址
2.6.1 7位寻址
在起始信号后发送一个寻址字节,该字节的前7位为从机地址,第8位为读写位,其中0表示写,1表示读。
2.6.2 10位寻址
十位寻址支持兼容7位寻址,将10位寻址的第二个字节放到第一个字节前即可兼容7位寻址总线。
容7位寻址,将10位寻址的第二个字节放到第一个字节前即可兼容7位寻址总线。