I2C 总线通讯协议那点事

发布于: 27 January, 2014
分享:

I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。

概念:

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

特征:

  • 只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL;
  • 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器;
  • 它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏;
  • 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s;
  • 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。
  • 每个电路和模块都有唯一的地址
  • 每个器件可以使用独立电源

术语:

  • 发送器:发送数据到总线的器件;
  • 接收器:从总线接收数据的器件;
  • 主机:启动数据传送并产生时钟信号的设备;
  • 从机:被主机寻址的器件;
  • 多主机:同时有多于一个主机尝试控制总线但不破坏传输;
  • 主模式:用I2CNDAT支持自动字节计数的模式;位I2CRM,I2CSTT,I2CSTP控制数据的接收和发送;
  • 从模式:发送和接收操作都是由I2C模块自动控制的;
  • 仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程;
  • 同步:两个或多个器件同步时钟信号的过程

上拉电阻

SCL, SDA 需要加上拉电阻,速率越高,选用阻值越小的上拉电阻   1byte = 7bit地址 + 1bit读写标志 注:1bit读写标志中,0-发送数据(写),1-请求数据(读)。  

二、基本工作原理

以启动信号START来掌管总线;以停止信号STOP来释放总线;每次通讯以START开始,以STOP结束,启动信号START后紧接着发送一个地址字节,基中7位为被控器件的地址码。一位为读写控制位R/W,R/W位为0表示由主控向被控器件写数据,R/W为1表示由主控从被控器件读数据。当被控器件检测到收到的地址与自已的地址相同时,在第9个时钟期间反馈应答信号;每个数据字节在传送时都是高位(MSB)在前。

三、通讯过程

写通讯过程

  1. 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线。
  2. 发送一个地址字节(包括7位地址码和1位R/W)。
  3. 当被控器件检测到主控发送的地址与自已的地址相同时发送一个应答信号(ACK)。
  4. 主控收到ACK后开始发送第一个数据字节。
  5. 被控器件收到数据字节后发送一个ACK表示传送数据结束。
  6. 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线。

读通讯过程

  1. 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线。
  2. 发送一个地址字节(包括7位地址和1位R/W)。
  3. 当被控器件检测到主控发送的地址与自已的地址相同时发送一个应答信号(ACK)。
  4. 主控收到ACK后释放数据总线,开始接收第一个数据字节。
  5. 主控收到数据后发送ACK表示继续传送数据,发送NACK表示传送数据结束。
  6. 主控收到数据后,发送一个停止位STOP,结束整个通讯并且释放总线。

 

分享:

0 留言

留言

您的留言将被人工审核,请勿发表色情、反动言论。

您可能感兴趣

Arduino + SHT1X 制作温度、湿度传感系统

通过Arduino和SHT1X传感器,实现实时监测环境温度和湿度的简单而有效的方案。文章提供电路连接和示例代码,...