单片机原理及应用教程(C语言版)-第8章 单片机系统扩展接口技术_第1页
单片机原理及应用教程(C语言版)-第8章 单片机系统扩展接口技术_第2页
单片机原理及应用教程(C语言版)-第8章 单片机系统扩展接口技术_第3页
单片机原理及应用教程(C语言版)-第8章 单片机系统扩展接口技术_第4页
单片机原理及应用教程(C语言版)-第8章 单片机系统扩展接口技术_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理及应用教程 (C语言版)第8章 单片机系统(xtng)扩展接口技术主 编:周国运(u yn)中国水利水电出版社共九十页第8章 单片机系统(xtng)扩展接口技术目 录 8.1 接口的基本概念 8.2 用并行方式扩展数据存储器 8.3 用简单(jindn)芯片扩展并行I/O口 8.4 用可编程芯片扩展并行I/O口 8.5 用串行方式扩展数据存储器共九十页 I/O接口是单片机与外部设备、外部存储器、与其它单片机/计算机连接的桥梁,是单片机应用系统中非常重要的部分。 本章主要介绍接口的基本概念,并行I/O口的扩展(包括用简单门电路扩展和使用专用(zhunyng)可编程芯片扩展),数据存储器

2、的扩展(包括通过并行口扩展SRAM和通过IIC方式扩展EEPROM)。 本章是单片机应用系统接口的基础。共九十页8.1 接口(ji ku)的基本概念主要内容 8.1.1 单片机应用系统构成(guchng) 8.1.2 接口的概念 8.1.3 接口的基本功能 8.1.4 接口的结构 8.1.5 端口及其编址共九十页8.1.1 单片机应用(yngyng)系统构成 一般的单片机应用系统如图8-1所示,中间是单片机(包括外部(wib)的存储器),最左边是被检测的设备,最右边是被控制的设备。共九十页8.1.2 接口(ji ku)的概念 使CPU和输入/输出设备之间,能够(nnggu)完成数据交换的中间电

3、路就叫做I/O接口,简称接口,也叫做接口适配器。共九十页8.1.3 接口(ji ku)的基本功能单片机接口(ji ku)的主要功能如下:1)信号与信息格式转换功能。2)数据缓冲功能。3)接受命令功能。4)提供状态信息功能。5)中断功能。共九十页8.1.4 接口(ji ku)的结构 接口的结构和接口的功能是对应的,一般包括读写控制逻辑,数据缓冲器,数据寄存器,控制寄存器和状态寄存器等部分(b fen)组成。共九十页8.1.5 端口及其编址 1端口 每个芯片内部可被访问的寄存器,我们称之为端口。每一个端口都要分配一个地址,以实现对芯片内部不同寄存器的选择。这个地址就叫做端口地址,通常(tngchn

4、g)也叫接口地址。 端口地址是由两部分组成的,端口地址的高位是片选,即实现对芯片的选择;端口地址的低位完成对芯片内部寄存器的选择。共九十页 2片选芯片的选择有两种方法: 1)线选法所谓线选法,就是直接以系统的地址线作为芯片的片选信号,为此(wi c)只需把用到的地址线与芯片的片选端直接相连即可。 2)译码法所谓译码法,就是使用地址译码器对系统的片外地址进行译码,以其译码输出作为存储器芯片的片选信号。8.1.5 端口及编址共九十页 3芯片(xn pin)内部寄存器的选择 地址总线的低位连接到芯片,由芯片内部的地址译码电路和读写控制逻辑共同完成对芯片内部寄存器的选择。8.1.5 端口及编址共九十页

5、8.2 用并行方式扩展(kuzhn)数据存储器主要(zhyo)内容8.2.1 MCS-51单片机三总线结构 8.2.2 常用的数据存储器8.2.3 单片机访问片外RAM的操作时序8.2.4 扩展数据存储器共九十页8.2.1 MCS-51单片机三总线结构 通常(tngchng),微机的CPU外部都有单独的并行地址总线、数据总线、控制总线。MCS-51单片机由于引脚的限制,数据总线和地址总线是复用的。 地址需要锁存:为了能把复用的数据总线和地址总线分离出来,以便同外部的芯片正确的连接,需要在单片机的外部增加地址锁存器,从而构成与一般CPU相类似的三总线结构,如图8-1所示。共九十页P2ALE89C

6、52P0PSENWRRD地址(dzh)锁存器地址总线数据总线控制(kngzh)总线A8A15A0A7D0D78.2.1 MCS-51单片机三总线结构图8-4 89C52扩展的三总线共九十页图8-5 地址总线扩展(kuzhn)电路8.2.1 MCS-51单片机三总线结构 地址锁存器74HC573与单片机P0口连接(linji),扩展地址总线,如图8-2所示。ALEP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0LE OED7 Q7D6 Q6D5 Q5D4 Q4D3 Q3D2 Q2D1 Q1D0 Q0A7A6A5A4A3A2A1A089C5274HC573共九十页 74HC573简

7、介74HC573是有输出三态门的电平允许8位锁存器。引脚信号如下(rxi): OE:输出允许端,为0时芯片有效。LE:锁存控制端,高电平时,锁存器的数据输出端Q的状态,与数据输入端D相同,即锁存器是透明的;当LE端从高电平返回到低电平时(下降沿后),输入端的数据就被锁存在锁存器中,数据输入端D的变化不再影响Q端。8.2.1 MCS-51单片机三总线结构共九十页8.2.2 常用(chn yn)的数据存储器 数据存储器即随机存取存储器(Random Access Memory,RAM),用于存放可随时修改的数据信息。RAM为易失性存储器,断电后所存信息立即消失。 按其工作方式,RAM又分为静态随机

8、存取存储器(SRAM)和动态随机存取存储器(DRAM)两种。静态RAM只要电源加上,所存信息就能可靠保存。而动态RAM则需要刷新(shu xn)。单片机使用的主要是静态RAM。共九十页 MCS-51系列单片机的数据存储器与程序存储器的地址空间是互相独立的,其片外数据存储器的空间可达64KB,而片内数据存储器的空间只有128B或256B。如果片内的数据存储器不够用时,则需进行数据存储器的扩展。 在单片机系统,扩展数据存储器多用用静态(jngti)SRAM芯片。8.2.2 常用(chn yn)的数据存储器共九十页 1常用的静态SRAM芯片 常见的静态SRAM芯片有6264(8K8位)、62256(

9、32K8位)、628128(128K8位)等。其中静态SRAM芯片6264如图8-6所示。6264引脚含义如下: A0A12:地址信号引脚。 D0D7:数据信号引脚。 CE、CS:片选信号引脚,必须(bx)同时有效。 WE:写允许信号引脚。 OE:读允许信号引脚。 NC:空脚。8.2.2 常用(chn yn)的数据存储器共九十页 图8-6 静态(jngti)SRAM芯片62648.2.2 常用(chn yn)的数据存储器共九十页 2扩展存储器所需芯片数目(shm)的确定 1)所选存储器芯片字长与单片机字长一致所需芯片数目按下式确定: 芯片数目=系统扩展容量/存储器芯片容量2)所选芯片字长与单片

10、机字长不一致则需字扩展,所需芯片数目按下式确定: 芯片数目=(系统扩展容量/存储器芯片容量)(系统字长/存储器芯片字长)8.2.2 常用(chn yn)的数据存储器共九十页8.2.3 单片机访问(fngwn)片外RAM的操作时序 1片外RAM读操作时序 在S1状态P2节拍,ALE信号由低变高,读周期开始。在S2状态,单片机把地址的低8位从P0口输出,地址的高8位从P2口输出。 在S2状态P2节拍,ALE信号由高变低,把低8位地址锁存到外部的锁存器里,而高8位地址一直由P2口输出。在S3状态, P0口浮空,外部锁存器输出低8位地址。 在S4状态, 有效,片外RAM经过延迟后,把数据放在总线上,通

11、过P0口输入单片机。当 返回(fnhu)高电平后,P0口浮空,读周期结束。共九十页8.2.3 单片机访问片外RAM的操作(cozu)时序共九十页 2片外RAM写操作时序 写操作时序与读操作时序,基本过程类似。不同之处主要在于在S3状态P2节拍,由单片机通过P0口输出(shch)数据。在S4状态,WE 有效后,由片外RAM从总线上读取数据。8.2.3 单片机访问片外RAM的操作(cozu)时序共九十页 8.2.3 单片机访问片外RAM的操作(cozu)时序共九十页8.2.4 扩展(kuzhn)数据存储器 存储器扩展往往需要多个存储器芯片,这些存储器芯片直接并联在扩展的系统总线上。其中低位的地址线

12、直接和每一个芯片的地址引脚相连。高位地址线是作为片选信号线来使用(shyng)的。如果空闲的高位地址线较多,可以使用线选法连接;否则需要使用译码器进行译码法连接。共九十页 下面以静态SRAM芯片6264扩展16KB片外数据存储器为例,介绍(jisho)一下89C52单片机系统的并行存储器扩展,连线如下图所示。8.2.4 扩展(kuzhn)数据存储器共九十页 根据公式8-1可得: 芯片数目=16KB/8KB=2片。 6264需要13位地址,由P0提供低8位地址,P2.0P2.4提供高5位地址。P2口空出的口线较多,因此可选用线选法进行片选,两个芯片分别由P2.6、P2.7作为片选。 其地址范围分

13、别为:10 x0,0000,0000,0000B10 x1,1111,1111,1111B、01x0,0000,0000,0000B1x1,1111,1111,1111B,“x”表示(biosh)可以取0或1,取1,用十六进制数表示为:A000HBFFFH和6000H7FFFH。8.2.4 扩展(kuzhn)数据存储器共九十页8.3 简单芯片(xn pin)并行I/O口扩展主要内容8.3.1 扩展I/O口常用(chn yn)的门电路芯片 8.3.2 简单扩展I/O口举例共九十页8.3.1 扩展(kuzhn)I/O口常用的门电路芯片 如果需要单向并行(bngxng)数据传输可以选用单向总线驱动器

14、74HC244,该还带有三态控制,能实现总线缓冲和隔离;如果需要双向并行数据传输可以选用双向总线驱动器74HC245。74HC245也是三态的,有一个方向控制端DIR。 DIR=1时输出(AnBn),DIR=0时输入(AnBn),如图8-9所示。共九十页图8-10 单向缓冲(hunchng)总线驱动器74HC244和双向缓冲总线驱动器74HC2458.3.1 扩展I/O口常用(chn yn)的门电路芯片共九十页8.3.2 简单(jindn)扩展I/O口举例 例8-1 利用74系列芯片实现单片机P0口读8位开关状态(zhungti)并控制对应的8位发光二极管发光。 如图8-10所示,可通过74H

15、C573和74HC244芯片实现单片机一个并口同时输入、输出。共九十页图8-10 使用(shyng)74HC244和74HC573扩展并口8.3.2 简单(jindn)扩展I/O口举例共九十页程序如下:unsigned char xdata pt1 _at_ 0 x7fff;/定义设备变量,端口地址是0 x7fff,P2.7低电平void main()unsigned char data tmp1, tmp2=0 xff;while(1)/循环(xnhun)tmp1=pt1;/输入数据if (tmp1!=tmp2) /输入则输出数据tmp2=tmp1;pt1=tmp1;设备变量:“以三总线方式

16、连接的设备对应的变量”8.3.2 简单扩展(kuzhn)I/O口举例共九十页8.4 用可编程芯片扩展(kuzhn)并行I/O口主要内容8.4.1 8255A的结构8.4.2 8255A的引脚定义8.4.3 8255A的控制字8.4.4 8255A的工作方式(fngsh)8.4.5 8255A的应用举例共九十页8.4.1 8255A的结构(jigu) 8255A是一种通用的可编程并行I/O接口芯片,它拥有三个并行I/O口,可通过编程设置多种工作方式。 8255A主要由6个部分组成:总线缓冲(hunchng)、读写控制逻辑、A组与B组I/O口控制逻辑,以及A口、B口、C口等部分组成,如图8-11所

17、示。共九十页图8-11 8266A内部结构8.4.1 8255A的结构(jigu)共九十页1.数据总线缓冲器 这是一个双向三态的8位数据缓冲器,它是8255A与计算机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息(xnx)都是通过这个缓冲器传送的。2.读/写控制逻辑 用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。8.4.1 8255A的结构(jigu)共九十页3.数据(shj)端口 8255A的三个数据端口A、B、C分成A、B两组。PA和PC4PC7属于A组;PC0PC3和PB属于B组。4.A组和B组控

18、制部件 A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。8.4.1 8255A的结构(jigu)共九十页8.4.2 8255A的引脚定义(dngy) 1面向单片机的引脚信号 D0-D7:8位、双向、三态RESET:复位(f wi),高有效CS:片选,低电平有效。RD:读信号,低电平有效。WR:写信号,低电平有效。A1,A0:端口选择信号共九十页PA0PA7:A组数据信号,用来连接外设。PB0PB7:B组数据信号,用来连接外设。PC0PC7:C组数据信号,用来连接外设或作为控制(kngzh)信号。8.4.2 8255A的引脚定义(dngy)2面向外设的引脚信号共九十页8.4.

19、3 8255A的控制(kngzh)字8255A的控制字有两个:工作(gngzu)方式控制字、端口C置1/清0控制字两个控制字是通过同一个端口写入。共九十页1工作方式(fngsh)控制字8255A有三种工作方式,可以编程设置。 方式0:简单方式(直接不握手)输入或输出,端口A,B,C三个均可。 方式1:选通、中断方式输入或输出,端口A ,B两个均可。 方式2:选通、中断方式双向输入/输出,只有端口A才有。8.4.3 8255A的控制(kngzh)字共九十页8255A的工作方式控制字各位含义见表8-4。D7:特征位。1是指向工作方式控制字,0是指向C口置1清0控制字。D6D5:A口工作方式设置。0

20、0、01、1xD4:A口传输方向设置。0是输出(shch),1是输入。D3:C口高4位传输方向设置D2:B口工作方式设置。00、01D1:B口传输方向D0:C口低4位方向8.4.3 8255A的控制(kngzh)字共九十页2端口C置1/清0控制(kngzh)字 8255A的端口C具有位控制功能,即端口C的8位中的任一位都可通过单片机向8255A的控制寄存器写入一个端口C置1/清0控制字来置1或清0,而端口C中其他位的状态不变。8255A的端口C置1/清0控制字各位含义见表8-5。8.4.3 8255A的控制(kngzh)字共九十页8255A的端口C置1/清0控制字不会影响(yngxing)PA

21、、PB口的工作方式。8.4.3 8255A的控制(kngzh)字D7:特征位。1是指向工作方式控制字,0是指向C口置1清0控制字。D6D5D4 :未用。D3D2D1 :C口位选择。000、001、111D0:对C口指定位设置的值。共九十页8.4.4 8255A工作(gngzu)方式方式0是常用(chn yn)的工作方式,只有如下4种常用的情况:1)3个8位口都设置为输出口,控制字为:1000 0000B=80H,C语言值为0 x80。2)3个8位口都设置为输入口,控制字为:1001 1011B=9BH,C语言值为0 x9b。3)PA、PB为输出,PC为输入,控制字为:1000 1001B=89

22、H,C语言值为0 x89。4)PA、PB为输入,PC为输出,控制字为:1001 0010B=92H,C语言值为0 x92。共九十页8.4.5 8255A应用(yngyng)举例 例8-2 使用8255A的PA、PC端口接16发光二极管显示(xinsh)流水灯,如图8-14所示。单片机的P2.7作为8255A的片选信号,P2.5、P2.6作为8255A的端口选择信号。 低13位地址没有使用可取任意值,取为1,根据表8-2,可确定P2.7、P2.6、P2.5的取值,从而确定PA、PB、PC和控制端口的地址分别为0 x1fff、0 x3fff、0 x5fff、0 x7fff。共九十页8.4.5 82

23、55A的应用(yngyng)举例共九十页8.4.5 8255A的应用(yngyng)举例共九十页8.4.5 8255A的应用(yngyng)举例C语言程序(chngx)如下:#include/包含内部函数头文件unsigned char xdata PA _at_ 0 x1fff; /A口unsigned char xdata PC _at_ 0 x5fff;/ C口unsigned char xdata CW _at_ 0 x7fff; /控制口void delay10 xms(unsigned char data x)/延时函数(振荡频率为12MHz)unsigned int data i

24、;while(x-) for(i=0;i830;i+);共九十页8.4.5 8255A的应用(yngyng)举例void main()/主函数unsigned int data dd=0 xfffc;/低电平亮CW =0 x80;/控制字,3个口均输出(shch)while(1)/实现流水灯PA=dd&0 xff;/从PA送出低8位PC=dd/0 x100;/从PC送出高8位dd=_irol_(dd,1);/循环左移1位delay10 xms(100);/延时1s共九十页8.5 用串行方式(fngsh)扩展数据存储器主要内容 8.5.1 I2C总线(zn xin) 8.5.2 I2C总线扩展存

25、储器共九十页8.5 用串行方式扩展(kuzhn)数据存储器 串行总线系统扩展技术是新一代单片机技术发展的一个显著特点。相对于并行总线接口,串行总线接口有着占用I/O口线少(一般24根),易于实现应用系统软硬件的模块化、标准化。 随着串行总线接口技术(SPI、I2C等)和各种串行接口芯片(xn pin)的发展,串行总线接口技术越来越受到人们的推崇。本节讨论I2C总线的时序、操作方法,以及I2C总线在E2PROM 24Cxx中的应用共九十页8.5.1 I2C总线(zn xin) I2C总线是Philips公司推出的芯片间串行传输总线。 I2C总线是二线制,采用(ciyng)器件地址的硬件设置方法,

26、通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。 共九十页 1I2C总线的特点 I2C总线最主要的优点是其简单性和有效性。 I2C总线的特点:其接口直接集成在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。 I2C总线的其它优点:它支持多主控(Multimastering),其中任何能够进行发送和接收(jishu)的设备(节点)都可以成为主控器。8.5.1 I2C总线(zn xin)共九十页图8-15 典型I2C总线(zn xin)系统示意图单片机AA/D、D/A转换器专用集成电路静态RAM或ROMLCD显示器单片

27、机BSDASCL8.5.1 I2C总线(zn xin) I2C总线的主控器:一个主控器能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控器。如图8-15所示。共九十页 I2C总线支持多主和主从两种工作模式多主方式:通过硬件和软件的仲裁,主控器取得总线控制权。 主从方式:从器件地址包括器件编号地址和引脚地址两部分(b fen),器件编号地址由I2C总线委员会分配,引脚地址由外界电平的高低决定。 器件内部子地址:当器件内部有连续的子地址空间时,对这些空间进行连续读写,子地址会自动加1。如存储器。8.5.1 I2C总线(zn xin)共九十页 CPU发出的控制信号:分为地址码和控制量两

28、部分。 地址码:用来选址,即接通需要控制的电路,确定控制的种类。 控制量:决定该调整的类别(如对比度、亮度(lingd)等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。8.4.2 I2C总线(zn xin)共九十页I2C总线的工作原理(1)I2C总线对数据线上信号的定义(dngy):1)总线空闲状态:时钟信号线和数据信号线均为高电平。2)起始信号:即启动一次传输,时钟信号线是高电平时,数据信号线由高变低。SDASCL起始信号结束(jish)信号数据位信号数据位8.5.1 I2C总线共九十页3)停止信号:即结束一次传输,时钟信号线是高电平时,数据信号线由低变高。4

29、)数据位信号:时钟信号线是低电平时,可以改变(gibin)数据信号线电位;时钟信号线是高电平时,应保持数据信号线上电位不变,即时钟是高电平时数据有效。5)应答信号:占1位,数据接收者接收1字节数据后,应向数据发出者发送一应答信号。低电平为应答,继续发送;高电平为非应答,结束发送。6)控制位信号:占1位,主IIC设备发出的读写控制信号,高为读、低为写(对主IIC设备而言)。控制位在寻址字节中。8.5.1 I2C总线(zn xin)共九十页7)地址信号:为从机地址,占7位,如下表所示,称之为“寻址字节(z ji)”,各字段含义如下:器件地址(dzh)(DA3-DA0):是IIC总线接口器件固有的地

30、址编码,由器件生产厂家给定。如IIC总线EEPROM AT24C的器件地址为1010等。引脚地址(A2、A1、A0):由IIC总线接口器件的地址引脚A2、A1、A0的高低来确定,接电源者为1,接地者为0。读写控制位(R/ W):1表示主设备读,0表示主设备写。7位地址和读写控制位组成1个字节。D7D6D5D4D3D2D1D0DA3DA2DA1DA0A2A1A0R/ W8.5.1 I2C总线共九十页 2I2C总线的时序 I2C总线的信号:I2C总线在传送数据过程中共有三种类型(lixng)信号,分别是:开始信号、结束信号和应答信号。 I2C总线 开始信号:SCL为高电平时,SDA由高电平向低电平

31、跳变,开始传送数据。 结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。8.5.1 I2C总线(zn xin)共九十页SDASCL 开始信号(xnho)允许数据变化 允许数据变化 允许数据变化 结束信号图8-16 I2C总线(zn xin)的时序8.5.1 I2C总线 如图8-16所示,为I2C总线的一般时序。即起始信号、结束信号、允许数据线改变的条件等。共九十页3I2C总线的数据传输过程 数据传输时,主机先发送启动信号和时钟信号,随后发送寻址字节来寻址被控器件,并规定数

32、据传送方向(fngxing)。 寻址字节由7位从机地址(D7D1)和1位方向位(D0,读0/写1)组成。 从机地址包括器件编号地址和引脚地址两部分。8.5.1 I2C总线(zn xin)共九十页R/DA3DA2DA1DA0A2A1A0器件识别码器件识别码如:RTC 1101允许在公用的I2C总线EEPROM 1010上同时接8个同类器件I2C总线器件(qjin)的7位从器件(机)地址:8.5.1 I2C总线(zn xin)共九十页 从机对地址的响应:当主机发送寻址字节时,总线上所有器件都将其中的高7位地址与自己的比较,若相同,则该器件根据读/写位确定是从发送器还是从接收器。 对从接收器:在寻址

33、字节之后,主控发送器通过SDA线向从接收器发送数据,数据发送完毕后发送终止信号,以结束(jish)传送过程。 对从发送器:在寻址字节之后,主控接收器通过SDA线接收被控发送器的发送数据。8.5.1 I2C总线(zn xin)共九十页 每传输一位数据,都有一个时钟脉冲相对应。时钟脉冲不必是周期性的,它的时钟间隔可以不同。 I2C总线的备用状态(“非忙”状态):SDA和SCL都为“1”;只有当总线处于“非忙”状态时,数据传输才能被初始化。I2C总线的关闭状态:SCL箝位在低电平。 I2C总线上传输的数据和地址字节均为8位,且高位在前,低位在后。数据线SDA上的一般情况:I2C总线以开始信号为启动信

34、号;接着传输的是地址和数据字节,数据字节是没有限制的;每个字节后必须跟随一个应答位(0);全部数据传输完毕后,以结束信号结尾。 SCL的“线与”特性:任一器件的SCL为低电平时,便时时钟线SCL变低,SDA上数据就被停止(tngzh)传送。 8.5.1 I2C总线(zn xin)共九十页接收器的应答:正常应答位为0;当接收器接收到一个字节后无法立即接收下一个字节时,便向SCL线输出低电平而箝住SCL(SCL=0),迫使SDA线处于等待状态(zhungti)。被控器箝住SCL线为低电平,使主控发送器处于等待状态的情况:如图8-11中的A处,当接收器在A点接收完主控器发来的一个字节时,需要处理接收

35、中断而无法继续接收,则被控器便可箝住SCL线为低电平,使主控发送器处于等待状态,直到被控器处理完接收中断后,再释放SCL线。8.5.1 I2C总线(zn xin)共九十页图8-18 I2C总线(zn xin)的数据传送字节格式开始(kish)信号从地址来自接收器响应信号发送器等待数据来自接收器响应信号方向位停止信号重复开始信号若传送多个字节则重复SCLSSDAMSBACKACKR/WP/SA8.5.1 I2C总线共九十页关于应答信号:正常应答位为0;(1)应答信号的发送时刻:数据传输时,发送器每发完一个字节,都要求接收方发回一个应答信号(0)。 (2)应答信号的过程:发送时钟仍由主控器在SCL

36、上产生。主控发送器必须在被控接收器发送应答信号前,预先(yxin)释放对SDA线的控制(SDA1),以便主控器对SDA线上应答信号的检测。8.5.1 I2C总线(zn xin)共九十页 正常应答:主控器发送时,被控器接收完每个字节(z ji)需发回应答信号“0”,主控器据此进行下一字节的发送。 异常应答:如果被控器由于某种原因无法继续接收SDA上数据时,可向SDA输出一个非应答信号(1),主控器据此便产生一个Stop来终止SDA线上的数据传输。 主控器接收时也应给被控器发应答信号。主控器接收时的结束应答:当主控器要结束传输时,必须给被控器发一个非应答信号“1”,令被控器释放SDA线,以便主控器

37、发送Stop信号来结束数据的传输,如图8-19所示。8.5.1 I2C总线(zn xin)共九十页图8-19 I2C总线(zn xin)的应答信号发送器数据输出接收器数据输入主控器时钟线起始信号释放总线保持高电平不应答 A应答 A应答时钟脉冲SMSB28918.5.1 I2C总线(zn xin)共九十页 4I2C总线的数据格式 1)主控器写数据 主机写数据过程:整个过程均为主机发送,从机接收,数据的方向位R/W=0。应答位ACK由从机发送,当主机产生(chnshng)结束信号后,数据传输停止。格式如下:8.5.1 I2C总线(zn xin)共九十页SAData 1AData 2AData n-

38、1AData nPSLAS为开始信号,P为结束(jish)信号,A为应答信号, 为非应答信号,SLA为寻址字节(写),Data 1Data n为被传送(chun sn)的n个数据。为主控器发送,被控器接收。 为被控器发送,主控器接收。 8.5.1 I2C总线A/A共九十页 2)主控器读数据 主机读数据过程:寻址字节为主机发送、从机接收,方向位R/W=1,n个数据(shj)字节均为从机发送、主机接收。主机接收完全部数据(shj)后发非应答位(1),表明读操作结束。格式如下:SSLA RAData 1AData 2AData n-1AData nPSLA R为寻址字节(z ji)读。 8.5.1

39、I2C总线共九十页 3)主控器读/写数据 改变传送方向的数据传输过程:由于读/写方向有变化,开始(kish)信号和寻址字节都会重复一次,但读/写方向(R/W)相反。格式如下:SSLA RAData 1AData 2AData nASrADATA 1ADATA2ADATA n-1ADATA nPSr为重复开始信号(xnho),Data 1Data n为主控器的读数据,DATA 1DATA n为主控器的写数据。SLAA/8.5.1 I2C总线共九十页8.5.2 I2C总线(zn xin)扩展存储器 例8-4 对单片机编程,模拟I2C操作对EEPROM芯片24C04A(8bit x256x2)进行写

40、、读,对前面的128字节写入0128。 24C04A的SDA引脚是I2C数据信号引脚;SCK引脚是I2C时钟信号引脚;A1、A2引脚是芯片选择引脚,当系统中存在多个24C04A时实现(shxin)片选;WP引脚是对高256字节的写保护。共九十页8.5.2 I2C总线(zn xin)扩展存储器共九十页8.5.2 I2C总线(zn xin)扩展存储器I2C总线操作(cozu)C语言程序#includereg52.h#includesbit SCL=P10; /I2C时钟线sbit SDA=P11; /I2C数据线void start() /定义起始信号函数SDA=1; SCL=1; _nop_()

41、;_nop_(); SDA=0; _nop_();_nop_();SCL=0; 共九十页8.5.2 I2C总线(zn xin)扩展存储器void stop() /定义停止信号(xnho)产生函数 SDA=0; SCL=0; _nop_();_nop_();SCL=1; _nop_();_nop_();SDA=1; 共九十页8.5.2 I2C总线(zn xin)扩展存储器void rack() /定义(dngy)应答检测函数SCL=1; _nop_();_nop_();SCL=0; void start() /定义起始信号产生函数SDA=1; SCL=1; _nop_();_nop_(); SDA=0; _nop_();_nop_();SCL=0; 共九十页8.5.2 I2C总线(zn xin)扩展存储器void wbyte(unsigned char tmp)/写字节(z ji)函数unsigned char i; for(i=0;i8;i+) tmp=1; /左移一位,移入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论