单片机I2C接口技术

 

一、I2C总线简介
   I2C总线是一种用于IC器件之间连接的二线制总线。它通过SDA和SCL两根线与连接到总线上的器件之间传递信息,并根据地址识别每个器件。如下图:

单片机I2C接口技术_第1张图片

 

   I2C为双向同步串行总线,因此I2C总线接口内部为双向传输电路。I2C总线端口输出为开漏结构,故总线须接上10K左右的上拉电阻,当总线空闲时,SDA、SCL都为高电平。I2C总线数据传输速率在标准工作方式下为100Kbit/s, 最高可达400Kbit/s。其接口电路结构如下图。

I2C总线上所有外围器件都有规范的器件地址。如下表(1):

   D7

   D6

   D5

D4

D3

D2

D1

D0

DA3

DA2

DA1

DA0

A2

A1

A0

R|/W


                                                             表一
    高四位DA3、DA2、DA1、DA0为器件地址,I2C总线外围接口器件的固有地址编码,在出厂时候就已经给定。例如,AT24CXX的器件地址为1010.
   后三位A2、A1、A0为引脚地址,根据接不同电源或地址来区分。
   最后一位 R|/W为数据方向位, 为1读数据(接收),为0时写数据(发送 )。

 

二、I2C总线数据的传输

   在数据的传送过程中,SCL为高电平期间,SDA上数据必须保持稳定,只有当SCL为低电平时候才允许变化,同时也 必须确认数据传送的开始和结束,即开始信号(Start)止信号(Stop)。SCL为高电平期间,SDA由高到低的变化表示开始信号,SDA由低到高的变化则表示终止信号。如下图:

I2C 总线数据传输的格式:开始信号后,送出的第一字节数据是用来选择器件地址(见上表一)的。开始信号后个器件将自己的地址与总线上发送的地址进行比较,若一致则该器件为要寻址的器件,其接受信息还是发送信息由最后一位R|/W决定。
  
   在I2C总线上每次传送的数据字节数不限,但每一字节必须是8位,且每个传送的字节后必须跟一个认可位(第9位),也叫应答位(ACK)。数据传送过程如下图所示:

单片机I2C接口技术_第2张图片

     主器件发送完一字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,此时钟内主器件释放SDA线,一字节传送结束,而从器件的响应信号将SDA拉成低电平,使SDA在该时钟的高电平期间为稳定的低电平。从器件的响应结束后,SDA线返回高电平进入下一个传送周期。

应答信号时序图:

另外,I2C总线还具有广播呼叫地址,用于寻址总线上所有的器件的功能。

三、I2C总线接口器件

    具有I2C总线接口的器件有很多,在视频处理、通信领域采用I2C总线接口器件较普遍,另外还有些通用的I2C接口器件,例如:带I2C总线的单片机、RAM、ROM、A/D、D/A、LCD驱动等。

51系列单片机并未提供I2C接口,但是基于对I2C协议的分析,可以通过软件模拟的方法来实现单片机I2C接口,从而实现51系列单片机与I2C器件之间的数据传输。

    

单片机I2C接口技术_第3张图片

 

你可能感兴趣的:(c,工作)