IIC总线协议及ADCPCF8951汇总

合集下载

IIC总线协议及ADCPCF8951汇总

IIC总线协议及ADCPCF8951汇总

PCF8591是单片、单电源低功 耗8位CMOS数据采集器件,具有4 个模拟输入、一个输出和一个串行 I2C总线接口。3个地址引脚A0、 A1和A2用于编程硬件地址,允许 将最多8个器件连接至I2C总线而不 需要额外硬件。器件的地址、控制 和数据通过两线双向I2C总线传输。
器件功能包括多路复用模拟输 入、片上跟踪和保持功能、8位模 数转换和8位数模拟转换。最大转 换速率取决于I2C总线的最高速率。
下面讲基于IIC的集AD与DA一体的
—— PCF8591
1、概述
PCF8591
单电源供电 工作电压:2.5 V ~ 6 V 待机电流低 I2C总线串行输入/输出 通过3个硬件地址引脚编址 采样速率取决于I2C总线速度 4个模拟输入可编程为单端或差分输入 自动增量通道选择 模拟电压范围:VSS~VDD 片上跟踪与保持电路 8位逐次逼近式A/D转换 带一个模拟输出的乘法DAC
控制字节
D5,D4 模拟量输入选择: 00为四路单数入; 01为三路差分输入; 10 为单端与差分配合输入;11为模拟输出允许有效
读字节(AD)操作流程 在进行数据操作时: 首先是主控器发然后发出控制字节(写); 被控器做出应答后;
然后发出寻址字节(读); 被控器做出应答后; 主控器从被控器读出第一个数据字节,主控器发出应答; 主控器从被控器读出第二个数据字节,主控器发出应答; …… 主控器从被控器读出第n个数据字节,主控器发出非应答信号; 主控器发出停止信号。
四、总线的寻址 I2C总线协议有明确的规定:采用7位的寻址字 节(寻址字节是起始信号后的第一个字节)。 (1)寻址字节的位定义
D7~D1位组成从机的地址。D0位是数据 传送方向位,为“0”时表示主机向从机写数 据,为“1”时表示主机由从机读数据。

iic协议格式

iic协议格式

IIC(Inter-Integrated Circuit)协议,即集成电路总线协议,是一种两线制的串行通信总线,使用多主从架构。

IIC协议主要应用于数据量不大且传输距离短的场合,如主板、嵌入式系统或手机连接低速周边设备。

常见的传输速率有100kb/s、300kb/s和3.4Mkb/s。

IIC协议的传输格式以8bit为一个基本传输单位,包含地址、片选、读写和数据信号。

其基本时序如图所示,SCL为输入的时钟信号,SDA既可作为数据的输入信号,也可作为数据的输出信号。

在IIC总线协议中,数据的传输过程包括以下几个步骤:
1. START信号:表示数据传输的开始。

在SCL线为高电平的情况下,SDA线由高变低,即视为START开始。

2. 数据传输:在START信号之后,数据按照预定的格式进行传输。

数据线SDA上的电平变化表示数据的传输方向和状态。

3. STOP信号:表示数据传输的结束。

在SCL线为高电平的情况下,SDA线由低变高,即视为STOP结束。

基于51单片机的AD pcf8951 C程序

基于51单片机的AD pcf8951 C程序
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();
}
return k;
}
void ad_zhuan()//初始化AD转换
{
start();//启动信号
write_byte(0x90);//寻pcf8591址
respons();
stop();
return temp;
}
void main()
{
uchar a,A1,A2,A3,adval;
init();//初始化
//write_add(23,0xaa);向EEPROM写
delay1(100);
//P1=read_add(23);读EEPROM中数据
while(1)
scl=1;
delay();
TMOD=0x21; //定时器1的工作方式2;8位初值自动重装定时器
SCON=0x50;//8位数据允许串行接受
TH1= 0xfd;//产生波特率
TL1= 0xfd;
EA=1;
TR0=1;
}
void write_byte(uchar date)//写一个字节
{
uchar i,temp;
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
void respons() //应答
{
uchar i;
scl=1;
delay();

具有I2C总线接口的AD芯片PCF8591及其应用

具有I2C总线接口的AD芯片PCF8591及其应用

标题:具有I2C总线接口的A/D芯片PCF8591及其应用2009-05-28 04:03:27摘要:I2C总线是Philips公司推出的新型单片机系统。

它采用串行总线,主控器与外围器件仅靠两条线进行信息传输,一条称为时钟线(SCL),另一条位数据线(SDA)。

I2C总线单片机系统较通用单片机系统电路简单。

由普通CPU芯片同I2C专用器件组成的系统为模拟I2C系统,它性能稳定,价格较低,目前已得到广泛应用.本文介绍了具有I2C接口的A/D芯片PCF8591的引脚图及应用电路,并在暖水锅炉温度记录仪中得到应用。

关键词:I2C总线A/D转换器件地址控制字节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:基准电源端。

图2PCF85913 应用3.1 器件总地址PCF8591采用典型的I2C总线接口器件寻址方法,即总线地址由器件地址、引脚地址和方向位组成。

iic协议手册

iic协议手册

iic协议手册IIC(Inter-Integrated Circuit)是一种串行通信协议,被广泛应用于数字集成电路之间的通信。

本手册将详细介绍IIC协议的基本原理、通信模式、信号电平和传输速度等关键要点。

一、基本原理IIC协议最早由飞利浦公司(现在的恩智浦半导体)于1982年推出,用于解决集成电路之间的通信问题。

它基于两根双向线路:SDA(串行数据线)和SCL(串行时钟线),实现了高效率的数据传输和设备间的通信。

二、通信模式1. 主从模式:IIC通信中,通常会有一个主设备(Master)和多个从设备(Slave)。

主设备负责发起通信,从设备则被主设备控制并传输数据。

2. 单主模式:只能有一个主设备,但可以连接多个从设备。

主设备可以通过发送地址来选择特定的从设备进行通信。

3. 多主模式:允许多个主设备同时存在,并通过总线仲裁机制(bus arbitration)来解决竞争冲突。

三、信号电平1. 逻辑低电平:0V至0.3V之间。

2. 逻辑高电平:0.7VDD至VDD之间(VDD为供电电压)。

3. 电压标准:IIC协议定义了标准模式、快速模式和高速模式,对应的电压标准分别为3.3V和5V。

用户在使用时需根据实际情况选择合适的电压标准。

四、传输速度IIC协议的传输速率可通过调整时钟频率进行控制,最高速度取决于总线电容和负载。

根据不同的模式,IIC协议可以达到的最高传输速率分别为100kbps(标准模式)、400kbps(快速模式)和3.4Mbps(高速模式)。

五、通信过程IIC通信包括起始条件、地址传输、数据传输和停止条件等多个环节。

以下是一种简单的通信过程示例:1. 主设备发送起始条件:SCL线为高电平时,SDA线由高电平跳变为低电平。

2. 主设备发送从设备地址:主设备发送从设备的7位地址,包括读/写位。

从设备通过比较地址选择响应。

3. 数据传输:根据读/写位选择需要读取或写入的数据。

4. 停止条件:主设备通过将SDA线由低电平跳变为高电平,产生停止条件。

IIC总线工作原理

IIC总线工作原理

IIC总线工作原理IIC(Inter-Integrated Circuit)总线是一种串行通信接口标准,广泛应用于各种电子设备之间的通信。

它在数字电路领域中被普遍使用,因为它具有简单、易于实现和低功耗的特点。

IIC总线可以用于连接各种外设,如传感器、存储器、显示屏等,实现它们之间的数据传输和控制。

首先,IIC总线的起始信号是一个高电平到低电平的时钟信号(SCL),它表示通信的开始。

当SCL为高电平时,数据线(SDA)处于空闲状态,并且可以连接多个设备。

当SCL为低电平时,表示通信成功开始。

当起始信号发送后,接下来是地址和数据传输阶段。

在这个阶段,主设备(通常是控制器)会发送一个7位的地址码给从设备(如传感器)。

地址码用于指示从设备编号,这样主设备就能识别目标设备。

此外,还有一个位用于指示读取(R)或写入(W)操作。

主设备发送完地址码后,从设备会发送一个应答信号(ACK)来确认接收到地址码。

如果从设备正常工作,它会拉低SDA线来发送ACK信号。

如果没有设备响应地址码,主设备会发送停止信号来终止通信。

一旦主设备发送了起始信号和地址码,接下来就是数据传输阶段。

在数据传输阶段,主设备将发送或接收以字节为单位的数据。

数据线的电平发送者由主设备和从设备的电平决定。

主设备将每个字节分成8个位,依次在SDA上发送,并根据SCL时钟信号来同步数据传输。

在每个字节发送之后,接收者会回复一个ACK信号来确认已接收到数据。

主设备可以选择继续发送更多字节,或者发送停止信号来结束通信。

最后,通信的最后阶段是停止信号。

停止信号也是一个高电平到低电平的时钟信号,它表示通信的结束。

停止信号发出后,SDA和SCL两条线都回到高电平状态,表示通信已经结束。

总的来说,IIC总线的工作原理是基于起始信号、地址和数据传输,以及停止信号。

起始信号用于表示通信开始,地址和数据传输用于实现主设备和从设备之间的数据传输,而停止信号表示通信结束。

通过这种方式,IIC总线可以实现简单、高效的串行通信,广泛应用于各种电子设备之间的连接和通信。

iic协议讲解

iic协议讲解

iic协议讲解IIC(Inter-Integrated Circuit,即I2C)是一种串行通信协议,由飞思卡尔公司(现在是恩智浦公司)于1982年首次推出。

它通过两根信号线(SCL和SDA)进行通信,并且允许多个设备共享同一对信号线。

IIC协议使用主从结构,其中一个设备充当主设备,控制通信的起止,而其他设备充当从设备,等待主设备的命令或请求。

以下是IIC协议的一些关键概念和基本通信流程:1. 帧格式:IIC通信是基于字节的,每个数据传输都是1个字节。

每个字节由8个位组成,其中最高位是读或写位,指示主设备是发送数据还是请求数据。

2. 起始信号和停止信号:通信开始前,主设备发送一个起始信号(S)来指示通信的开始,结束时发送一个停止信号(P)来指示通信的结束。

3. 寻址:主设备通过发送设备地址来选择要与之通信的从设备。

每个从设备都有一个唯一的地址,可以是7位或10位。

在7位寻址模式下,可以有最多128个从设备。

4. 数据传输:主设备可以发送数据给从设备,也可以请求从设备发送数据给主设备。

数据传输是通过在SCL线上的时钟脉冲上的时钟信号同步进行的。

5. 硬件确认:每个字节的传输后,接收到字节的设备都会返回一个ACK或NACK信号,以表示是否成功接收到字节。

ACK (ACKnowledge)表示成功接收到字节,而NACK(Not ACKnowledge)则表示接收出错。

6. 速度:IIC协议支持不同的传输速度,通常有标准模式(100 Kbps)和快速模式(400 Kbps)。

一些设备还支持更高的速度,如高速模式(3.4 Mbps)和超高速模式(5 Mbps)。

总的来说,IIC协议是一种简单、灵活且可靠的通信协议,广泛应用于各种电子设备之间的通信,如传感器、存储器和外围设备等。

它的主要优点是只需两根线来进行通信,并且可以连接多个设备,节省了电路复杂度和空间。

I2C总线协议详解

I2C总线协议详解

I2C总线协议详解简介:I2C(Inter-Integrated Circuit)是一种由PHILIPS公司开发的两线式串行总线,用于衔接微控制器及其外围设备。

I2C总线产生于在80年月,最初为音频和视频设备开发,如今主要在服务器管理中用法,其中包括单个组件状态的通信可随时监控内存、硬盘、网络、系统温度等多个参数,增强了系统的平安性,便利了管理。

I2C总线特点I2C总线最主要的优点是其容易性和有效性。

因为接口挺直在组件之上,因此I2C总线占用的空间十分小,削减了板的空间和芯片管脚的数量,降低了互联成本。

总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。

I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够举行发送和接收的设备都可以成为主总线。

一个主控能够控制信号的传输和时钟频率。

固然,在任何时光点上只能有一个主控。

I2C总线工作原理总线的构成及信号类型I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。

在CPU与被控IC之间、IC与IC之间举行双向传送,最高传送速率100kbps。

各种被控制电路均并联在这条总线上,但就像电话机一样惟独拨通各自的号码才干工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。

CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量打算该调节的类别(如对照度、亮度等)及需要调节的量。

这样,各控制电路虽然挂在同一条总线上,却彼此自立,互不相关。

I2C总线在传送数据过程*有三种类型信号,它们分离是:开头信号、第1页共4页。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

起始和终止信号都是由主机发出的,在起始信号产生后, 总线就处于被占用的状态;在终止信号产生后,总线就处 于空闲状态。
连接到I2C总线上的器件,若具有I2C总线的硬件接口,则 很容易检测到起始和终止信号。
接收器件收到一个完整的数据字节后,有可能需要完成 一些其它工作,如处理内部中断服务等,可能无法立刻接收 下一个字节,这时接收器件可以将SCL线拉成低电平,从而 使主机处于等待状态。直到接收器件准备好接收下一个字节 时,再释放SCL线使之为高电平,从而使数据传送可以继续 进行。
下面讲基于IIC的集AD与DA一体的
—— PCF8591
1、概述
PCF8591
单电源供电 工作电压:2.5 V ~ 6 V 待机电流低 I2C总线串行输入/输出 通过3个硬件地址引脚编址 采样速率取决于I2C总线速度 4个模拟输入可编程为单端或差分输入 自动增量通道选择 模拟电压范围:VSS~VDD 片上跟踪与保持电路 8位逐次逼近式A/D转换 带一个模拟输出的乘法DAC
三、数据传送格式 (1)字节传送与应答
每一个字节必须保证是8位长度。数据传送时,先传 送最高位(MSB),每一个被传送的字节后面都必须跟 随一位应答位(即一帧共有9位)。
由于某种原因从机不对主机寻址信号应答时(如从机 正在进行实时性的处理工作而无法接收总线上的数据), 它必须将数据线置于高电平,而由主机产生一个终止信号 以结束总线的数据传送。 如果从机对主机进行了应答,但在数据传送一段时间后 无法继续接收更多的数据时,从机可以通过对无法接收的 第一个数据字节的“非应答”通知主机,主机则应发出终 止信号以结束数据的继续传送。 当主机接收数据时,它收到最后一个数据字节后,必须 向从机发出一个结束传送的信号。这个信号是由对从机的 “非应答”来实现的。然后,从机释放SDA线,以允许主 机产生终止信号。
I2C串行总线的组成及工作原理
结合AD/DA芯片PCF8591与AT24C02
I2C串行总线的组成及工作原理
采用串行总线技术可以使系统的硬件设计大大简化、系统 的体积减小、可靠性提高。同时,系统的更改和扩充极为容 易。 常用的串行扩展总线有: I2C (Inter IC BUS)总线, 如PCF8591,AT24C02 单总线(1-WIRE BUS), 如温度传感器18B20 SPI(Serial Peripheral Interface)总线, 如串行口 Microwire/PLUS等。 本课仅讨论I2C串行总线。
器件寻址
PCF8591采用典型的I2C总线接口器件寻址方法,即总 线地址由器件地址、引脚地址和方向位组成。 由PHILIPS公司规定AD器件地址为1001,引脚地址为 A2A1A0,其值由用户选择因此 系统中最多可接8个具有I2C 接口的器件,地址的最后一位为方向为R/W,当主控器对 A/D器件进行读操作时为 1,进行写操作时为0,总线操作 时,由器件地址、引脚地址和方向位组成的从地址为主控 器发送的第一字节。
a、主机向从机发送数据,数据传送方向在整 个传送过程中不变:
注:有阴影部分表示数据由主机向从机传送,无阴影部分则 表示数据由从机向主机传送。 A表示应答, A非表示非应答(高电平)。S表示起始信号, P表示终止信号。。
b、主机在第一个字节后,立即从从机读数据
c、在传送过程中,当需要改变传送方向时, 起始信号和从机地址都被重复产生一次,但 两次读/写方向位正好反相。
(2)数据帧格式 I2C总线上传送的数据信号是广义的,既包括地址 信号,又包括真正的数据信号。
在起始信号后必须传送一个从机的地址(7位), 第8位是数据的传送方向位(R/T),用“0”表示主 机发送数据(T),“1”表示主机接收数据(R)。 每次数据传送总是由主机产生的终止信号结束。但 是,若主机希望继续占用总线进行新的数据传送, 则可以不产生终止信号,马上再次发出起始信号对 另一从机进行寻址。 在总线的一次数据传送过程中,可以有以下几种 组合方式:
PCF8591
2、应用 闭环控制系统 用于远程数据采集的低功耗转换器 电池供电设备 在汽车、音响和TV应用方面的模拟电平时,SDA 线从高电平向低电平切换,这个 情况表示起始条件;
#define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();}
发送字节
void iic_sendbyte(unsigned char byt) { unsigned char i; for(i=0;i<8;i++) { if(byt&0x80) //先发高位 SDA = 1; else SDA = 0; somenop; SCL = 1; byt <<= 1; somenop; SCL = 0; } }
PCF8591是单片、单电源低功 耗8位CMOS数据采集器件,具有4 个模拟输入、一个输出和一个串行 I2C总线接口。3个地址引脚A0、 A1和A2用于编程硬件地址,允许 将最多8个器件连接至I2C总线而不 需要额外硬件。器件的地址、控制 和数据通过两线双向I2C总线传输。
器件功能包括多路复用模拟输 入、片上跟踪和保持功能、8位模 数转换和8位数模拟转换。最大转 换速率取决于I2C总线的最高速率。
iic_sendbyte(0x90);
控制字节
控制字节用于实现器件的各种功能 如模拟信号由哪几个通道输入等 控 制字节存放在控制寄存器中 总线操作时为主控器发送的第二字节其格 式如下所示。
iic_sendbyte(0x03);
其中: D1D0两位是A/D通道编号: 00:通道0;01:通道1;10: 通道2;11:通道 3 D2:自动增量选择(有效位为1),每次A/D转换后通道号将 自动增加 D5,D4 模拟量输入选择: 00为四路单数入; 01为三路差分输入; 10 为单端与差分配合输入;11为模拟输出允许有效 D6:模拟输出使能,即DA使能
接收字节
unsigned char iic_recbyte(void) { unsigned char da; unsigned char i; for(i=0;i<8;i++) { SCL = 1; somenop; da <<= 1; if(SDA) da |= 0x01; SCL = 0; somenop; } return da; }
写字节(DA)操作流程 在进行数据操作时: 首先是主控器发出起始信号; 然后发出寻址字节(写); 被控器做出应答后; 然后发出控制字节(写); 被控器做出应答后;
主控器向被控器写入第一个数据字节,被控器回一个应答; 主控器向被控器写入第二个数据字节,被控器回一个应答;
……
主控器发出停止信号。
应答响应
8.2 80C51单片机I2C串行总线器件的接口 8.2.1 总线数据传送的模拟
主机可以采用不带I2C总线接口的单片机,如 80C51、AT89C2051等单片机,利用软件实现I2C 总线的数据传送,即软件与硬件结合的信号模拟。 一、典型信号模拟 为了保证数据传送的可靠性,标准的I2C总线的数 据传送有严格的时序要求。I2C总线的起始信号、终 止信号、发送“0”及发送“1”的模拟时序 :
8.1.2
I2C总线的数据传送
一、数据位的有效性规定
I2C总线进行数据传送时,时钟信号为高电平期间,数据 线上的数据必须保持稳定,只有在时钟线上的信号为低电 平期间,数据线上的高电平或低电平状态才允许变化。
二、起始和终止信号
SCL线为高电平期间,SDA线由高电平向低电 平的变化表示起始信号;SCL线为高电平期间, SDA线由低电平向高电平的变化表示终止信号。
PCF8591
3、引脚图 • AIN0~AIN3:模拟信号输入端。 • A0~A3:引脚地址端。 • VDD、VSS:电源端。(2.5~6V) • SDA、SCL:I2C 总线的数据线、时钟线。 • OSC:外部时钟输入端,内部时钟输出端。 • EXT:内部、外部时钟选择线,使用内部时 钟时 EXT 接地。 • AGND:模拟信号地。
I2C串行总线概述
I2C总线是PHLIPS公司推出的一种串行总线,是具备多 主机系统所需的包括总线裁决和高低速器件同步功能的高 性能串行总线。
I2C总线只有两根双向信号线。一根是数据线SDA,另 一根是时钟线SCL。
I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均 为高电平。连到总线上的任一器件输出的低电平,都将使总 线的信号变低,即各器件的SDA及SCL都是线“与”关系。
主机在接收到一个字节后, 向从机作出应答
主机等待从机应答
void iic_ack(bit ackbit) { if(ackbit) SDA = 0; //应答 else SDA = 1; //非应答 somenop; SCL = 1; somenop; SCL = 0; SDA = 1; //SDA拉高,释放SDA线 somenop; }
控制字节
D5,D4 模拟量输入选择: 00为四路单数入; 01为三路差分输入; 10 为单端与差分配合输入;11为模拟输出允许有效
读字节(AD)操作流程 在进行数据操作时: 首先是主控器发出起始信号; 然后发出寻址字节(写); 被控器做出应答后; 然后发出控制字节(写); 被控器做出应答后;
然后发出寻址字节(读); 被控器做出应答后; 主控器从被控器读出第一个数据字节,主控器发出应答; 主控器从被控器读出第二个数据字节,主控器发出应答; …… 主控器从被控器读出第n个数据字节,主控器发出非应答信号; 主控器发出停止信号。
void iic_start(void) { SDA = 1; _nop_(); SCL = 1; somenop; SDA = 0; somenop; SCL = 0; }
I2C停止
SCL 线是高电平时,SDA 线由低电平向高电平切换,这个 情况表示停止条件。
相关文档
最新文档