I2C串行通信总线

一、I2C总线基本介绍

  I2C总线是PHLIPS公司生产的一种串行总线,是享有多主机系统所需的满含总线制裁和音量速器件同步功用的高品质串行总线。在多主机系统中,恐怕同期有多少个主机企图运维总线传送数据。为了幸免混乱,I2C总线要由此总线仲裁,以决定由哪一台主机调控总线。

  I2C 典型速率为 100kbit/s,快捷形式 400kbit/s, 种种电路和模块都有独一的地点。

  I2C总线独有两根双向复信号线。一根是多少线SDA(无论是数量信息或许地方新闻都经过那根线传输),另一根是石英钟线SCL。

图片 1

  I2C总线通过上拉电阻接正电源。因而,当总线空闲时,两根线均为高电平(那也正是末端在写I2C公约时,当主机从EEPROM读取完最后贰个字节的多少,在给EEPROM发送非应答确定性信号(高电平)时,未有在程序中写SDL高电平的由来)。连到总线上的任一器件输出的低电平,都将使总线的时域信号变低,即各器件的SDA及SCL都以线“与”关系。每种接到I2C总线上的机件都有独一的地方。数据的传输也得以是双向的。

图片 2

二、I2C总线通信左券

(一)时序

  只有在总线处于“非忙”状态时,数据传输能力被早先化。在多少传输时期,只要挂钟线为高电平,数据线都不可能不维持安静,不然数据线上的其他更改都被用作“运行”或“甘休”时限信号。图 1 是被定义的总线状态。

图片 3

① 总线非忙状态(A 段) 

多少线SDA 和 石英钟线 SCL 都保持高电平。 

② 运维数量传输(B 段) 

当即钟线(SCL)为高电平状态时,数据线(SDA)由高电平变为低电平的减退沿被以为是“运营”实信号。独有出现“运行”时限信号后,其余的一声令下才使得。

③ 结束数据传输(C 段) 

立即钟线(SCL)为高电平状态时,数据线(SDA)由低电平变为高电平的上涨沿被认为是“结束”随机信号。随着“停在”时域信号出现,所有的表面操作都截至。 

④ 数据有效(D 段) 

在产出“运营”时域信号未来,在石英钟线(SCL)为高电平状态时数据线是安静的,那时数据线的景观就要传送的多寡。数据线(SDA)上的数据的转移必得在石英钟线为低电平时期完结,每位数据占用多少个机械钟脉冲。

⑤ 应答非数字信号 (ACK和NACK)

I2C总线上的具有数据都以以8位字节传送,发送器每发送叁个字节,就在石英钟脉冲9时期保释数据线,由接收器反馈贰个答三番五次能量信号。应答实信号为低电平日,规定为使得应答位(ACK),表示接收器已经成功接收了该字节;应答功率信号为高电平常,规定为非应答位(NACK),平时期表接收器接收该字节未遂。可是当接收器是主控器(比方单片机对EEPROM进行读操作,则单片机即为接收器),则它在收受最后贰个字节后,也会发送多少个NACK功率信号(而不是说未能如愿),以文告被控发送器甘休数据发送,并释放SDA总线,以便主要调整器发送多个停下频域信号。

图片 4

以EEPROM为例:各样正在接收数据的EEPROM 在接收一个字节的数量后,常常要求发出二个答应复信号(由主机接收)。而种种正在发送数据的EEPROM 在发生三个字节的数码后,平日须求吸取三个答时域信号(由主机发出)。EEPROM 读写调节器必得爆发一个与这些应答位相挂钩的额外的挂钟脉冲。在EEPROM 的读操作中,EEPROM 读写调整器对EEPROM 完毕的末尾三个字节不爆发应答位(高电平),但是应当给EEPROM 一个竣事时限信号。

(二)数据帧格式

I2C总线上传递的数据非信号是广义的,既富含地点频域信号,又富含正真的数据数字信号。

I2C总线上的享有数据都以以8位字节传送。在开局非数字信号后必需传送一个从机的地方(7位),第8位是数码的传递方向为(牧马人/W),用0表示主机写(发送),用1象征主机读(接收)。每一趟数据传送总是由主机发生的告一段落非信号停止。可是,若主机希望后续占领总线举办新的数码传送,则可以不爆发终止时限信号,登时再一次发出早先时域信号对另一从机实行寻址。

(三)总线的寻址

I2C总线公约有综上可得的分明:选拔7位的寻址字节(寻址字节是发端复信号后的率先个字节)。

寻址字节的定义:D7~D1位组成从机的地方。D0位是数码传送的来头位。

图片 5

当主机发送地址时,总线上的各样从机都将那7位地址码与团结的地方进行相比,假设同样,则以为自个儿正被主机寻址,依据帕杰罗/T位将自个儿明显为发送器或接收器。

从机的地方由定点部分和可编制程序部分组成。在三个种类中恐怕希望接入多个一律的从机(固定部分一样),从机地址中可编制程序部分决定了可接入总线该类器件的最大额。如三个从机的7位寻址位有4位是固定位,3位是可编制程序位,那时仅能寻址8个同样的机件,即能够有8个一样的零件接入到该I2C总线系统中。

三、I2C总线的利用举个例子

(一)I2C 设备读写操作的类型

   在这里间以 AT24C04 为例表明 I2C 读写的基本操作和时序,I2C 设备的操作可分为写单个
积攒字节,写七个存款和储蓄字节,读单个存款和储蓄字节和读七个存款和储蓄字节。种种操作如下图所示。

图片 6

其中:

Device Address:从机地址=4位固定位+3位可编制程序位

Word Address:将在读或写的存款和储蓄单元的首地址(假诺读/写七个存款和储蓄字节,每读/写完叁个字节的数额,那么些地方会自动加1)

(二)单个存款和储蓄字节的读写操作具体经过例如

① EEPROM 的写操作(字节编制程序格局) 

  所谓EEPROM 的写操作(字节编制程序情势)正是通过读写调整器把八个字节数据发送到EEPROM 中钦点地址的存款和储蓄单元。其进程如下:EEPROM 读写调节器发出“运维”模拟信号后,紧跟着发送4 位I2C 总线器件特征编码1010 和3 位EEPROM 微电路地址/页地址XXX 乃至写情状的大切诺基/W 位(=0)到总线上,然后等待EEPROM 发出回应功率信号;若接收到回应,读写调控器将随后发送1 个字节的EEPROM 存储单元地址,然后等待EEPROM 再叁回发出回应能量信号;若重新接受到回应则一而再写入1 个字节数据到被寻址的存款和储蓄单元,之后EEPROM 再一遍发出回应复信号;读写调整器收到此应答信号后,便发生“甘休”随机信号。字节写入帧格式如图2 所示:

图片 7

② 二线制I2C CMOS 串行EEPROM 的读操作 

  所谓EEPROM 的读操作即透过读写调整器读取 EEPROM 中钦命地点的存款和储蓄单元中的多个字节数据。串行EEPROM 的读操作分两步进行:读写器首头阵送三个“运转”时域信号和操纵字节(满含页面地址和写调整位Rubicon/W = 0)到EEPROM,再经过写操作设置EEPROM 存款和储蓄单元地址(注意:即便那是读操作,但须要先写入地址指针的值),在那时期EEPROM 会发生须要的应答位。接着读写注重新发送另贰个“运维”实信号和调节字节(饱含页面地址和读调控位讴歌RDX/W = 1),EEPROM 收到后发出应答功率信号,然后,要寻址存款和储蓄单元的数目就从SDA 线上输出。读操作有三种: 读当前地方存款和储蓄单元的数码、读钦命地点存款和储蓄单元的数额、读一而再存款和储蓄单元的多少。在这里边只介绍读内定地方存款和储蓄单元数据的操作。读钦定地址存储单元数据的帧格式如图3:

图片 8

 

本文由银河网址发布于银河网址,转载请注明出处:I2C串行通信总线

您可能还会对下面的文章感兴趣: