>
首页 » 业界动态 » I2C总线在智能化振动测试仪中的应用研究

I2C总线在智能化振动测试仪中的应用研究

作者:吴强,黄石红  时间:2006-12-19 18:24  来源:
摘要:简要介绍了串行用户接口I2C总线,它具有接口简单、易于控制和可靠性高等特点。智能化振动测试仪中应用I2C总线技术,大大减小了体积,提高了仪器的整体可靠性。对于不具有I2C总线接口的单片微处理器,可利用它的I/O口来模拟实现。
关键词:I2C总线; 振动测试; 单片微处理器

引言

基于单片微处理器的智能化测试仪器日趋向小型化、简约化方向发展,随着电子技术与计算机技术的不断发展,基于串行用户接口I2C总线正在或已经取代基于并行总线的接口方式,它无需地址总线、数据总线、控制总线,只通过两条线就可以完成与单片微处理器的接口与数据交换,大大地简化了传统接口方式的复杂性,充分地有效利用了单片微处理器的有限I/O资源。虽然串行用户接口I2C总线同并行总线相比较,在接口数据交换的速度上较慢,但对于大多工业应用现场的测控要求,还是可以满足的。

串行用户接口I2C总线

I2C总线一般有两条线,一条是数据线SDA,另外一条是时钟线SCL,与单片微处理器交换数据就是通过SDA来完成的,它的工作方式为双向,既可以输出数据给微处理器,也可以接受微处理器发送的数据、命令。串行时钟SCL也是双向的,作为控制方的单片微处理器,通过SCL发送时钟信号,作为受控制方的器件,也要按总线上的SCL信号发出或是接收SDA上的信号。具有I2C总线的器件,它的内部输出端一定是开漏输出或集电极开路输出方式。在信息传输时,SCL为高电平期间,SDA上的信息必须保持稳定不变,只有SCL为低电平期间,SDA上的信息才允许变化。同时SDA上信息的每一位都要和SCL上的时钟脉冲相对应。SCL没有时钟信号,SDA信息将停止传输处于等待状态。在I2C总线传输的过程中,将两种特定的状态定义为起始信号、终止信号,在SCL保持高电平期间,SDA由高电平向低电平变化,这种状态称之为起始信号。SCL保持高电平期间,SDA由低电平向高电平变化,称之为终止信号。如下图

图1起始、终止信号时序

值得一提的是,SDA上传输的每个字节必须是8位,首先传输最高有效位,每个字节传输后还必须跟随一个应答位,这时SCL保持高电平,在此期间在SDA端保持一个低电平信号,完成应答信号的输出,数据传输中应答信号是必须的。在整个传输的过程中,传输字节的数目是不受限制的。
数据传送的格式:I2C总线的要求,在起始信号的后面是寻址字节,在寻址字节高7位是被控器的地址,第8位是信息传输方向位(R/W),“0”表示主控器发送,“1” 表示主控器接收。寻址字节的后面是数据字节,每一个字节都必须要有应答信号,传送结束后必须发终止信号。如图:

其中:S-起始信号,A-应答信号,P-终止信号
从地址是要被写入的器件的存储单元的地址,字地址指器件地址。

应用

笔者所开发测振仪表中应用了I2C技术,单片微处理器采用AT89C2051单片机,AT89C2051是美国ATMEL公司采用CMOS工艺生产的20脚8位单片机,体积小巧。它与intel公司MCS-51的指令和引脚兼容,内置2k字节flash程序存储器、128字节RAM、15根I/O线、2 个16位定时/计数器、5个向量二级中断结构、1个全双向的串行口、并且内含精密模拟比较器和片内振荡器,具有2.7V至5.5V的宽电压工作范围和高至24MHz的工作频率,同时还具有加密阵列的二级程序存储器加锁、掉电和时钟电路等。外围接口芯片如A/D转换器,实时时钟,数据存储器X24C16均是具有I2C技术结构的器件,整个仪表系统结构紧凑、小巧,接口简洁、可靠,使用效果十分理想。如图

图2基于I2C总线串行控制的振动测振仪表原理框图

该测振仪表完全以单片机为主,完成振动数据的处理,可实时测量、存储振动的速度均方根值及振动的位移值。振动传感器使用磁电式速度传感器。振动信号前置处理电路完成振动信号的调理、零位的漂移的修正、自动量程切换、低通滤波等处理,峰值提取与保持电路将振动的位移峰-峰最大值检出,并转换为直流量送入串行A/D转换器,送单片机处理。存储芯片采用具有I2C总线结构的非易失型存储器E2PROM X24C16,被测的振动数据由单片微处理器计算转换工程量,输出串行数据以字符的形式显示在LCD液晶上,美观、直接,便于直接读取,也可以通过标准RS232C通讯接口将存储的数据传送至PC机,按测量的时间进行查询处理。本测振仪表为电池供电,LCD液晶显示、数据存储器、通讯接口、A/D转换器均以串行方式与单片微处理器交换数据,有效地利用了接口资源。

虽然目前大量使用的8051内核的单片微处理器,并不支持I2C总线结构,但仍然可以利用单片微处理器的普通I/O口来模拟I2C总线,通过软件编程来实现,但要注意一定要按I2C总线的时序进行。以下给出利用AT89C2051单片微处理器的普通I/O口来模拟I2C总线,控制X24C16的读写操作。
X24C16是一种具有2KB存储容量的串行E2PROM,具有体积小、功耗低,可掉电保护等特点。当要对X24C16的存储单元写入数据时,每写入一个字节,所要操作的数据格式由3个字节组成,第1字节为:
1 0
其中:1010码是X24C16的器件地址,A7-A0是从地址,A10、A9、A8为X24C16的高位地址。第2字节是X24C16的低8位地址,第3字节是要写入到X24C16的数据,特别注意,每个字节后一定要跟一个应答信号。
以汇编写的源程序如下:
;************************************
; 向X24C16 写入一字节数据子程序
;************************************
WR24: ACALL STA24发起始信号
mov a,addwh存储单元地址高位
clr c
rlc a
orl a,#0a0h; 器件码1010
acall send发送
mov a,addwl存储单元地址低8位
acall send
MOV A,DATA数据在DATA中
acall send发送
acall STOP发终止信号
RET
;*************************
; 24C16 读出子程序
;*************************
RD24: ACALL STA24
mov a,addrh
clr c
rlc a
orl a,#0A0h; special code for read(0a1h)
acall send
mov a,addrl
acall send
acall sta24
mov a,#0A1h
acall send
acall read
mov data,a
acall stop
RET
;************************
; 启动 24C16(发I2C总线起始信号)
;************************
STA24: setb scl
setb sda
nop
clr sda
nop
nop
nop
clr scl
nop
ret
;************************
; 24C16 关闭(发I2C总线终止信号)
;************************
STOP: clr sda
nop
nop
setb scl
nop
nop
setb sda
nop
nop
nop
clr scl
nop
ret
;************************
; 24C16写入
;************************
send: MOV R7,#08H
clr scl
lop: RLC A
mov sda,c
nop
nop
setb scl
nop
nop
clr scl
djnz r7,lop
setb sda应答信号
setb scl
nop
nop
lop1: mov c,sda
jc lop1
clr scl
ret
;***************************
; 按位读出每一位
;***************************
READ: MOV R7,#08H
clr scl
RLP: nop
nop
setb scl
nop
mov c,sda
rlc a
nop
nop
clr scl
djnz r7,rlp
clr sda应答信号
nop
nop
setb scl
ret

结论

I2C总线,由于连线少,结构简单,与并行总线相比,大大地简化了仪表系统的硬件设计,提高了可靠性。这是一种高性能的串行总线,正在获得广泛地工程应用。与此同时,基于串行用户接口I2C总线的新型电子器件的出现,也在推动着I2C总线的应用。对于不带I2C总线接口的MCS-51系列单片微处理器,只要采用两根通用I/O,并且严格按照I2C总线规程来模拟I2C总线,同样可以使用带I2C总线接口的器件来作为外扩I/O口的接口电路。

相关推荐

单片机应用技术综述

单片机  总线  2011-06-28

硬件可靠性测试设计分析

可靠性  Buffer  总线  2011-03-28

PCIe 3.0基本规范11月完成

PCI  总线  2010-09-19

Bus/总线布线时如何做到等长

Bus  总线  等长  2010-06-09

PCI9030及其PCI总线接口电路设计

PXI  总线  PCI9030  2010-04-15

手持终端测试仪中的两种供电方式设计

电源  供电方式  锂电池  总线  2010-04-07
在线研讨会
焦点