1 引言
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
AD9883(以下简称AD)为美国Analog Devices公司生产的3路8位模数转换器件,最大转换率达140MS/s(百万次采样/每秒),多用于捕获个人计算机或工作站的RGB信号。近年来,在视频信号处理领域得到广泛的应用。AD内含25个寄存器00H-18H(其中00H、14H为只读,15H-18H为备用,其余为可读写),用来对AD进行初始化和控制。针对不同的应用环境,这些寄存器需写入相应的值,才能使AD正常工作。AD的初始化是其工程应用的前提。AD初始化过程依靠AD9883的SDA(Pin 57)和SCL(Pin 56)引脚进行,时序符合I2C总线的时序标准。我们可直接采用带有I2C总线接口的单片机对AD进行初始化,但是目前带有I2C总线接口的单片机数量较少并且价格普遍较高。对于不带I2C总线接口的单片机,我们可以采用模拟I2C总线技术使用其普通I/O口来模拟I2C总线时序,实现对外围器件的读、写操作。对于单主系统(只有一个主控器件),目前已经设计出模拟I2C总线的通用软件包[6],通用软件包由信号模拟子程序STA、STOP、MACK、MNACK和通用子程序CACK、WRBYT、RDBYT、WRNBYT、RDNBYT共9个子程序组成。用单片机的I/O口模拟I2C总线数据传送时,可以直接调用这些通用软件包,本文只介绍模拟I2C总线的应用程序设计方法。WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
2 I2C总线传输协议简介[4]
WWW_P※LCJS_COM-PLC-)技.术_网
I2C是Philips公司推出的芯片间串行传输总线,以两根连线(SDA和SCL)即可实现完善的全双工同步数据传送,具有规范完整、结构独立和使用简单等特点。I2C总线的时钟线SCL和数据线SDA均为双向传输线。数据线上每传输一位数据都要求时钟线上有1个时钟脉冲与其相对应。P.L.C.技.术.网——可编程控制器技术门户
WWW_P※LCJS_CO※M-PLC-技-.术_网
I2C总线数据传送包括三种重要的时序状态起始信号、终止信号和应答信号:WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
(1) 起始信号:在时钟线保持高电平期间,数据线出现由高电平向低电平变化时启动I2C总线;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
(2) 终止信号:在时钟线保持高电平期间,数据线出现由低电平向高电平变化时停止I2C总线;plcjs.技.术_网
(3)应答信号:I2C总线数据传送时,每传送一个字节数据后都必须有应答信号,应答信号在第9个时钟位上出现,接收器输出低电平为应答信号(A),输出高电平则为非应答信号(/A)。图1为I2C总线的起始信号和终止信号。WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW_PLCJS_COM-PLC-技.术_网
W1WW_P4LCJS_COM-PLC-技.术_网
图1 I2C总线的起始信号和终止信号WW.W_PLCJS_COM-PLC-技.术_网
WWW_P※LCJS_CO※M-PLC-技-.术_网
按照总线规约,起始信号表示一次数据传送的开始,其后为从器件地址SLA(读为SLAR、写为SLAW),从器件地址由高7位地址和最低1位方向位组成,方向位表明主控器件与被控器件数据传送的方向,为“0”时表示主控器件对被控器件的写操作,为“1”时表示主控器件对被控器件的读操作。从器件地址后是按指定读、写操作的数据字节和应答位。数据传送完成后主控器件发送停止信号。WWW.PLCJS.COM——可编程控制器技术门户
3 AD的初始化设计
WWcW_PLCJS_COM-PLC-技.术_网
现有某工程实例,使用AD捕获计算机RGB三路视频信号,根据初始化要求,需分别向01H-13H各寄存器写入数据AFH、D0H、E8H、F8H、40H、2CH、D0H、D0H、D0H、D0H、80H、80H、80H、60H、4EH、B8H、20H、FFH、FFH。我们采用单片机AT89C2051来实现AD的初始化。WWW_PLCJS_COM-PLC-技.术_网
WWW_PLC※JS_COM-PmLC-技.术_网
AT89C2051内部共有15条I/O线,选择I/O口P1.6和P1.5来模拟I2C总线接口。在这里,AT89C2051为单主控器件,AD9883为从器件。对于AD9883,如果PCB电路设计中的A0引脚(Pin 55)接电源(VCC),则从器件地址SLA=“1001101”;若A0引脚接地(GND),则SLA=“1001100”。实际系统中A0引脚接地,所以写操作时SLAW=“10011000”,读操作时SLAR=“10011001”;另外需要注意的是,因为AT89C2051用来存放程序的闪速存储器大小为2KB。所以在进行内存分配的时候所有指令的目的地址必须落在000H-7FFH范围内。WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWcW_PLCJS_COM-PLC-技.术_网
3.1 应用程序设计W1WW_P4LCJS_COM-PLC-技.术_网
为了软件仿真方便,先读取所有的AD寄存器的初始值,然后往寄存器里写入指定的数据,写入完成后,再读出寄存器的值,看数据是否成功写入。P.L.C.技.术.网——可编程控制器技术门户