原创 单片机的I2C总线扩展和I2C虚拟技术

2009-8-13 18:41 2178 4 4 分类: MCU/ 嵌入式
摘 要:讨论了I2C总线的一般特征,I2C总线接口技术,以及无I2C总线接口的CPU可以用虚拟I2C总线接口的方法实现与带I2C总线接口芯片的虚拟I2C接口技术,介绍了常用的虚拟I2C总线接口软件包。电子园51单片机学习网 P4Sf:Hx5{#D
   关键词:I2C总线;虚拟I2C总线接口;虚拟I2C总线接口软件包电子园51单片机学习网 D7T7?I4@0d

1  I2C总线的基本概念及一般特征
%xU@yaQY+B0
    在单片机应用系统中,要处理的数据不仅很多,而且很重要时,通常的做法是用并行口扩展单片机外部数据存储器芯片。近年来,随着半导体技术的不断发展,陆续出现了一些新的数据要求非常严格的芯片,比较典型的有基于I2C总线接口的24系列,基于SPI总线的25系列,以及并行总线接口的28系列,29系列,这些芯片的特点是芯片掉电后数据不会丢失,数据可以保存几年、甚至几十年,这些芯片采用I2C、SPI或Microwire串行总线协议,与单片机接口通常仅占用2~4个I/O口,可以最大限度地节省单片机的资源,并且数据可以反复擦写。

j8yT%A*{4K2hb0

6136_200904071115061Vvh4.jpg电子园51单片机学习网:x/{$B5xt)\9r!o

电子园51单片机学习网%QRrYO N2v

电子园51单片机学习网,~] [!WC$l1X P*P
    I2C总线采用二线传输,即SDA串行数据线和SCL串行时钟,在总线上扩展的外围器件及外围设备接口通过总线寻址,图2为I2C总线构成的输入/输出、显示、ADC/DAC以及键盘、显示电路。在SDA和SCL上挂接单片机CUP和外围器件(如I/O、ADC、DAC、存储器)和外设接口(如键盘、显示器、打印机等),所有挂接在I2C总线上的器件和接口电路都应具有I2C总线接口,将所有的SDA/SCL同名端相连。

Sl_)jq7s3Gn2@@Y0

6136_200904071115062Bj3C.jpg

iW4h R8N ?pO0电子园51单片机学习网0[v^:Y(Oeo g


;?`m5N'[)Gz2YT0    I2C总线为同步串行数据传输总线,其总线传输速率为100 KB/s,改进后为400 KB/s,总线驱动能力为400 PF,通过驱动扩展可达4 000 PF,在图1中只表示I2C总线上外围扩展的节点,其总线的节点的寻址方法为,确定总线上的主节点(主控器件),在任何时刻总线上只有一个主节点(一个主控器件),实现总线的控制操作,由主控器对总线上的其他节点寻址,分时实现点对点的数据传输。因此总线上每个节点都有一个固定的节点地址。I2C总线每次传送数据,都是由主器件发送起始信号开始,送停止信号结束,当SCL时钟线为高电平时,SDA出现由高到低的下降沿,即总线的起始信号,相反,当SDA出现上升沿时为结束信号,在起始信号和停止信号之间是寻址信息和数据信息,图2为I2C的操作时序。电子园51单片机学习网8M [f,oc7O-yH$C pv2gj
    I2C总线上的单片机都可作为主节点,其器件地址由软件给出。存放在I2C总线的地址寄存器,称为主器件的从地址。器件地址由7位组成和一个方向位构成寻址字节SLA,寻址字节格式如下:

Y,n$gPo{ iTZ Og0

6136_200904071115063iOuW.jpg

^#\)|t9wTzEb ~0

:v}5cqg{0    DA3~DA0为器件地址,由器件出厂时给定的固定地址编码;A2~A0为器件在电路中接电源或地的不同,形成的地址数据;R/W——数据传输方向,规定总线上主节点对从节点的数据传输方向,R——接收,W——发送。表1为常用外围器件的节点地址。电子园51单片机学习网u"Zm2y/|K5]


6136_200904071115064ITFD.jpg电子园51单片机学习网&d1MROQ&_K

电子园51单片机学习网qmK Q/]

2  单主系统的I2C总线的虚拟技术
N zGT Q P%T0]0
    在单主系统中,I2C总线上只有一个单片机,由于总线上只有一个单片机成为主节点,在这种情况下,对于没有I2C总线的单片机,可以用两根I/O线来虚拟I2C总线接口,在采用虚拟串行扩展接口时,可根据系统的资源情况选用具体的I/O口线,可以设计出各种类型接口的虚拟软件包,只要安装软件包和定义相应的I/O端口,使用极其灵活方便,这种方式称为单主方式I2C总线虚拟(简称主方式)。电子园51单片机学习网ZG6Wq'Ic
2.1  单主方式下的数据操作格式电子园51单片机学习网^,cUE)T#^!x
    2.1.1  主发送的数据操作格式
4O Lum I0    主节点向由寻址字节指令的外围器件节点发送N个字节数据,整个数据传送过程中数据的传送方向不变,操作格式如下:

Xw|-Vdt [ ]0

6136_200904071115065pArR.jpg电子园51单片机学习网5y1cH1]!U,C4J

电子园51单片机学习网\2LI r\$s X

    其中S.SLAW、data1~N、P~为主节点发送,从节点接收;A~主节点接收,从节点发送;SLAW~寻址字节(写);data1~dataN:写入从节点的N个数据。
w aQ?W I0    (2) 主接收的数据操作格式电子园51单片机学习网N/EBp7p?|(Q
    主节点要求被寻址的从节点(外围器件)发送N个字节数据。数据操作格式如下:电子园51单片机学习网3x&T` ^V2tSz


6136_200904071115066h346.jpg电子园51单片机学习网*p5cJ'F-W\eJ(h#s!w)O


T9O!K@*f2E+pfZ0    2.1.2  主方式下的虚拟I2C总线软件包电子园51单片机学习网Mv+XRy
    在使用虚拟I2C总线时,有一个通用的主方式I2C软件包,并在此基础上给出归一化操作命令。即在使用I2C虚拟总线时,只要在程序存储器的任一空间,装入通用软件包作为I2C总线应用程序设计的软件支持。在应用中只须将软件包中标记赋值即可。电子园51单片机学习网I&]a@0saK
    这些标记符有:
[`*ese2Z(}:|G6_0    VSDA~虚拟I2C总线数据线;VSCL~虚拟I2C总线时钟线;SLA~寻址字节存放单元;SLAW~寻址字节写;SLAW~寻址字节读;NUMBYT~传送字节数据存放单元;MTD~发送数据缓冲区;MRD~接收数据缓冲区。电子园51单片机学习网_\ H1ps#wp
    在程序中嵌入了通用I2C软件包并进行标号赋值后,归一化的操作命令有三条:电子园51单片机学习网FkK'Q~
    MOV SLA,#SLAW/#SLAR;指向那个节点,并认定发送(SLAW)还是接收(SLAR);MOV NUMBYT,#N;传送几个字节;LCALL WRNBYT/RDNBYT;调用接收或发送子程序。电子园51单片机学习网 k |.t(b y Y5}z
    以图1为例,假定在嵌入了通用I2C软件包的情况下,使用主方式的I2C虚拟技术,标记符的伪定义为:
%Q+i;o AUL0 6136_200904071115067686V.jpg电子园51单片机学习网e,b B)n3M.L9?1\ g

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条