IIC原理与应用.ppt

上传人:wj 文档编号:5875713 上传时间:2023-05-09 格式:PPT 页数:53 大小:2.95MB
下载 相关 举报
IIC原理与应用.ppt_第1页
第1页 / 共53页
IIC原理与应用.ppt_第2页
第2页 / 共53页
IIC原理与应用.ppt_第3页
第3页 / 共53页
IIC原理与应用.ppt_第4页
第4页 / 共53页
IIC原理与应用.ppt_第5页
第5页 / 共53页
IIC原理与应用.ppt_第6页
第6页 / 共53页
IIC原理与应用.ppt_第7页
第7页 / 共53页
IIC原理与应用.ppt_第8页
第8页 / 共53页
IIC原理与应用.ppt_第9页
第9页 / 共53页
IIC原理与应用.ppt_第10页
第10页 / 共53页
IIC原理与应用.ppt_第11页
第11页 / 共53页
IIC原理与应用.ppt_第12页
第12页 / 共53页
IIC原理与应用.ppt_第13页
第13页 / 共53页
IIC原理与应用.ppt_第14页
第14页 / 共53页
IIC原理与应用.ppt_第15页
第15页 / 共53页
IIC原理与应用.ppt_第16页
第16页 / 共53页
IIC原理与应用.ppt_第17页
第17页 / 共53页
IIC原理与应用.ppt_第18页
第18页 / 共53页
IIC原理与应用.ppt_第19页
第19页 / 共53页
IIC原理与应用.ppt_第20页
第20页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

IIC原理与应用.ppt

《IIC原理与应用.ppt》由会员分享,可在线阅读,更多相关《IIC原理与应用.ppt(53页珍藏版)》请在冰点文库上搜索。

IIC原理与应用.ppt

I2C公用二总线结构,一、I2C总线规范简介,在器件(IC)之间,使用两根信号线(SDA和SCL)串行的方法进行信息传送的并允许若干兼容器件共享的二线总线,称为I2C总线。

1.I2C总线的概念,InterIntegratedCircuit,DECTcordlessphonebase-station,DigitalEnhancedCordlessTelecommunications,SDA(SerialDAta)线称为串行数据线,其上传输双向的数据;SCL(SerialCLock)线称为串行时钟线,其上传输时钟信号,用来同步串行数据线上的数据。

I2C总线上的器件,SDA和SCL引脚都是一个开漏输出端。

挂接在I2C总线上的器件(或IC),根据其功能可分为两种:

主控器件和从控器件。

主控器件:

控制总线存取,产生串行时钟(SCL)信号,并产生启动传送信号及结束传送信号的器件,总线必须由一个主控器件控制。

主控器件一般称主器件(主机)。

从控器件:

在总线上被主控器件寻址的器件,它们根据主控器件的命令来接收和发送数据。

从控器件一般称从器件(从机)。

I2C总线系统是一个允许多主的系统。

系统中的某一器件有四种可能的工作方式:

主发送方式、主接收方式、从发送方式和从接收方式。

在I2C总线上的所有器件是按照如下的数据传输协议协调工作的:

据此定义以下总线条件:

总线不忙,SCL=SDA=1,只有当总线不忙时,数据传输才能开始;,当串行时钟线为高电平时,串行数据线的变化将认为是传送的开始或停止;当串行时钟线为低电平时,才允许串行数据线发生变化;,数据传送期间,无论何时串行时钟线为高电平,串行数据线必须保持稳定。

开始数据传送,停止数据传送,起始信号(START),停止信号(STOP),数据有效(Datavalidity),应答(Acknowledge),2.7位的地址格式,主发送到从接收,主机发送,从机接收,传输的方向不会改变,从发送到主接收,主机在发送完第一个字节后,立即读从机。

第一次响应仍由从机产生,在第一次响应后主机变成接受器,从机变成发送器。

停止条件由主机发出。

复合格式,传输改变方向的时侯,起始条件和从机地址都会被重复,且R/W位取反。

如果主机作为接收,发送一个重复起始条件,它之前应该发送了一个不响应信号(A)。

仲裁和时钟发生,时钟同步,仲裁,3.I2C总线主要功能特点:

在主控器件和从控器件之间双向传送数据;无中央主控器件的多主总线;多主传送时,不发生错误;可以使用不同的位速率;串行时钟作为交接信号;可用于测试和诊断目的。

在单片机应用系统中,单主结构占绝大多数。

在单主系统中,I2C总线的数据传送状态要简单得多,没有总线竞争与同步问题,只有作为主器件的单片机对I2C总线器件的读/写操作。

这就简化了模拟软件的设计工作。

有I2C总线的单片机中,可以直接用I2C总线来进行系统的串行扩展;对于80C51系列单片机,大多数没有I2C总线接口功能,而是采用软件模拟双向数据传送协议的方法,来实现系统的串行扩展。

二、利用I2C总线扩展单片机的外部功能,1.利用模拟I2C扩展串行E2PROM,

(1)串行E2PROM24LC32的特点及引脚,24LC32是32Kb(4K8位)串行存取的电擦除可编程的只读存储器E2PROM。

特点:

芯片对快速写操作具有8个8B字节页面、或者64字节的高速缓存器,并具有二线串行接口。

在I2C上作从器件使用;,可在电源电压低到2.5V的条件下工作,芯片还有功率等待模式,以降低功耗;等待电流和额定电流分别为1A和3mA(写);,地址线允许8片24LC32连接到相同的总线上,得到256Kb位地址空间。

引脚:

A0、A1、A2:

芯片地址输入端,WP:

写保护端,

(2)器件的寻址和操作,控制字节和器件寻址,作为从器件,接收到的下两个字节定义了第一个数据字节的地址。

由于仅用A0A11,所以最高4位地址码必须为0。

但对于ATMEL公司的产品来说,无此规定。

地址的最高有效字节的最高有效位最先发送。

写操作,字节写,主器件发出开始条件以后,再发送R/W=0的控制字节到总线上。

这指示被寻址的从接收器的两个地址字节及一个数据字节将跟在第9个时钟周期产生的确认(应答)位之后。

0,主器件发送的下一个字节是字地址的高地址字节,应答后,接着是低地址字节,再次应答后,它们将被写入24LC32的地址指针。

随后主器件发送写入到被寻址的存储器里的数据字节。

24LC32应答后,主器件发出停止条件。

R/W=0时,将启动写操作。

页面写,写控制字节、字地址和第一个数据字节以与字节写相同的方式发送到24LC32。

但是替代产生停止条件,主器件可发送多达8页的8个数据字节(总共64个字节)。

24LC32先将这些数据字节暂存在片内的页面高速缓存器中。

一旦接收到主器件的停止条件后,则内部的写周期开始,这些数据字节将从页面高速缓存器中写入E2PROM阵列。

接收到每一个字节后,24LC32的低6位顺序地址指针在内部加1,高6位顺序地址指针保持不变。

如果主器件在产生停止条件以前要发送多于8个字节的数据(越过页边界写),地址计数器的低3位将会翻转,并且指针将加1,指向页面高速缓存器的下一页。

这样重复8次后或者直至高速缓存器存满时,主器件产生停止条件。

如果停止条件没有接收到,高速缓存器指针将翻转到第一页(字节0),这之后再接收到的数据将覆盖以前所获得的数据。

在发送期间的任何时刻都可传送停止条件。

应答查询,由于在写周期期间,器件将不会应答,所以,这一点可以用来决定写周期在什么时候完成。

一旦针对写命令的停止条件由主器件发出,从器件开始进行内部定时写周期,主器件的ACK查询被立即启动。

如果写周期器件仍然很忙,则ACK信号将不会产生;如果周期已经完成,则器件将产生ACK信号。

主器件将可以进行下一次的读或写操作。

读操作,读当前地址内容,当控制字的R/W位被置为“1”时,将启动读操作。

存在三种基本的读操作类型:

读当前地址内容、读随意地址内容及读顺序地址内容。

1,0,1,0,1,读当前地址内容24LC32内部包含一个自动加1的地址计数器,它保存被存取过的最后一个字节的地址。

如果以前存取的地址为n,下一次读操作则从n+1地址中读数据。

在接收到的从地址中的R/W为1的情况下,24LC32发送一个应答位,并且送出8位数据。

主器件发出非应答信号(NOACK),使从器件释放数据线,以便主器件发出一个停止条件,从而终止数据传送。

读随意地址内容,此方式允许主器件以任意方式读存储器任意地址的内容。

这种读操作须先置字地址,即主器件将字地址作为写操作的一部分送给24LC32。

在发送了字地址以后,主器件在应答位之后产生一个开始条件。

这样可以在内部地址计数器置数后终止写操作。

主器件再次发R/W为1的控制字。

24LC32将发出应答位,并发送出8位数据。

主器件将发送非应答信号,并产生一个停止条件,从而终止发送。

读顺序地址内容,读顺序地址内容方式与读随意地址内容方式的启动方法一样,但是在24LC32发送第一个数据字节后,主器件不发出终止发送的信号(发送应答信号)。

24LC32继续发送下一个地址的8位数据,其内部的地址指针在操作后自动加1。

地址指针允许在一次操作期间,连续顺序地读出整个存储器。

当主器件接收到最后一个字节后,主器件将产生非应答信号及一个停止条件,终止传送。

(3)80C51与串行E2PROM24LC32的接口和编程,80C51与串行24LC32的接口,80C51与串行E2PROM24LC32的接口原理图,模拟I2C总线的编程,利用模拟仿真的方法,编写通用子程序。

这些通用子程序包括:

启动、停止、发送应答位及非应答位、应答位检查、单字节数据接收与发送。

以下子程序中,设定单片机所使用的晶体振荡器为6MHz,即机器周期为2S。

若晶体振荡器不是6MHz,则可根据情况增减程序中的NOP指令即可。

汇编语言编写的子程序:

SDABITP1.7SCLBITP1.6,A.启动I2C总线子程序:

START:

SETBSDASETBSCLNOPNOPCLRSDANOPNOPCLRSCLNOPRET,B.停止I2C总线子程序:

STOP:

CLRSDASETBSCLNOPNOPSETBSDANOPNOPCLRSCLNOPRET,C.发送应答位子程序:

S_ACK:

CLRSDASETBSCLNOPNOPCLRSCLSETBSDARET,D.应答位检查子程序:

子程序出口时,SDA线的状态存入标志位F0中,若有ACK,F0=0,否则F0=1。

C_ACK:

SETBSDA;SDA为输入状态SETBSCL;第9个时钟脉冲开始NOPMOVC,SDA;读SDA线MOVF0,C;存入F0中CLRSCL;第9个时钟脉冲结束NOPRET,E.单字节数据发送子程序:

将累加器A中的待发送数据送上SDA线。

WRBYT:

MOVR7,#8;发送8位WRBYT1:

RLCA;将发送位移入C中JCWRBYT2;此位为1,转WRBYT2CLRSDA;此位为0,发送0SETBSCL;时钟脉冲开始NOPNOPCLRSCL;时钟脉冲结束DJNZR7,WRBYT1;未发送完,转WRBYT1RET,WRBYT2:

SETBSDA;此位为1,发送1SETBSCL;时钟脉冲开始NOPNOPCLRSCL;时钟脉冲结束CLRSDADJNZR7,WRBYT1;未发送完,转WRBYT1RET,F.单字节数据接收子程序:

从SDA线上读一个字节的数据,存入A中。

RDBYT:

MOVR7,#8;接收8位RDBYT1:

SETBSDA;SDA为输入状态SETBSCL;时钟脉冲开始MOVC,SDA;读SDA线MOVA,R6;取回暂存结果RLCA;移入新接收位MOVR6,A;将结果暂存R6CLRSCL;时钟脉冲结束DJNZR7,RDBYT1;未读完8位,转RDBYT1RET;读完8位,返回,2.利用I2C扩展I/O接口,PCF8574T是一种单片CMOS电路,具有I2C总线接口和8位准双向口。

在I2C总线系统中仅作从器件。

具有低的电流损耗,最大静态电流为10A;,能输出大的电流,并有锁存功能,可直接驱动LED发光管;,有中断逻辑线;,3根硬件地址引脚使I2C总线系统可挂接8只PCF8574。

器件的串行时钟的最高频率为400kHz,SDA:

串行数据线,双向。

SCL:

串行时钟线,输入。

P7P0:

8位准双向输入/输出口。

准双向口的每一位可作输出或输出。

上电复位时,口的每一位均为高电平。

某位在作输入前,应置为高电平。

A2A0:

地址输入线。

INT:

中断输出线,低电平有效。

PCF8574的每个I/O口都可单独用作输入或输出。

输入通过读模式将数据传送到MCU,输出通过写模式将数据发送到端口。

寻址,PCF8574和PCF8574A的控制字节的配置,写模式(输出),读模式(输入),中断,在输入模式中(读),口输入信号的上升或下降沿产生中断。

PCF8574应用和编程,PCF8574作扩展8位输入口,PCF8574读方式的连接,将开关的状态读入片内RAM30H单元中。

程序如下:

RD8:

ACALLSTART;开始条件MOVA,#41H;PCF8574为读方式ACALLWRBYTACALLC_ACK;检查ACK信号JBF0,$ACALLRDBYT;读数据MOV30H,AACALLC_ACKJBF0,$ACALLSTOPAJMP$,PCF8574作扩8位输出口,PCF8574写方式的连接,程序如下:

WR8:

ACALLSTART;开始条件MOVA,#40H;PCF8574为写方式ACALLWRBYTACALLC_ACK;检查ACK信号JBF0,$MOVA,#0FFH;改变不同的立即数,;PCF8574的指示灯;相应的亮熄ACALLWRBYTACALLC_ACK;检查ACK信号JBF0,$ACALLSTOP;停止条件AJMP$,PCF8574作扩展4位输入口和4位输出口,PCF8574高4位输入、低4位输出的连接,程序如下:

STA:

ACALLSTART;开始条件MOVA,#41H;PCF8574为读方式ACALLWRBYTACALLC_ACK;检查ACK信号JBF0,$ACALLRDBYT;读数据SWAPACPLAMOV30H,AACALLSTOPACALLSTART;开始条件MOVA,#40H;PCF8574为写方式,ACALLWRBYTACALLC_ACK;检查ACK信号JBF0,$MOVA,30HACALLWRBYTACALLDELAY;延时子程序ACALLSTOP;停止条件LJMPSTA,6.4外部中断源的扩展,扩展4个外部中断源的电路,中断源查询程序的流程图,INT0的中断服务程序如下:

PINT0:

PUSHPSW;保护现场PUSHACCJBP1.0,LOOP1;转向中断服务程序1JBP1.1,LOOP2;转向中断服务程序2JBP1.2,LOOP3;转向中断服务程序3JBP1.2,LOOP4;转向中断服务程序4INTEND:

POPACC;恢复现场POPPSWRETI,;LOOP1:

中断服务程序1AJMPINTENDLOOP2:

中断服务程序2AJMPINTENDLOOP3:

中断服务程序3AJMPINTENDLOOP4:

中断服务程序4AJMPINTEND从程序中可以看出,这里定义的扩展外中断源1的优先级最高,扩展外中断源4的优先级最低,所以查询的顺序从P1.0开始。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2