I2C协议学习笔记

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。

主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。

主器件为Master从器件为Slave。

通过SDA(串行数据线)传输数据,SDL(串行时钟线)控制高低电平。都是双向I/O线。

I2C总线协议规范

I2C协议规定,总线上数据的传输必须以一个起始信号作为开始条件,以一个结束信号作为传输的停止条件。起始和结束信号总是由主设备产生。总线在空闲状态时,SCL和SDA都保持着高电平,当SCL为高电平而SDA由高到低的跳变,表示产生一个起始条件;当SCL为高而SDA由低到高的跳变,表示产生一个停止条件。在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占,其他I2C器件无法访问总线;而在停止条件产生后,本次数据传输的主从设备将释放总线,总线再次处于空闲状态。如图所示:

I2C开始与停止条件

   在了解起始条件和停止条件后,我们再来看看在这个过程中数据的传输是如何进行的。前面我们已经提到过,数据传输以字节为单位。主设备在SCL线上产生每个时钟脉冲的过程中将在SDA线上传输一个数据位,当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位,此时才认为一个字节真正的被传输完成。当然,并不是所有的字节传输都必须有一个应答位,比如:当从设备不能再接收主设备发送的数据时,从设备将回传一个否定应答位。数据传输的过程如图所示:

I2C数据传输过程

        在前面我们还提到过,I2C总线上的每一个设备都对应一个唯一的地址,主从设备之间的数据传输是建立在地址的基础上,也就是说,主设备在传输有效数据之前要先指定从设备的地址,地址指定的过程和上面数据传输的过程一样,只不过大多数从设备的地址是7位的,然后协议规定再给地址添加一个最低位用来表示接下来数据传输的方向,0表示主设备向从设备写数据,1表示主设备向从设备读数据。如图所示:

I2C数据格式

     I2C协议

  2条双向串行线,一条数据线SDA,一条时钟线SCL。

  SDA传输数据是大端传输,每次传输8bit,即一字节。

  支持多主控(multimastering),任何时间点只能有一个主控。

  总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.

  系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。

  1.1 I2C位传输

  数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit;若SDA发生跳变,则用来表示一个会话的开始或结束(后面讲)

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

   1.2 I2C开始和结束信号

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

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

      1.3 I2C应答信号

  Master每发送完8bit数据后等待Slave的ACK。

  即在第9个clock,若从IC发ACK,SDA会被拉低。

  若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程,如下所示:

   1.4 I2C写流程

  写寄存器的标准流程为:

  1. Master发起START

  2. Master发送I2C addr(7bit)和w操作0(1bit),等待ACK

  3. Slave发送ACK

  4. Master发送reg addr(8bit),等待ACK

  5. Slave发送ACK

  6. Master发送data(8bit),即要写入寄存器中的数据,等待ACK

  7. Slave发送ACK

  8. 第6步和第7步可以重复多次,即顺序写多个寄存器

  9. Master发起STOP

      1.5 I2C读流程

  读寄存器的标准流程为:

  1. Master发送I2C addr(7bit)和w操作1(1bit),等待ACK

  2. Slave发送ACK

  3. Master发送reg addr(8bit),等待ACK

  4. Slave发送ACK

  5. Master发起START

  6. Master发送I2C addr(7bit)和r操作1(1bit),等待ACK

  7. Slave发送ACK

  8. Slave发送data(8bit),即寄存器里的值

  9. Master发送ACK

  10. 第8步和第9步可以重复多次,即顺序读多个寄存器

   2. PowerPC的I2C实现

  Mpc8560的CCSR中控制I2C的寄存器共有6个。

      2.1 I2CADR 地址寄存器

  CPU也可以是I2C的Slave,CPU的I2C地址有 I2CADR指定

      2.2 I2CFDR 频率设置寄存器

The serial bit clock frequency of SCL is equal to the CCB clock divided by the divider.

  用来设置I2C总线频率

  2.3 I2CCR 控制寄存器

      MEN: Module Enable. 置1时,I2C模块使能

  MIEN:Module Interrupt Enable. 置1时,I2C中断使能。

  MSTA:Master/slave mode. 1 Master mode,0 Slave mode.

  当1-》0时,CPU发起STOP信号

  当0-》1时,CPU发起START信号

  MTX:Transmit/receive mode select.0 Receive mode,1 Transmit mode

  TXAK:Transfer acknowledge. 置1时,CPU在9th clock发送ACK拉低SDA

  RSTA:Repeat START. 置1时,CPU发送REPEAT START

  BCST:置1,CPU接收广播信息(信息的slave addr为7个0)

  I2C总线规范

  对于面向8位的数字控制应用譬如那些要求用微控制器的要建立一些设计标准

  • 一个完整的系统通常由至少一个微控制器和其他外围器件例如存储器和I/O扩展器组成

  • 系统中不同器件的连接成本必须最小

  • 执行控制功能的系统不要求高速的数据传输

  • 总的效益由选择的器件和互连总线结构的种类决定

  产生一个满足这些标准的系统需要一个串行的总线结构。尽管串行总线没有并行总线的数据吞吐能力但它们只要很少的配线和IC连接管脚,然而,总线不仅仅是互连的线还包含系统通讯的所有格式和过程串行总线的器件间通讯。必须有某种形式的协议避免所有混乱数据丢失和妨碍信息的可能性快速器件必须可以和慢速器件通讯系统必须不能基于所连接的器件。否则不可能进行修改或改进应当设计一个过程决定哪些器件何时可以控制总线。而且如果有不同时钟速度的器件连接到总线必须定义总线的时钟源所有这些标准都在I2C总线的规范中。

  I2C总线的概念

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

  表1 I2C总线术语的定义

原文:http://m.elecfans.com/article/595585.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容

  • 做单片机开发时UART,SPI和I2C都是我们最经常使用到的硬件接口,我收集了相关的具体材料对这三种接口进行了详细...
    梁睿坤阅读 67,958评论 7 31
  • 姓名:周崇杰 学号:16040120059 专业:机械设计制造及其自动化 转载自:http://blog.cs...
    CJbaby阅读 2,849评论 0 5
  • 总线 计算机的各个功能部件通过总线连接在一起构成完整的计算机系统,总线是多个系统功能部件之间进行数据传送的公共通路...
    罗蓁蓁阅读 4,788评论 0 10
  • 1 嵌入式操作系统 为什么要用嵌入式操作系统 普通的单片机编程:程序(软件)——单片机硬件; 嵌入式操作系统开发:...
    安安zoe阅读 777评论 0 1
  • 服务器 客户端 资料参考:http://blog.csdn.net/wangshubo1989/article/d...
    吃猫的鱼0阅读 289评论 0 0