码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 中的 I2C 协议

时间:2015-03-01 17:09:22      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:linux   i2c   protocol   bus   

i2c总线协议:

撰写不易,转载需注明出处:http://blog.csdn.net/jscese/article/details/44001185 本文来自 【jscese】的博客!

I2C 总线的概念:

I2C (Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点就是简单性和有效性。

I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定) 。I2C总线上传输控制情况见下图:
技术分享


I2C总线的几种信号状态:

  1. 空闲状态:SDA和SCL都为高电平。
  2. 开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
  3. 结束条件(P):SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。

开始结束时序图如下:
技术分享


I2C总线传输特征:

  • 数据有效:在SCL的高电平期间, SDA保持稳定,数据有效。SDA的改变只能发生在SCL的底电平期间。

  • 数据传输:发送到 SDA 线上的每个字节必须为 8 位 每次传输可以发送的字节数量不受限制 每个字节后必须跟一个响应位,首先传输的是数据的最高位。

  • ACK信号: 数据传输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,在第九个SCL时钟脉冲的高电平期间,持续拉低SDA,向发送器件发出特定的低电平脉冲,表示已经收到数据。

  • 地址字节:在起始条件(S)后,第一个字节中的前7位代表从机地址,第8位代表读写,0 表示发送(写),1 表示接收(读)。

    一次数据传输的完整波形如下:
    技术分享


Linux 中的 I2C 协议

标签:linux   i2c   protocol   bus   

原文地址:http://blog.csdn.net/jscese/article/details/44001185

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!