IIC

IIC总线概念

    IIC协议是一种具有自动寻址、高低速设备同步和仲裁等功能的高性能串行总线,能够实现完善的全双工数据传输,是各种总线协议中使用信号线最少的,只需要两根线:数据线SDA和时钟线SCL。

    连在IIC总线上的每个器件都有一个唯一的地址识别,无论是微控制器、LCD、驱动器、存储器或键盘接口。而且都可以作为一个发送器或接收器,由器件的功能决定,很明显 LCD驱动器只是一个接收器,而存储器则既可以接收又可以发送数据。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机(见下表),主机是初始化总线的数据传输并产生允许传输的时钟信号的器件,此时,任何被寻址的器件都被认为是从机 。

术语描述
发送器发送数据到总线的器件
接收器从总线接收数据的器件
主机初始化发送,产生时钟信号和终止发送的器件
从机被主机寻址的器件
多主机同时有多于一个主机尝试控制总线,但不破坏报文
仲裁是一个在有多个主机同时尝试控制总线,但只允许其中一个控制总线并使报文不被破坏
同步两个或多个器件同步时钟信号的过程

    IIC总线是一个多主机的总线,这就是说可以连接多于一个能控制总线的器件到总线。由于主机通常是微控制器,让我们考虑以下数据在两个连接到I2C总线的微控制器之间传输的情况,这突出了IIC总线的主机、从机和接收器、发送器的关系。应当注意的是,这些关系不是持久的,只有当数据传输的方向决定,传输数据的过程如下:
(1)假设微控制器A要发送信息到微控制器B
• 微控制器A主机寻址微控制器B从机
• 微控制器A主机发送器发送数据到微控制器B从机接收器 
• 微控制器 A 终止传输

(2)如果微控制器A想从微控制器B接收信息 
• 微控制器A主机寻址微控制器B从机
• 微控制器A主机接收器从微控制器B从机发送器接收数据
• 微控制器A终止传输 
   连接多于一个微控制器到IIC总线的可能性意味着超过一个主机可以同时尝试初始化传输数据为了避免由此产生混乱发展出一个仲裁过程。如果两个或多个主机尝试发送信息到总线,在其他主机都产生0的情况下,首先产生一个1的主机将丢失仲裁,仲裁时的时钟信号是用线与连接到SCL线的主机产生的时钟的同步结合。

IIC仲裁

如果I2C总线上挂载多个主设备,可能会发生冲突。假设总线上有两个主设备(设备A和设备B),设备A准备发送10101010,设备B准备发送10000000,且几乎同时发送数据,两个设备每次发送一个数据位之后,都对SDA上的电平进行检测,如果检测结果与自己发送的数据相符,则继续占用总线。

冲裁时序

设备A和设备B在发送前两位数据之后,都继续占用总线,第3个时钟周期,A发送1,B发送0,I2C总线有“线与”特性,这时SDA上的电平为低电平,A检测到SDA上的低电平,与自己发送的数据不符,则自动放弃总线控制权,从而,只有设备B获得总线控制权。

IIC总线仲裁.jpg

IIC 总线的一些特征:

(1)只要求两条总线线路,一条串行数据线SDA,一条串行时钟线SCL;
(2)每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机,从机关系软件设定地址主机可以作为主机发送器或主机接收器;
(3)它是一个真正的多主机总线,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,每次只允许一个信号有效,防止数据被 破坏;
(4)串行的8位双向数据传输位速率在标准模式下可达 100kbit/s,快速模式下可达400kbit/s,高速模式下可达 3.4Mbit/s ;
(5)片上的滤波器可以滤去总线数据线上的毛刺波,保证数据完整;
(6)连接到相同总线的IIC数量只受到总线的最大电容400pF限制;

I2C总线基本知识:

(1)数据的有效性:
SDA线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态,只有在SCL线的时钟信号是低电平时才能改变。

(2)起始和停止条件
当SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件。
当SCL线是高电平时,SDA线由低电平向高电平切换表示停止条件。
(3)总线空闲状态

SDA和SCL两条信号线都处于高电平,即总线上所有的器件都释放总线,两条信号线各自的上拉电阻把电平拉高;

(4)数据传输与应答信号ACK
发送到SDA线上的数据必须是8位的。每次传输可以发送的数据不受限制。每个字节后必须在时钟的第9个脉冲期间释放数据总线(SDA为高),由接收器发送一个ACK(把数据总线的电平拉低)来表示数据成功接收。
首先传输的是数据的最高位(MSB)。如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟SCL保持低电平迫使主机进入等待状态。当从机准备好接收下一个数据字节并释放时钟线SCL后,数据传输继续。

地址格式

在起始条件之后,发送一个7位的从机地址,其中高四位A6-A3是从机器件的固定编址,出厂时就已给定;A2-A0是从机器件的引脚地址,通过接地接电源来形成地址。例如:4位LED的驱动控制器只用到两位A1,A0,所以同样的器件最多可以挂4个在IIC总线上;AT24C02(EEPROM)通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。紧接着第8位是数据方向(R/W),0-表示发送数据(写),1-表示接收数据(读)。数据传输一般由主机产生的停止位(P)终止。但是如果主机仍希望在总线上通讯,它可以产生重复起始条件(Sr),和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中,可能有不同的读/写格式结合。
Iic时序.jpg 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值