新闻中心

EEPW首页 > 测试测量 > 设计应用 > I2C总线在智能化振动测试仪中的应用

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

作者:南京师范大学数科院时间:2002-12-05来源:电子设计应用收藏
引言
基于单片微处理器的智能化器日趋小型化、简约化,串行用户接口I2C总线正在或已经取代基于并行总线的接口方式,它无需地址总线、数据总线、控制总线,只通过两条线就可以完成与单片微处理器的接口与数据交换,大大地简化了传统接口方式的复杂性,充分地利用了单片微处理器的有限I/O资源.
串行用户接口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” 表示主控器接收。寻址字节的后面是数据字节,每一个字节都必须要有应答信号,传送结束后必须发终止信号。如图2所示.
I2C技术在测振仪中的应用
笔者所开发的测振仪表中应用了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技术结构的器件,如图3所示。
该测振仪表完全以单片机为主,完成振动数据的处理,可实时测量、存储振动的速度均方根值及振动的位移值。振动传感器使用磁电式速度传感器。振动信号前置处理电路完成振动信号的调理、零位漂移的修正、自动量程切换、低通滤波等处理。峰值提取与保持电路将振动的位移峰-峰最大值检出,并转换为直流量送入串行A/D转换器,送单片机处理。存储芯片采用具有I2C总线结构的非易失型存储器E2PROM X24C16,被测的振动数据由单片微处理器计算转换工程量,输出串行数据以字符的形式显示在LCD液晶上,也可以通过标准RS-232C通讯接口将存储的数据传送至PC机,按测量的时间进行查询处理。本测振仪表为电池供电,LCD液晶显示、数据存储器、通讯接口、A/D转换器均以串行方式与单片微处理器交换数据,有效地利用了接口资源。
虽然目前大量使用的8051内核的单片微处理器,并不支持I2C总线结构,但仍然可以利用单片微处理器的普通I/O口来模拟I2C总线,通过软件编程来实现,但注意一定要按I2C总线的时序进行。以下给出利用AT89C2051单片微处理器的普通I/O口来模拟I2C总线,控制X24C16的读写操作。
X24C16是一种具有2KB存储容量的串行E2PROM,具有体积小、功耗低,可掉电保护等特点。当要对X24C16的存储单元写入数据时,每写入一个字节,所要操作的数据格式由3个字节组成,第1字节为:

第2字节为:

其中:1010码是X24C16的器件地址,A7-A0是从地址,A10、A9、A8为X24C16的高位地址。第2字节是X24C16的低8位地址,第3字节是要写入到X24C16的数据,特别注意,每个字节后一定要跟一个应答信号。(源程序详见本刊网站,www.eaw.com.cn)
结语
I2C总线,由于连线少,结构简单,与并行总线相比,大大地简化了仪表系统的硬件设计,提高了可靠性。这是一种高性能的串行总线,正在获得广泛的工程应用。与此同时,基于串行用户接口I2C总线的新型电子器件的出现,也在推动着I2C总线的应用。对于不带I2C总线接口的MCS-51系列单片微处理器,只要采用两根通用I/O,并且严格按照I2C总线规程来模拟I2C总线,同样可以使用带I2C总线接口的器件来作为外扩I/O口的接口电路。■

参考文献:
1. 吴金戊、沈庆阳、郭庭吉,8051 单片机实践与应用,学苑出版社,1993
2. 赖麒文,8051 单片机C语言彻底应用,科学出版社,2002

作者简介:
吴强,南京师范大学数科院助教,主要从事计算机应用及语言的教学、科研。


图1 起始、终止信号时序

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

;************************************
; 向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




关键词: 测试仪

评论


相关推荐

技术专区

关闭