简单的I2C协议理解

转载 2013年12月06日 11:15:59

http://www.cnblogs.com/yan0837/articles/1202374.html

简单的I2C协议理解

一. 技术性能:
    工作速率有100K和400K两种;
    支持多机通讯;
    支持多主控模块,但同一时刻只允许有一个主控;      
    由数据线SDA和时钟SCL构成的串行总线;
    每个电路和模块都有唯一的地址;                    
    每个器件可以使用独立电源

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

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

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

四. 总线信号时序分析
    1. 总线空闲状态
    SDA和SCL两条信号线都处于高电平,即总线上所有的器件都释放总线,两条信号线各自的上拉电阻把电平拉高;
    2. 启动信号START
    时钟信号SCL保持高电平,数据信号SDA的电平被拉低(即负跳变)。启动信号必须是跳变信号,而且在建立该信号前必修保证总线处于空闲状态;
    3. 停止信号STOP
    时钟信号SCL保持高电平,数据线被释放,使得SDA返回高电平(即正跳变),停止信号也必须是跳变信号。
    4. 数据传送
    SCL线呈现高电平期间,SDA线上的电平必须保持稳定,低电平表示0(此时的线电压为地电压),高电平表示1(此时的电压由元器件的VDD决定)。只有在SCL线为低电平期间,SDA上的电平允许变化。
    5. 应答信号ACK
    I2C总线的数据都是以字节(8位)的方式传送的,发送器件每发送一个字节之后,在时钟的第9个脉冲期间释放数据总线,由接收器发送一个ACK(把数据总线的电平拉低)来表示数据成功接收。
    6. 无应答信号NACK
    在时钟的第9个脉冲期间发送器释放数据总线,接收器不拉低数据总线表示一个NACK,NACK有两种用途:
    a. 一般表示接收器未成功接收数据字节;
    b. 当接收器是主控器时,它收到最后一个字节后,应发送一个NACK信号,以通知被控发送器结束数据发送,并释放总线,以便主控接收器发送一个停止信号STOP。

五. 寻址约定
    地址的分配方法有两种:
    1. 含CPU的智能器件,地址由软件初始化时定义,但不能与其它的器件有冲突;
    2. 不含CPU的非智能器件,由厂家在器件内部固化,不可改变。

    高7位为地址码,其分为两部分:
    1. 高4位属于固定地址不可改变,由厂家固化的统一地址;
    2. 低三位为引脚设定地址,可以由外部引脚来设定(并非所有器件都可以设定);

I2C总线深入理解

时钟同步       总线仲裁 一、 I2C总线定义     I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制...
  • u012497906
  • u012497906
  • 2015年08月18日 18:13
  • 1636

很清晰的解读i2c协议

很清晰的解读i2c协议。 I2C协议:2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering...
  • lingfeng5
  • lingfeng5
  • 2017年06月17日 02:15
  • 3048

个人总结之I2C总线协议

1.what is I2C? 简单讲就是用来传输数据的两根线:一根数据线(SDA)一根时钟线(SCL) 2.I2C怎么传输的? (1)基本过程:      1.主机发出开始信号      2...
  • black_yu
  • black_yu
  • 2016年07月16日 20:03
  • 4370

浅谈I2c原理

i2c接口连接微控制器和串行i2c总线。支持多主和多从之间通信的协议,主设备通常叫做master,从设备叫做slaver,支持两种不同的通信速度,标准为速度(最高位100kHZ),快速(最高为400k...
  • zhangqiao336
  • zhangqiao336
  • 2015年05月13日 15:08
  • 982

解析I2C通信协议

一、I2C的概念 1. I2C总线是PHLIPS公司推出的一种串行总线,I2C总线只有两根双向信号线。其中一根是数据线SDA,另一根是时钟线SCL。 2. 每个接到I2C总线上的器件都有唯一的地址...
  • zhengqijun_
  • zhengqijun_
  • 2016年08月16日 10:25
  • 2322

协议理解之I2C协议

I2C总线的特征协议我们参考|EEPROM 24C64的DataSheet 硬件特征: SDA:串行数据线 SCL:串行时钟线 每个连接到总线上的设备都有唯一的地址 速度 标准...
  • u012319379
  • u012319379
  • 2016年06月01日 12:14
  • 719

简单对各种网络协议的认识

来源:阮一峰 网址:www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html 我们每天使...
  • recall_yesterday
  • recall_yesterday
  • 2016年09月25日 11:20
  • 561

I2C 协议图文解析

I2C 协议图文解析 i2c协议注意几点就很好的使用它: 1)由一个主设备,一个或多个从设备组成,所有的信号发起都是由主设备发起,从设备根据这些信号做一些应答。 2)i2c发送时序是先发高位再发...
  • EastonWoo
  • EastonWoo
  • 2016年09月30日 19:25
  • 1382

SPI、I2C和UART三种串行总线协议的区别

SPI、I2C跟UART三种串行总线协议的区别 第一个区别当然是名字:      SPI(Serial Peripheral Interface:串行外设接口);      I2...
  • kai_zone
  • kai_zone
  • 2016年11月23日 11:25
  • 2385

I2C协议的理解

一、协议分析先想想两个陌生人是怎么进行沟通的,为了显得更有主次关系,选取老板和新员工进行沟通的场景,老板一般占有主动权,而且手中有新员工的基本信息,比如姓名,年龄,性别等。沟通开始:老板:“XXX,欢...
  • Andy001847
  • Andy001847
  • 2017年07月28日 10:15
  • 235
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单的I2C协议理解
举报原因:
原因补充:

(最多只允许输入30个字)