I2C是个好协议

原文地址:I2C是个好协议 作者:MegaPillarus
一、I2C概述
      I2C是Philips开发出来的一种通信协议,全称Inter-Integrated Circuit。
      I2C通信的时候只需要两根线,一根时钟线(SCL),一根双向数据线(SDA)。因为特别能节省资源,I2C获得了很广泛的应用,比如单片机教程中最常作为例程的串行时钟DS1307,EEPROM等。
      I2C有三种速率模式,标准模式下100Kbps,快速模式下400Kbps,高速模式下3.4MKbps。
二、术语
      在使用I2C的过程中,以下术语频繁使用,所以集中说明:
      <1>主机/从机。主机是控制时钟并决定何时发送、接收的设备;从机是相对主机而言被主机寻址的设备。
      <2>开始信号/结束信号/应答。I2C通信中的三种最重要的控制信号。在开始信号产生后可以进行通信,在结束信号到来后停止通信;应答信号用于表示数据被接收以判断通信是否成功。
      <3>时序。操作运行的时间顺序。更形象的,可以认为时序规定了信号电平何时高、何时低的问题。
      <4>寻址。寻址就是定位,在多从机情况下,给每个从机一个唯一的地址,主机通过这个地址选定进行通信的从机。

三、I2C电路设计的几个考虑点
       A)I2C总线采用了开漏设计,器件本身不能主动输出高电平,因此需要上拉电阻(pullup resistor),并且是必须的!上拉电阻(Rp)的阻值一般不低于1KΩ,也不高于10KΩ。总线上挂的器件越多,选用电阻值越小。一般设计的时候可以先使用4.7KΩ,然后根据实测波形进行调整。
       B)I2C能寻址的从机设备和<1>寻址方式有关。其中,7位寻址可以最多128个;10位寻址最多可以1024个。<2>也和寄生电容有关。标准要求总线容性负载最大不超过470pF。
       C)标准还定义了串连在SDA和SCL上的电阻Rs,这个小电阻用来抑制总线上的干扰脉冲进入从设备,提高通信可靠性。一般的,Rs可以选择为100~200Ω,具体值可以类比Rp的选择方法进行试探确定。还应指出,这个电阻并不是必须的,如果已知通信环境良好,这个电阻可以不用考虑。

四、I2C的时序
      起始条件:SCL高电平时,SDA产生从高电平到低电平的跳变。
      停止条件:SCL高电平时,SDA产生从低电平到高电平的跳变。
      起始条件产生之前,总线处于空闲状态;起始之后,总线进入忙状态。
      因为SCL高电平时,SDA的任意跳变都是表示控制的,所以要求数据传输的情况下,在SCL高电平的时候,数据线必须保持稳定;只能在SCL低的时候才可以改变SDA信号。图示如下:
                                      图 若为数据传输,SDA在SCL为高时必须保持稳定

                                    图   起始、停止和重复起始(多字节传输,与普通起始无异)

五、AVR的TWI
聪明的Atmel开发了(还是抄袭?)完全兼容I2C的协议,为了避免交给Philips专利费,自己起名字叫TWI(Two Wire Interface)
精髓一句话:AVR的TWI接口是面向字节的和基于中断的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值