IIC 概述之2

一、协议 

1.空闲状态 

 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。 

2.起始位与停止位的定义:
  • 起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。
  • 停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。

3.ACK

  发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。 应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。 对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。 如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

   如下图逻辑分析仪的采样结果:释放总线后,如果没有应答信号,sda应该一直持续为高电平,但是如图中蓝色虚线部分所示,它被拉低为低电平,证明收到了应答信号。
这里面给我们的两个信息是:1)接收器在SCL的上升沿到来之前的低电平期间拉低SDA;2)应答信号一直保持到SCL的下降沿结束;正如前文红色标识所指出的那样。

4.数据的有效性: 
I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
我的理解:虽然只要求在高电平期间保持稳定,但是要有一个提前量,也就是数据在SCL的上升沿到来之前就需准备好,因为在前面I2C总线之(一)---概述一文中已经指出,数据是在SCL的上升沿打入到器件(EEPROM)中的。

   

5.数据的传送:

  在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发。

二、工作过程

  总线上的所有通信都是由主控器引发的。在一次通信中,主控器与被控器总是在扮演着两种不同的角色。

1.主设备向从设备发送数据

  主设备发送起始位,这会通知总线上的所有设备传输开始了,接下来主机发送设备地址,与这一地址匹配的slave将继续这一传输过程,而其它slave将会忽略接下来的传输并等待下一次传输的开始。主设备寻址到从设备后,发送它所要读取或写入的从设备的内部寄存器地址; 之后,发送数据。数据发送完毕后,发送停止位:

写入过程如下:

  发送起始位

  • 发送从设备的地址和读/写选择位;释放总线,等到EEPROM拉低总线进行应答;如果EEPROM接收成功,则进行应答;若没有握手成功或者发送的数据错误时EEPROM不产生应答,此时要求重发或者终止。
  • 发送想要写入的内部寄存器地址;EEPROM对其发出应答;
  • 发送数据
  • 发送停止位.
  • EEPROM收到停止信号后,进入到一个内部的写入周期,大概需要10ms,此间任何操作都不会被EEPROM响应;(因此以这种方式的两次写入之间要插入一个延时,否则会导致失败,博主曾在这里小坑了一下)

  详细:

  需要说明的是:①主控器通过发送地址码与对应的被控器建立了通信关系,而挂接在总线上的其它被控器虽然同时也收到了地址码,但因为与其自身的地址不相符合,因此提前退出与主控器的通信;

2.主控器读取数据的过程:

  读的过程比较复杂,在从slave读出数据前,你必须先要告诉它哪个内部寄存器是你想要读取的,因此必须先对其进行写入(dummy write):

  • 发送起始位;
  • 发送slave地址+write bit set;
  • 发送内部寄存器地址;
  • 重新发送起始位,即restart;
  • 重新发送slave地址+read bit set;
  • 读取数据
    主机接收器在接收到最后一个字节后,也不会发出ACK信号。于是,从机发送器释放SDA线,以允许主机发出P信号结束传输。 
  • 发送停止位   

详细: 

  
时间: 2024-10-31 12:34:35

IIC 概述之2的相关文章

IIC 概述之3

为了加深对I2C总线的理解,用C语言模拟IIC总线,边看源代码边读波形: 如下图所示的写操作的时序图: 读时序的理解同理.对于时序不理解的朋友请参考“I2C总线之(二)---时序” 完整的程序如下: #include<reg51.h> #define uchar unsigned char #define uint unsigned int #define write_ADD 0xa0 #define read_ADD 0xa1 uchar a; sbit SDA=P2^0; sbit SCL

IIC 概述之1

概述: I²C 是Inter-Integrated Circuit的缩写,发音为"eye-squared cee" or "eye-two-cee" , 它是一种两线接口. I²C 只是用两条双向的线,一条 Serial Data Line (SDA) ,另一条Serial Clock (SCL). SCL:上升沿将数据输入到每个EEPROM器件中:下降沿驱动EEPROM器件输出数据.(边沿触发) SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成&quo

IIC 概述之24c系列存储器内存分析

IIC 型号     容量      器件/业面寻址字节                   可寻址位       模块 24C01   128B      (1010)(A2)(A1)(A0)(0或1)     3            128B24C02   256B      (1010)(A2)(A1)(A0)(0或1)     3            256B24C04   512B      (1010)(A2)(A1)(P0)(0或1)     2            2X25

IIC 概述之源码仿真

7.1.1 I2C总线简介 1.I2C总线的基本结构 I2C总线由数据线SDA和时钟线SCL构成,每条线都通过上拉电阻接向正电源,所有采用I2C接口标准的器件均并行挂接在总线上,如图7-1所示. I2C总线通常采用主从工作方式,整个系统中只有一个主控器件(单片机),其它器件都是具有I2C总线接口的外围从器件.每个I2C器件都具有唯一的地址,单片机作为主控器件,可以按器件地址访问每个器件,还可以按器件单元地址访问每个器件中的每个指定的存储单元. 图7-1 I2C总线系统硬件结构框图 由于I2C总线

SHT20 IIC总线驱动概述

SHT20温湿度传感器使用iic总线的驱动方式,以下资料参考SHT20 datasheet总结 1.IIC总线 Start信号 IIC总线的起始信号以SDA由高电平变为低电平,等待5us以上,再由SCL从高电平变低电平,发出起始信号,图示如下所示: 注意:两根线由高变低的间隔时间大于4.7us,建议延时15us example: void IIC_Start(void) { GpioWrite(&SDA, 1); GpioWrite(&SCL, 1); //todo :delay 15us

IIC总线协议

 II2C C总线的简单的概述 1.( 总线(Inter Integrated Circuit Bus Inter Integrated Circuit Bus):是 ):是Philips Philips公司 公司 推出的串行总线标准(为二线制).总线上扩展的外围器件及外设接 推出的串行总线标准(为二线制). 2.总线上扩展的外围器件及外设接 口通过总线寻址,是具备总线仲裁和高低速设备同步等功能的高性能 口通过总线寻址,是具备总线仲裁和高低速设备同步等功能的高性能 多主机总线. 3.特点:组成系

扒一扒ZYNQ里面缩写 及 Xilinx ZYNQ-7000概述

文章转载自 http://www.eefocus.com/Kevin/blog/11-08/228643_42a39.html kevin是xilinx的大牛,必须膜拜啊. 还引自http://blog.sina.com.cn/s/blog_6cb263210101g8lv.html 摘要:本文介绍与XILINX的EPP平台成员, ZYNQ芯片相关的缩写术语和含义.  与简单翻译术语不同,本文对每个缩写在本行业其他公司的展开含义也略作介绍, 避免混淆. 对术语的技术功能也作简单介绍. 8月份学校

协议之常见显示接口概述

1.IIC 2.SPI 3.8080/8600 4.RGB接口 5.MIPI_DSI 6.TFT接口 7.MCU工作特点 1.IIC I2C总线,是Inter-Integrated Circuit的缩写.INTER-IC意思是用于相互作用的集成电路,这种集成电路主要由双向串行时钟线SCL和双向串行数据线SDA两条线路组成. I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的,包括总线裁决和高低速器件同步功能的高性能串行总线. I2C总线只有两根双向信号线.一根是数据线SDA,

IIC学习(一)

1.概述 IIC,即Inter-Integrated Circuit(集成电路总线),它是同步通信的一种特殊形式,具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点. I2C 总线 包括一条数据线(SDA)和一条时钟线(SCL).协议允许总线接入多个器件,并支持多主工作.总线中的器件既可以作为主控器也可以作为被控器,既可以是 发送器也可以是接收器.总线按照一定的通信协议进行数据交换.在每次数据交换开始,作为主控器的器件需要通过总线竞争获得主控权,并启动一次数据交换.系 统中各个器件都