I2C总线传输协议

关键字 :I2CRealtek
I2C总线传输——简介

I2C(Inter-integrated Circuit)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它只需要两根信号线来完成信息交换。

I2C最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100kHz、7-bit标准地址。

1992年,I2C的第一个公共规范发行,增加了400kHz的快速模式以及10-bit扩展地址。

I2C协议把传输的消息分为两种类型的帧:

个地址帧 :用于master指明消息发往哪个slave;

个或多个数据帧 :由master发往slave的数据(或由slave发往master),每帧是8-bit的数据。

注:协议要求每次放到SDA上的字节长度必须为8位,并且每个字节后须跟一个ACK位

I2C数据传输的时序图如下:



I2C 位传输方式

数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit;

若SDA发生跳变,则用来表示一个会话的开始或结束(start and stop)


数据改变:SCL为低电平时,SDA线才能改变传输的bit



开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

  1. 当总线空闲时,SDA和SCL都处于高电平状态
  2. 多个master时,先到先得


结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。

  1. SCL拉高并保持àSDA拉高
  2. 正常传输时,SCL高时SDA不应该变化



地址帧device ID

1.出现时间点:最开始

2.组成:7bit地址 + 1bit R/W位 + 1bit ACK

PS:如未回ACK,则有master觉得接下来如何处理



数据帧:register的address and data

1.出现时间点:地址帧发送之后

2.组成:8bit + 1bit ACK

PS:write时,slave发送ACK;read时,master发送ACK


★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

参考来源

Jasonchen: http://blog.csdn.net/jasonchen_gbd

评论