PCF8591 读写程序读写程序(一)(一) 、、PCF8591PCF85911、引脚说明 ANI0~ANI3 为模拟信号输入端,不使用的输入端应接地 A0~A2 地址输入端 GND、VCC 地和电源端(+5V) SDA 为 I2C 数据输入与输出端 SCL 为 I2C 时钟输入端 EXT 内外部时钟选择端,使用内部时钟时接地,使用外部时钟时接+5V OSC 外部时钟输入、内部时钟输出端,不使用时应悬空 AGND 模拟信号地 VREF 基准电压输入端 AOUT D/A 转换后的电压输出端 2、功能说明 PCF8591 是具有 I2C 总线接口的 8 位 A/D 及 D/A 转换器,具有 4 路 A/D 输入,1 路 D/A 输出PCF8591 采用典型的 I2C 总线接口器件寻址方法,即总线地址由器件地址(1001) 、引脚地址(由 A0~A2 接地或+5V 来 确定,接地代表 0;接+5V 代表 1) 、方向位(即 R/W)组成因此,在 I2C 总线系统中最多可接 8 个这样的器 件D7D6D5D4D3D2D1D01001A2A1A0R/WR/W=1 表示读操作,R/W=0 表示写操作。
本例将 A0~A2 接地,则读地址为 91H;写地址为 90H 地址字节:由器件地址、引脚地址、方向位组成,它是通信时主机发送的第一字节数据 控制字节:用于控制 PCF8951 的输入方式、输入通道、D/A 转换等,是通信时主机发送的第二字节数据,其格式如下:D7D6D5D4D3D2D1D0未用 (写 0)D/A 输 出允许 位 0 为禁止 1 为允 许A/D 输入方式选择 位 00:4 路单端输 入 01:3 路差分 输入 10:单端与 差分 11 :2 路差分输入 未用 (写 0)自动增 益选择 位 0 为禁用 1 为启 用AD 通道选择位 00:选择通道 0 01:选择通道 1 10:选择通道 2 11:选择通道 3A/D 输入方式选择说明:3、通信格式 第一字节第二字节第三字节写入器件地址(90H)写入控制字节要写入的数据向 PCF8591 写入格式(高位在前)第一字节第二字节第三字节第四字节 写入器件地址(90H 写)写入控制字节写入器件地址(91H 读)读出一字节数据从 PCF8591 读数据格式(高位在前)(二)(二) 、、I2CI2C 总线总线1、I2C 总线数据位的传输它通过 2 根线:串行数据线(SDA)和串行时钟线(SCL)组成。
连接到总线上的每一个器件都有一个唯 一的地址,而且都可以作为一个发生器或接收器,SDA 和 SCL 都是双向线路,分别通过一个电阻连接到电源 (+5V)端前提是连接到总线上的器件的 SDA 和 SCL 端必须是漏极或集电极开路型I2C 总线上的数据传输 速率在标准模式下可达 100Kb/s,快速模式可达 400Kb/s,高速模式下可达 3.4Mb/s连接到总线的器件数量只由 总线的电容(400PF)限制决定I2C 总线上每传输一个数据位必须产生一个时钟脉冲,I2C 总线上数据传输的有效性要求 SDA 线上的数据 必须在时钟线 SCL 的高电平期间保存稳定,数据线的改变只能在时钟线为低电平期间在标准模式下,高低电 平宽度必须大于 4.7us(即每次时钟线需延时 4.7us 后才能改变) 2、I2C 总线数据的传输 数据传输的字节格式 发送到 SDA 线上的每一个字节必须为 8 位,每次发送的字节数量不受限制,从机在接收完一个字节后向主 机发送一个应答位,主机在收到从机应答后才会发送第二字节数据,发送数据时先发数据的最高位 数据传输中的应答 相应的应答位由接收方(从机)产生,在应答的时钟脉冲期间,发送方(主机)应释放 SDA 线(使其为高 电平) 。
在应答过程中,接收方(从机)必须将数据线 SDA 拉低,使它在这个时钟脉冲的高电平期间保持稳定 的低电平 3、I2C 总线的传输协议 寻址字节 主机产生起始条件后,发送的第一字节为寻址字节,该字节的前 7 位为从机地址,最低位决定了传输的方 向,该最低位为“0”表示主机写数据到从机, “1”表示主机从从机中读数据从机地址由一个固定的部分(如 高 4 位 1001)和可编程部分(如低 3 位 A0~A2)及一个方向位(R/W)组成 传输格式 主机产生起始条件后,首先发送一个寻址字节,收到从机应答后,接着就传输数据,数据传输一般由主机 产生的停止位终止但如果主机仍希望在总线上通信,则它可以产生重复起始条件和寻址另一个从机,而不必 产生一个停止条件 主机写数据到从机的通信格式如下:1234567NN-1 主机产 生起始 位发从机 地址 90H等待从 机应答发送数 据等待从 机应答发送数 据等待从 机应答停止位主机从从机中读数据的通信格式如下:1234567NN-1 主机产 生起始 位发从机 地址 91H等待从 机应答接收从 机发出 的数据向从机 应答接收从 机发出 的数据向从机 应答主机产 生停止 位原理图如下:控制字的定义如下:0XXX0XXXDA 标志模拟输入模式 自动增量通道号:0~3对 AD0~AD3通道来说,我们常用的控制字的值为0x0,0x1,0x2,0x3。
对 DA 来说,我们常用的控制字的值为0x40注意:如果我们循环读取注意:如果我们循环读取 AD0至至 AD3,由于读周期读取的,由于读周期读取的 AD 转换值,其实是上一次的转换结果,所以我们读取转换值,其实是上一次的转换结果,所以我们读取 AD1的时候,其实是读取的的时候,其实是读取的 AD0,依次类推(上电第一次读取的值是,依次类推(上电第一次读取的值是0x80)) 。