1 引言
I2C总线是Philips公司推出的串行总线,整个系统仅靠数据线(SDA)和时钟线(SCL)实现完善的全双工数据传输,即CPU与各个外围器件仅靠这两条线实现信息交换。I2C总线系统与传统的并行总线系统相比具有结构简单、可维护性好、易实现系统扩展、易实现模块化标准化设计、可靠性高等优点。
在一个完整的 单片机 系统中,A/D转换芯片往往是必不可少的。PCF8591是一种具有I2C总线接口的A/D转换芯片。在与CPU的信息传输过程中仅靠时钟线SCL和数据线SDA就可以实现。
2 芯片介绍
PCF8591是具有I2C总线接口的8位A/D及D/A转换器。有4路A/D转换输入,1路D/A模拟输出。这就是说,它既可以作A/D转换也可以作D/A转换。A/D转换为逐次比较型。引脚图如图1所示。结构图如图2所示。电源电压典型值为5V。
AIN0~AIN3:模拟信号输入端。
A0~A3:引脚地址端。
VDD、VSS:电源端。
(2.5~6V)
SDA、SCL:I2C总线的数据线、
时钟线。
OSC:外部时钟输入端,内部时钟
输出端。
EXT:内部、外部时钟选择线,使
用内部时钟时EXT接地。
AGND:模拟信号地。
AOUT:D/A转换输出端。
VREF:基准电源端。
图2 PCF8591
3 应用
3.1 器件总地址
PCF8591采用典型的I2C总线接口器件寻址方法,即总线地址由器件地址、引脚地址和方向位组成。飞利蒲公司规定A/D器件地址为1001。引脚地址为A2A1A0,其值由用户选择,因此I2C系统中最多可接23=8个具有I2C总线接口的A/D器件。地址的最后一位为方向位R/ ,当主控器对A/D器件进行读操作时为1,进行写操作时为0。总线操作时,由器件地址、引脚地址和方向位组成的从地址为主控器发送的第一字节。
3.2 控制字节
控制字节用于实现器件的各种功能,如模拟信号由哪几个通道输入等。控制字节存放在控制寄存器中。总线操作时为主控器发送的第二字节。其格式如下所示:
其中:D1、D0两位是A/D通道编号:00通道0,01通道1,10通道2,11通道3
D2 自动增益选择(有效位为1)
D5、D4模拟量输入选择:00为四路单数入、01为三路差分输入、10为单端与差分配合输入、11为模拟输出允许有效
当系统为A/D转换时,模拟输出允许为0。模拟量输入选择位取值由输入方式决定:四路单端输入时取00,三路差分输入时取01,单端与差分输入时取10,二路差分输入时取11。最低两位时通道编号位,当对0通道的模拟信号进行A/D转换时取00,当对1通道的模拟信号进行A/D转换时取01,当对2通道的模拟信号进行A/D转换时取10,当对3通道的模拟信号进行A/D转换时取11。
在进行数据操作时,首先是主控器发出起始信号,然后发出读寻址字节,被控器做出应答后,主控器从被控器读出第一个数据字节,主控器发出应答,主控器从被控器读出第二个数据字节,主控器发出应答…一直到主控器从被控器中读出第n个数据字节,主控器发出非应答信号,最后主控器发出停止信号。
3.3 应用电路
如图3所示电路是暖水锅炉水温检测和A/D转换电路。AD581作为电流型温度传感器AD590的基准电源。两只AD590分别用来采集上水和回水的温度。
图3 暖水锅炉水温检测和A/D转换电路
温度变化时通过AD590的电流发生变化,温度每升高1℃,电流增加1mA。两只远放电路的作用是将电流信号转变为电压信号。图中R6、R7、R8、R9是温度校准电位器,均采用精细电位器。图中R6和R7分别用来校准0℃时两运放的输出电压,即将传感器置于冰水混合液中时,调节R6或R7使运放的输出电压,即将传感器置于冰水混合液中时,调节R6或R7使运放的输出电压为0V。图中R8和R9分别用来校准100℃时两运放的输出电压,即将传感器置于沸水时,调节R8或R9使两运放的输出电压为某一确定值。此值由使用者决定,当然,其值大小要考虑A/D转换器选用的基准电源值。
A/D转换器PCF8591靠数据线SDL和时钟线SCL与CPU联系。由软件决定水温数据的采集时间和数据的存储以及送去显示。
4 结论
Philips公司推出的I2C总线系统较通用 单片机 系统电路简单。由普通CPU芯片同I2C专用器件组成的系统为模拟I2C系统,它性能稳定,价格较低,具有较大的应用前景