单片机常用总线讲解讲解

上传人:最**** 文档编号:115174409 上传时间:2019-11-12 格式:DOCX 页数:51 大小:1.07MB
返回 下载 相关 举报
单片机常用总线讲解讲解_第1页
第1页 / 共51页
单片机常用总线讲解讲解_第2页
第2页 / 共51页
单片机常用总线讲解讲解_第3页
第3页 / 共51页
单片机常用总线讲解讲解_第4页
第4页 / 共51页
单片机常用总线讲解讲解_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《单片机常用总线讲解讲解》由会员分享,可在线阅读,更多相关《单片机常用总线讲解讲解(51页珍藏版)》请在金锄头文库上搜索。

1、8051单片机C语言基础教程第8章 单片机常用总线讲解8.1 I2C总线接口80C51单片机本身不具有I2C总线接口,但是通过软件进行模拟,可以挂接具有I2C接口的芯片。8.1.1 I2C总线的介绍串行扩展总线在单片机系统中的应用是目前单片机 技术发展的一种趋势。在目前比较流行的几种串行扩展总线中,I2C总线以其严格的规范和众多带I2C接口的外围器件而获得广泛应用。I2C总线是PHILIPS公司推出的芯片间串行传输总线,它由两根线组成,一根是串行时钟线(SCL),一根是串行数据线(SDA)。主控器利用串行时钟线发出时钟信号,利用串行数据线发送或接收数据。I2C总线由主控器电路引出,凡具有I2C

2、接口的电路(受控器)都可以挂接在I2C总线上,主控器通过I2C总线对受控器进行控制。随着I2C总线研究的深入,I2C总线已经广泛应用于视/音频领域、IC卡行业和一些家电产品中,在智能仪器、仪表和工业测控领域也越来越多地得到应用。8.1.2 I2C总线的特点I2C总线的广泛应用是同它卓越的性能和简便的操作方法分不开的。I2C总线的特点主要表现在以下几个方面:硬件结构上具有相同的硬件接口界面。I2C总线系统中,任何一个I2C总线接口的外围器件,不论其功能差别有多大,都是通过串行数据线(SDA)和串行时钟线(SCL)连接到I2C总线上。这一特点给用户在设计用用系统中带来了极大的便利性。用户不必理解每

3、个I2C总线接口器件的功能如何,只需将器件的SDA和SCL引脚连到I2C总线上,然后对该器件模块进行独立的电路设计,从而简化了系统设计的复杂性,提高了系统抗干扰的能力。线接口器件地址具有根大的独立性。每个I2C接口芯片具有唯一的器件地址,由于不能发出串行时钟信号而只能作为从器件使用。各器件之间互不干扰,相互之间不能进行通信,各个器件可以单独供电。单片机与I2C器件之间的通信是通过独一无二的器件地址来实现的。软件操作的一致性。由于任何器件通过I2C总线与单片机进行数据传送的方式是基本一样的,这就决定了I2C总线软件编写的一致性。PHILIPS公司在推出I2C总线的同时,也为I2C总线制订了严格的

4、规范,如:接口的电气特性、信号时片、信号传输的定义等。规范的严密性,结构的独立性和硬、软件接口界面的一致性.极大地方便了I2C总线设计的模块化和规范化,伴随面来的是用户在使用I2C总线时的“傻瓜”化。8.1.3 I2C总线数据的传输规则在I2C总线上的数据线SDA和时钟线SCL都是双向传输线,它们的接口各自通过一个上拉电阻接到电源正端。当总线空闲时,SDA和SCL必须保持高电平。为了使总线上所有电路的输出能完成一个线“与”的功能,各接口电路的输出端必须是开路漏极或开路集电极。进行数据传送时.在时钟信号高电平期间.数据线上的数据必须保持稳定;只有时钟线上的信号为低电平期间.数据线上的高电平或低电

5、平才允许变化,如图8.1.1所示。 图8-1 数据的有效性在I2C总线的工作过程中,当时钟线保持高电平期间,数据线由高电平向低电平变化定义为起始信号(S)。而数据线由低电平向高电平的变化定义为一个终止倌号(P),如图8.1.2所示,起始信号和终止信号均由主控器产生。 起始条件 停止条件图8-2 起始和停止条件I2C总线传送的每一字节均为8位,但每启动一次总线,传输的字节数没有限制,由主控器发送时钟脉冲及起始信号、寻址字节和停止信号,受控器件必须在收到每个数据字节后做出响应,在传送一个字节后的第9个时钟脉冲位,受控器输出低电平作为应答信号。此时.要求发送器在第9个时钟脉冲位上释放SDA线,以便受

6、控器演出应答信号,将SDA线拉或低电平,表示对接收数据的认可,应答信号用或表示.非应答信号用或表示,当确认后,主控器可通过产生一个停止信号来终止总线数据传输。I2C总线数据传输示意图如图8.1.3所示。起始 地址 读/写 应答 数据 应答 数据 应答 停止信号 信号 图8-3 I2C总线数据传输示意图需要说明的是,当主控器接收数据时,在最后一个数据字节,必须发送一个非应答位,使受控器释放SDA线,以便主控器产生一个停止信号来终止总线数据传输。3. I2C总线数据的读写格式总线上传送数据的格式是指为被传送的各项有用数据安排的先后顺序,这种格式是人们根据串行通信的特点,传送数据的有效性、准确性和可

7、靠性而制定的。另外,总线上数据的传送还是双向的,也就是说主控器在指令操纵下,既能向受控器发送数据(写入),也能接收受控器中某寄存器中存放的数据(读取).所以传送数据的格式有“写格式”与“读格式”之分。(1)写格式I2C总线数据的写格式如图8-4所示图8-4 I2C总线数据的写格式 写格式是指主控器向受控器发送数据,工作过程是:先由主控器发出启动信号(S),随后传送一个带读/写(R/)标记的从地址(SLAVE ADD)字节,从地址只有7bit长,第8位是读/写位(R/),用来确定数据传送的方向,对于写格式,R/应为“0”,表示主控器将发送数据给受控器,接着传送第二个字节,即从地址的子地址(SUB

8、 ADD),若受控器有多字节的控制项目,该子地址是指首(第一个)地址,因为子地址在受控器中都是按顺序编制的,这就便于某受控器的数据一次传送完毕;接着才是若干字节的控制数据的传送,每传送一个字节的地址或数据后的第9位是受控器的应答信号,数据传送的顺序要靠主控器中程序的支持才能实现,数据发送完毕后,由主控器发出停止信号(P)。(2)读格式 读格式如图8.1.5所示。与写格式不同,读格式首先要找到读取数据的受控器的地址,包括从地址和子地址,所以格式中在启动读之前,用写格式发送受控器,再启动读格式,不过前3个应答信号因为是指向受控器,所以应由受控器发出;然后,所有数据字节的应答信号因为是指向主控制器,

9、因此由主控器发出。不过最后的A=1。图8-5 受控器向主控器发送数据(读格式)重点提示 在设置众多受控器中,为了将控制数据可靠地传逆给指定的受控IC,必须使每一块IC编制一个地址码,通常称为从地址,显然从地址不能在不同的IC间重复使用。主控器发送寻址字节时,总线上所有受控器都将寻址字节中的7位地址与自己的从地址相比较,如果两者相同,则该器件就是被寻址的受控器(从器件),受控器内部的n个数据地址(子地址)的首地址由子地址数据字节指出, I2C总线接口内部具有子地址指针自动加1功能,所以主控器不必一一发送n个数据字节的子地址。4.单片机模拟I2C总线通信 单片机在模拟I2C总线通信时,需写出如下几

10、个关键部分的程序:总线初始化、启动信号、应答信号、停止信号、写个字节、读个字节。下面分别给出具体函数的写法供大家参考,在阅读代码时请参考前面相关部分的文字描述及时序图。(1) 总线初始化void int() /将总线都拉高以释放总线 SCL=1; delay(); SDA=1; delay();(2) 启动信号void start() /SCL在高电平期间,SDA一个下降沿启动信号。 SDA=1; delay(); SCL=1; delay(); SDA=0; delay();(3) 应答信号void respons() uchar i=0; SCL=1; delay(); while(SDA

11、=1)&(i255) i+; SCL=0; delay();SCL在高电平期间,SDA被从设备拉为低电平表示应答。上面代码中有一个(SDA=1)和(i255)相与的关系,表示若在一段时间内没有收到从器件的应答则主器件默认从器件已经收到数据而不在等待应答信号,这一点是作者后加的一步,大家可不必深究,因为如果不加这个延时退出,一旦从器件没有发送应答信号,程序将永远停止在这里,而真正的程序中是不允许这样的情况发生的。(4) 停止信号void stop() /SCL在高电平期间,SDA一个上升沿停止信号。 SDA=0; delay(); SCL=1; delay(); SDA=1; delay();(

12、5) 写一个字节void writebyte(uchar date) uchar i,temp; temp=date; for(i=0;i8;i+) Temp=temp1; SCL=0; delay(); SDA=CY; delay(); SCL=1; delay();SCL=0;delay();SDA=1;delay();串行发送一个字节时,需要把这个字节中的8位一位一位地发出去,“Temp=temp1;”表示将temp左移位,最高位将移入PSW寄存器的CY位中,然后将CY赋给SDA进而在SCL的控制下发送出去。(6) 读一个字节uchar readbyte() uchar i,k; SCL

13、=0; delay(); SDA=1; for(i=0;i8;i+) SCL=1; delay(); k=(k1)|SDA; SCL=0; delay();delay();return k;同样的,串行接收个字节时需将8位一位一位地接收,然后再组合成一个字节,上面代码中我们定义了一个临时变量k,将k左移一位后与SDA进行“或运算,依次把8个独立的位放入一个字节中来完成接收。8.1.4 I2C总线实例应用(AT24C02)具有I2C总线接口的E2PROM有多个厂家的多种类型产品。在此仅介绍ATMEL公司生产的AT24C系列E2PROM。主要型号有AT24C01/02/04/08/16等,其对应的

14、存储容量分别为128x8/256x8/521x8/1024x8/2048x8。采用这类芯片可解决掉电数据保存问题,可对所存数据保存100年.并可多次擦写,擦写次数可达10万次以上。在一些应用系统设计中,有时需要对工作数据进行掉电保护,如电子式电能表等智能化产品。若采用普通存储器,在掉电时需要备引电池供电,并需要在硬件上增加掉电检测电路。但存在电池不可靠及扩展存储芯片占用单片机过多口线的缺点。采用具有I2C总线接口的串行E2PROM器件可很好地解决掉电数据保存问题,且硬件电路简单。下面以AT24C02芯片为例,介绍具有I2C总线接口的E2PROM的具体应用。AT24C02芯片的常用封装形式有直插(DIP8)式和贴片(SO-8)式两种,实物图分别如图8.1.6和图8.1.7所示

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号