PCF8591的功能、特性、硬件结构图、原理PCF8591是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。功能PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。PCF8591的最大转化速率由I2C总线的最大速率决定。特性【1】单独供电【2】PCF8591的操作电压范围2.5V-6V【3】低待机电流【4】通过I2C总线串行输入/输出【5】PCF8591通过3个硬件地址引脚寻址【6】PCF8591的采样率由I2C总线速率决定【7】4个模拟输入可编程为单端型或差分输入【8】自动增量频道选择【9】PCF8591的模拟电压范围从VSS到VDD【10】PCF8591内置跟踪保持电路【11】8-bit逐次逼近A/D转换器【12】通过1路模拟输出实现DAC增益器件总地址PCF8591采用典型的I2C总线接口器件寻址方法,即总线地址由器件地址、引脚地址和方向位组成。Pcf8591的器件地址为1001,引脚地址由A2、A1和A0设定。对于8*C552这样具有I2C总线的接口的单片机,可利用PCF8591进行A/D和D/A的串行扩展,构成一个数据转换与数据采集系统。由于PCF8591有三位引脚地址,所以一个系统最多可扩展8片pcf8591.PCF8591片内有控制寄存器,单片机通过向该寄存器写入控制字来控制A/D和D/A转换,为此在转换之前要进行写控制字传送。其A/D转换部分读数据的操作格式为:即寻址后要首先写控制字,以进行模拟通道选择、通道增量位和模拟信号输入形式(单端输入和差分输入)等设置。操作过程中,在PCF8591接收到的每个应答信号的后沿触发A/D转换,随后就是读出转换结果,但读出的是前一次的转换结果。所以“读数据0”是一次无效的操作。SSLA+WA控制字A读数据0A读数据1A......读数据nNAP控制字节控制字节用于实现器件的各种功能,如模拟信号由哪几个通道输入等。控制字节存放在控制寄存器中,总线操作时为主控器发送的第二字节。其格式如下:其中:D1、D0两位是A/D通道编号:00通道0,01通道1,10通道2,11通道3自动增益选择(有效位为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。在进行数据操作时,首先是主控器发出起始信号,然后发出读寻址字节,被控器做出应答后,主控器从被控器读出第一个数据字节,接收器发出应答,主控器从被控器件读出第二个数据字节,一直到主控器从被控器中读D7D6D5D4D3D2D1D0出第n个数据字节,接收器发出非应答信号,最后主控器发出停止信号(启动和停止信号只能由主控器件发出)。I2C总线基本数据传输格式I2C总线上的数据传输按位进行,高位在前,低位在后,每传输一个数据字节通过应答信号进行一次联络,传送的字节数不受限制。启动信号由主控器件发出,在发出启动信号前,主控器件要通过检测SCL和SDA来了解总线情况。若总线处于空闲状态,即可发出启动信号,启动数据传输。在启动信号之后发出的必定是寻址字节,寻址字节由7位从地址和1个方向位组成。其中从地址用于寻址从器件,而方向位用于规定数据传输方向。寻址字节通常写为SLA+R/W,其中R代表读,W代表写。R/W=1时,表示主控器件读(接收)数据;R/W=0时,表示主控器件写(发送)数据。所以通过寻址字节即可知道要寻哪个器件以及进行哪个方向的数据传输。当主控器件发出寻址字节后,其他各器件都接收到了总线上的寻址字节,并与自己的从地址进行比较,当某器件比较相等确认自己被寻址后,该器件就返回应答信号,以作为被寻址的响应。此时,进行数据传输的主从双方以及传输方向就确定了下来,然后进行数据传输。数据传输同样以字节为单位,数据字节传输需要通过应答信号进行确认。所以每传输一个字节就有一个应答信号,直到数据传输完毕,主控器件发出停止信号。结束数据传输,释放总线。I2C总线的状态和信号启动信号和停止信号串行数据传输的开始和结束由总线的启动信号和停止信号控制,启动信号和停止信号只能由主控器件发出,它们对应的是SCL的高电平与SDA的跳变。当SCL线为高电平时,主控器件在SDA线上产生一个电平负跳变时,这便是启动信号,总线启动后,即可进行数据传输。当SCL线为高电平时,主控器件在SDA上产生一个电平正跳变,这便是总线的停止信号。引脚信息AIN~AIN3:模拟信号输入0端。PCF8591引脚A0~A2:引脚地址端。VDD、VSS:电源端。(2.5~6V)SDA、SCL:I2C总线的数据线、时钟线。OSC:外部时钟输入端,内部时钟输出端。EXT:内部、外部时钟选择线,使用内部时钟时EXT接地。AGND:模拟信号地。AOUT:D/A转换输出端。VREF:基准电源端。