单片机的I2C总线扩展和I2C虚拟技术
扫描二维码
随时随地手机看文章
1 I2C总线的基本概念及一般特征?
在单片机应用系统中,要处理的数据不仅很多,而且很重要时,通常的做法是用并行口扩展单片机外部数据存储器芯片。近年来,随着半导体技术的不断发展,陆续出现了一些新的数据要求非常严格的芯片,比较典型的有基于I2C总线接口的24系列,基于SPI总线的25系列,以及并行总线接口的28系列,29系列,这些芯片的特点是芯片掉电后数据不会丢失,数据可以保存几年、甚至几十年,这些芯片采用I2C、SPI或Microwire串行总线协议,与单片机接口通常仅占用2~4个I/O口,可以最大限度地节省单片机的资源,并且数据可以反复擦写。
I2C总线采用二线传输,即SDA串行数据线和SCL串行时钟,在总线上扩展的外围器件及外围设备接口通过总线寻址,图2为I2C总线构成的输入/输出、显示、ADC/DAC以及键盘、显示电路。在SDA和SCL上挂接单片机CUP和外围器件(如I/O、ADC、DAC、存储器)和外设接口(如键盘、显示器、打印机等),所有挂接在I2C总线上的器件和接口电路都应具有I2C总线接口,将所有的SDA/SCL同名端相连。?
I2C总线为同步串行数据传输总线,其总线传输速率为100 KB/s,改进后为400 KB/s,总线驱动能力为400 PF,通过驱动扩展可达4 000 PF,在图1中只表示I2C总线上外围扩展的节点,其总线的节点的寻址方法为,确定总线上的主节点(主控器件),在任何时刻总线上只有一个主节点(一个主控器件),实现总线的控制操作,由主控器对总线上的其他节点寻址,分时实现点对点的数据传输。因此总线上每个节点都有一个固定的节点地址。I2C总线每次传送数据,都是由主器件发送起始信号开始,送停止信号结束,当SCL时钟线为高电平时,SDA出现由高到低的下降沿,即总线的起始信号,相反,当SDA出现上升沿时为结束信号,在起始信号和停止信号之间是寻址信息和数据信息,图2为I2C的操作时序。
I2C总线上的单片机都可作为主节点,其器件地址由软件给出。存放在I2C总线的地址寄存器,称为主器件的从地址。器件地址由7位组成和一个方向位构成寻址字节SLA,寻址字节格式如下:?
DA3~DA0为器件地址,由器件出厂时给定的固定地址编码;A2~A0为器件在电路中接电源或地的不同,形成的地址数据;R/W——数据传输方向,规定总线上主节点对从节点的数据传输方向,R——接收,W——发送。表1为常用外围器件的节点地址。
2 单主系统的I2C总线的虚拟技术?
在单主系统中,I2C总线上只有一个单片机,由于总线上只有一个单片机成为主节点,在这种情况下,对于没有I2C总线的单片机,可以用两根I/O线来虚拟I2C总线接口,在采用虚拟串行扩展接口时,可根据系统的资源情况选用具体的I/O口线,可以设计出各种类型接口的虚拟软件包,只要安装软件包和定义相应的I/O端口,使用极其灵活方便,这种方式称为单主方式I?2C总线虚拟(简称主方式)。?
2.1 单主方式下的数据操作格式?
2.1.1 主发送的数据操作格式?
主节点向由寻址字节指令的外围器件节点发送N个字节数据,整个数据传送过程中数据的传送方向不变,操作格式如下:?
其中S.SLAW、data1~N、P~为主节点发送,从节点接收;A~主节点接收,从节点发送;SLAW~寻址字节(写);data1~dataN:写入从节点的N个数据。?
(2) 主接收的数据操作格式?
主节点要求被寻址的从节点(外围器件)发送N个字节数据。数据操作格式如下:?
2.1.2 主方式下的虚拟I2C总线软件包?
在使用虚拟I2C总线时,有一个通用的主方式I2C软件包,并在此基础上给出归一化操作命令。即在使用I2C虚拟总线时,只要在程序存储器的任一空间,装入通用软件包作为I2C总线应用程序设计的软件支持。在应用中只须将软件包中标记赋值即可。?
这些标记符有:
VSDA~虚拟I2C总线数据线;VSCL~虚拟I2C总线时钟线;SLA~寻址字节存放单元;SLAW~寻址字节写;SLAW~寻址字节读;NUMBYT~传送字节数据存放单元;MTD~发送数据缓冲区;MRD~接收数据缓冲区。?
在程序中嵌入了通用I2C软件包并进行标号赋值后,归一化的操作命令有三条:
MOV SLA,#SLAW/#SLAR;指向那个节点,并认定发送(SLAW)还是接收(SLAR);MOV NUMBYT,#N;传送几个字节;LCALL WRNBYT/RDNBYT;调用接收或发送子程序。?
以图1为例,假定在嵌入了通用I2C软件包的情况下,使用主方式的I2C虚拟技术,标记符的伪定义为:?