外部系统扩展_第1页
外部系统扩展_第2页
外部系统扩展_第3页
外部系统扩展_第4页
外部系统扩展_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

外部系统扩展第1页,共91页,2023年,2月20日,星期四

系统扩展是指单片机内部各功能部件不能满足应用系统要求时,在片外连接相应的外围芯片以满足应用系统要求。一、为何要进行系统扩展?1)单片机本身的资源有限2)单片机本身接口功能有限

单片机控制应用中的接口要求复杂,而单片机的接口只有数据锁存和缓冲功能,没有控制功能,难以满足复杂的I/O要求。

单片机系统中有两类数据传送操作:

单片机与存储器之间的数据读写操作;

单片机与其它设备之间的数据传送操作。第2页,共91页,2023年,2月20日,星期四

单片机与控制对象或外设之间的数据传送通常较复杂,表现在以下几方面:1)速度差异大2)设备种类繁多

低速与高速外设的速度相差很大,所以,单片机无法以一个固定的时序与它们按同步方式协调工作。

各种设备性能各异、对数据要求不同,因此,无法按统一格式进行数据传送。3)数据信号形式多样有电压、电流信号,有数字形式、模拟形式。

上述因素使单片机的I/O操作变得很复杂,靠单片机本身的I/O口无法实现,必须扩展接口电路。第3页,共91页,2023年,2月20日,星期四

51单片机的系统扩展主要有如下几种扩展

程序存储器(ROM)的扩展数据存储器(RAM)的扩展

I/O口(普通I/O口、有特殊功能的接口)的扩展中断系统扩展1、扩展技术中主要研究、解决的问题:(1)提供合理的数据通道(2)物理寻址方法(3)数据读写的控制方法(4)收发双方的同步传送及其对信号时序的要求

第4页,共91页,2023年,2月20日,星期四二、单片机系统扩展方法

51有很强的外部扩展能力,通过总线来进行扩展,扩展电路及扩展方法较典型、规范。

总线扩展方法是指:以单片机为核心,通过总线把扩展部件连接起来。常用的单片机系统扩展方法有两种:1)并行扩展法利用单片机本身具备的三组总线(AB、DB、CB)进行的系统扩展。第5页,共91页,2023年,2月20日,星期四三、最小应用系统单片机系统的扩展是以基本的最小系统为基础的。

内部有程序存储器的单片机+晶振电路+复位电路就是一个最简单的最小应用系统。

对于内部无程序存储器的芯片8031来说,则要用外接程序存储器的方法才能构成一个最小应用系统。

2)串行扩展法利用串行总线进行的系统扩展。串行扩展总线有:单总线(1-Wire总线)

I2C双线总线

SPI三线总线三种结构第6页,共91页,2023年,2月20日,星期四外接晶振复位电路8051、8751本身即可构成一片最小系统,只要将单片机接上时钟电路和复位电路即可,同时接高电平,ALE、信号不用,系统就可以工作(a)8051/8751最小系统结构图;(b)8031最小系统结构图片内无程序存储器的芯片构成最小应用系统时,须在片外扩展程序存储器。由于EPROM芯片一般不能锁存地址,故扩展时还应加1个锁存器,构成一个3片最小系统,第7页,共91页,2023年,2月20日,星期四

8.1并行扩展方法(1)地址总线(AB)P0口(低8位地址A0~A7),P2口(高8位地址A8~A15)。(2)数据总线(DB)由P0口提供D0~D7(3)控制总线(CB)包括片外系统扩展用控制线和单片机用于接收片外控制的信号线。P2口有输出锁存功能,能保留高8位地址信息。P0是双向、三态控制的8位口一、外部总线的扩展

用51的P2口输出高8位地址、P0输出低8位地址和传送数据D0~D7,外加地址锁存器构成地址、数据总线,控制总线由51的RD、WR、PSEN、ALE和EA8.1.1单片机的并行总线第8页,共91页,2023年,2月20日,星期四ALE:用于锁存P0口输出的低8位地址的控制线。ALE在P0口输出地址期间出现低电平,用其下降沿控制锁存器锁存地址数据。

PSEN:输出,用于读片外程序存储器(EPROM)中的数据。“读”取EPROM中数据(指令)时,不能用“RD”信号,而只用PSEN信号。

EA:输入,用于选择片内或片外程序存储器。当EA=0时,只访问外部程序存储器。当EA=1时,先访问内部程序存储器,内部程序存储器全部访问完之后,再访问外部程序存储器。RD、WR:输出,用于片外数据存储器(RAM)的读、写控制。执行片外数据存储器操作指令MOVX时自动生成RD、WR

信号,并在数据线有效时输出。

控制总线第9页,共91页,2023年,2月20日,星期四8.1.2并行扩展应注意的问题一、地址锁存器的使用

通过并行扩展方法,可扩展程序存储器、数据存储器和并行I/O口,它们要由地址来区分访问。

由于地址低8位是由P0分时提供,故扩展时必须采用锁存器锁存地址(扩展连接的芯片本身有锁存功能除外)。第10页,共91页,2023年,2月20日,星期四51的读写时序中,锁存允许信号ALE是高电平有效,ALE高电平信号与P0口有效地址信号同时出现,ALE下降沿时锁存低8位地址,ALE低电平时P0口为数据。

因此,应选高电平触发或下降沿触发的锁存器,如:74LS373或8282。对上升沿触发的锁存器则应加一级非门后与锁存器的控制端相连。第11页,共91页,2023年,2月20日,星期四G(高电平锁存)、STB从高电平转为低电平时锁存常用地址锁存器的引脚和接口73LS273在CLK上升沿锁存所以须将ALE反相接入第12页,共91页,2023年,2月20日,星期四TTL芯片74LS373是一个8D三态同相锁存器,其引脚和逻辑如下: D0D1D2D3D4D5D6D7GQ0Q1Q2Q3Q4Q5Q6Q7OE256912151619174LS373引脚图GOEQN01=DN01=DN00保持1X

高阻74LS373真值表34781314171811P0口ALE805174LS373D0~D7Q0~Q7GOEA0~A7A8~A15P2口低位地址分离电路G=1时,D端数据=Q端数据,G=0时,Q端数据保持,不再受D端变化影响第13页,共91页,2023年,2月20日,星期四二、地址范围的确定和片选信号的产生

为了访问扩展的存储单元和I/O口,必须为每个单元和I/O端口分配唯一的地址。

决定地址范围的因素有两个:

1)接口芯片的地址线与单片机的地址总线的连接

2)接口芯片的片选信号的产生方法

连接地址线时,通常都是将接口芯片的地址线与单片机地址总线的若干低位地址线相连,而用剩余的P2口高位地址线来产生片选信号。产生片选信号的方法与微机原理中介绍的相同。二、地址范围的确定和片选信号的产生第14页,共91页,2023年,2月20日,星期四三、扩展的存储器与I/O口的编址51扩展的I/O口与扩展的RAM采用统一编址方式,并用同样的指令MOVX进行访问。所以,当同时扩展有存储器和I/O口时,要注意地址的合理分配、连接,以保证没有地址冲突。

为了在扩展的片外RAM和I/O口中选择唯一的某单元或I/O端口进行操作,需要进行选址。第15页,共91页,2023年,2月20日,星期四扩展的片外RAM和I/O口选址过程分2步:2)片内译码通过连到芯片地址引脚上的地址线在芯片内部进行译码。1)片选

即通过高位地址线译码或线选方法产生的“片选”信号,先找到单元或I/O端口所在的芯片。通过上两步,才能确定唯一的存储单元或I/O端口。第16页,共91页,2023年,2月20日,星期四片选常用有“线选”和“地址译码”2种方法。地址译码又分为全译码法、部分地址译码法1)线选法:就是直接将单片机最高几位空余地址线中的一根作为某一扩展芯片的片选。一根地址线对应一个片选。第17页,共91页,2023年,2月20日,星期四例:用“线选”法扩展3片存储器

A10...A0CEA10...A0CEA10...A0CEA10~A0A10~A0A10~A0A13A12A11IIIIII第18页,共91页,2023年,2月20日,星期四

片选译码方法分:部分译码全译码法线选法的特点:电路简单,但占地址资源多,地址重叠区多,各芯片的地址空间不连续,不能充分利用CPU的最大地址空间。

2)译码法:用剩余的高位地址线进行译码,译码输出作为“片选”控制线。

采用线选法时要注意:

访问外部数据存储器、I/O接口芯片时,所发出的地址码其做线选的地址线中只能有一个为低电平,以保证同一时刻只选中一片芯片,否则,将引起错误。部分译码法的特点:既能利用CPU的较大的地址空间,又可简化译码电路,但存在地址重叠.第19页,共91页,2023年,2月20日,星期四常用的译码器有3/8译码器74LS138、双2/4译码器74LS139、4/16译码器74LS154等。A15A14A13A12A11A10……A0十六进制地址芯片I100000……08000H~~100001……187FFH

芯片II1100010……08800H~~100011……18FFFH

芯片III1100100……09000H~~100101……197FFH第20页,共91页,2023年,2月20日,星期四四、控制信号的时序配合

当外扩芯片的操作控制信号的时序与51单片机提供的相应控制信号时序相合时,可以直接与单片机相应引脚相连。

时序上不能与单片机提供的控制信号相配时,可设计简单组合逻辑电路,对单片机相关的引脚信号进行处理,得到相配的时序信号后连接。全译码法的特点:能充分利用CPU的最大地址空间,芯片的地址空间可连续,无地址重叠,但译码电路较复杂,增加硬件开销.一般在外部扩展大容量的存储器时使用。第21页,共91页,2023年,2月20日,星期四8.1.3总线驱动

扩展使得总线上常挂接很多负载,但总线接口的负载能力有限,因此,常需通过总线驱动器进行总线驱动。

总线驱动器对于单片机的I/O口只相当于增加了一个TTL负载,它除了对后级电路驱动外,还能对负载的波动变化起隔离作用。第22页,共91页,2023年,2月20日,星期四

在对TTL负载驱动时,只需考虑驱动电流的大小;在对MOS负载驱动时,MOS负载的输入电流很小,更多地要考虑对分布电容的电流驱动。

1.常用的总线驱动器

地址总线和控制总线是单向的,因此可选用单向驱动器,如74LS244,它带有三态控制,能实现总线缓冲和隔离。

第23页,共91页,2023年,2月20日,星期四数据总线是双向的,其驱动器要选用双向的,如74LS245,它是三态的,有一个方向控制端DIR,DIR=1时输出(An→Bn),DIR=0时输入(An←Bn)。

单向驱动器双向驱动器第24页,共91页,2023年,2月20日,星期四P0口的驱动

P2口的驱动2.51单片机与总线驱动器的接口单向双向当PSEN、RD任一个有效,LS245传输方向B→A输入,当进行RAM写时两者均无效时,传输方向A→B第25页,共91页,2023年,2月20日,星期四8.3.1.外部程序存储器的扩展51单片机程序存储器的扩展+5V第26页,共91页,2023年,2月20日,星期四用译码方法扩展4片27128的EPROM电路原理图第27页,共91页,2023年,2月20日,星期四8.3.2外部数据存储器的扩展1.外部数据存储器的扩展方法

在要定义大量的数据变量、标志位或需要大量的数据缓冲区的应用系统中,会需要扩展数据存储器。

数据存储器在和单片机的接口上有独立的控制信号线,RD、WR和读写指令,扩展时将RAM芯的OE、WE分别与单片机的RD、WR引脚相连接,数据线和地址线的连接方法与程序存储器扩展的连接相同。数据存储器扩展应注意的问题

必须保证扩展的数据存储器与扩展的I/O芯片的地址没有冲突。第28页,共91页,2023年,2月20日,星期四51单片机扩展数据存储器的示意图第29页,共91页,2023年,2月20日,星期四例:扩展2片6264,采线选法寻址。用口线P2.7来寻址当P2.7=0时访问片(0),地址范围为6000H~7FFFH

当P2.7=l时访问片(1),地址范围为E000H~FFFFH16K片外数据存储器扩展电路存储器扩展举例第30页,共91页,2023年,2月20日,星期四采用地址译码器扩展存储器的连接图

第31页,共91页,2023年,2月20日,星期四51单片机同时扩展程序存储器和数据存储器80C51

+5V也可用地址译码信号使它们具有指定的地址.第32页,共91页,2023年,2月20日,星期四扩展既可读又可写的程序存储器

在扩展的ROM中,只能运行但不能修改程序,若把程序放在扩展RAM中,虽可修改却又不能运行程序,因为,对外部ROM和RAM是用不同指令产生不同的读选通信号来访问的。解决的方法:将两者的读访问信号相与后作为扩展RAM的读选通控制信号,从而使之成为可读可写的“程序存储器”。地址线A10~A0数据线D7~D0WRWEOERDPSEN片外存储器读信号=PSEN·RD第33页,共91页,2023年,2月20日,星期四EEPROM既能作为程序存储器又能作数据存储器,故可将程序存储器与数据存储器空间合二为一,连接方法如下:PSEN、RD任一个有效时OE有效,只有两者均无效时OE才无效.第34页,共91页,2023年,2月20日,星期四8.3.3并行I/O口的扩展(1)51没有专门的I/O指令,扩展的I/O口与片外RAM统一编址,占用片外RAM地址空间,所有扩展的I/O口或通过扩展I/O口连接的外围设备均采取与片外RAM相同的寻址方法,用MOVX指令访问。1.51单片机I/O口扩展性能

(2)利用串行口方式0,也可扩展I/O口,所扩展的I/O口不占用片外RAM地址。第35页,共91页,2023年,2月20日,星期四

单片机应用系统中,I/O口的扩展是为外部通道及设备提供输入、输出通道。因此,I/O口的扩展总是为了实现某一测控及管理功能而进行的。如:连接键盘、显示器、驱动开关控制、开关量监测等。

因此,在I/O口扩展时,必须考虑与之相连的外部硬件电路特性,如驱动功率、电平、干扰抑制及隔离等。第36页,共91页,2023年,2月20日,星期四2.扩展I/O口使用的芯片

51单片机应用系统中,扩展I/O口所采用的芯片主要有两大类:通用I/O口芯片如8255和I/O扩展复合芯片8155等。

TTL、CMOS电路芯片单片机应用系统中常采用这些芯片用来扩展普通8位输入或输出口,它们体积小、成本低、配置灵活,使用十分方便。第37页,共91页,2023年,2月20日,星期四

通过P0口扩展的主要有各类锁存器、三态缓冲器等,如:74LS373、74LS273、74LS573、74LS574、74LS367、74LS374、74LS377、74LS244等。3.并行I/O口的扩展方法根据扩展并行I/O口时数据线的连接方式,I/O口扩展可分为总线扩展方法、串行口扩展方法。常用I/O扩展TTL、CMOS芯片

用TTL芯片进行I/O口的扩展,只要按照“输入三态,输出锁存”与总线相连的原则,即能组成简单的I/O扩展接口。第38页,共91页,2023年,2月20日,星期四

(2)串行口扩展方法利用51的串行口在方式0工作下所提供的I/O口扩展功能。这种扩展只占用串行口.

接上串入并出移位寄存器可扩展并行输出口,

接上并入串出移位寄存器可扩展并行输入口。

通过移位寄存器级联,可扩展多数量、多位的并行I/O口。缺点:传输速度较慢

(1)总线扩展方法

扩展的I/O芯片的数据线取自P0口。这种扩展方法只分时占用P0口,并不影响P0口与其它扩展芯片的连接操作,不会造成硬件的额外开销。因此,在单片机应用系统的I/O扩展中被广泛采用。第39页,共91页,2023年,2月20日,星期四

单片机系统中输入接口的扩展一般选用具有缓冲功能的芯片实现,例如:74LS244、74LS245等。4、I/O口扩展举例

单片机系统中输出接口的扩展经常选用具备锁存功能的芯片实现,一般有:74LS273,74LS373,74LS573、74LS574等。第40页,共91页,2023年,2月20日,星期四

1)简单并行输出接口的扩展CK为时钟输入端G为锁存允许做数据总线时的P0口并没有锁存功能,为了有稳定的输出,所以,用TTL或CMOS锁存器芯片把数据锁存输出。锁存器、三态门芯片都只有数据线和锁存允许及输出允许控制线,而无地址线和片选信号线,但对扩展I/O口是用MOVX指令以确定的地址来进行访问,所以,要用地址线控制锁存允许、输出允许。第41页,共91页,2023年,2月20日,星期四将1个字节数据从用74LS377扩展的I/O输出,用下面程序段:

MOV DPTR,#7FFFH ;地址指针指向74LS377 MOV A,#DATA ;将输出数据送A

MOVX@DPTR,A ;输出数据

对于常态数据的输入,只需采用8位三态门控制电路芯片即可。

对于输入,由于是通过数据总线进行,输入时一定要用三态芯片,以免平时对数据总线有影响。注意!:

不是用MOVP0,#DATA并行扩展I/O口的使用第42页,共91页,2023年,2月20日,星期四用74LS244通过P0口扩展8位并行输入口,三态门由P2.6和RD相或控制,故其端口地址为BFFFH。

MOV DPTR,#0BFFFH ;指向74LS244口地址,使A14=0MOVXA,@DPTR ;读入数据74LS244是双4位三态输入缓冲器DRDP21G、2G为输出控制端2)简单并行输入接口的扩展第43页,共91页,2023年,2月20日,星期四3)用专用I/O芯片8255扩展并行I/O口复位电路8031与8255的接口方法第44页,共91页,2023年,2月20日,星期四8.3.4C51访问扩展的存储器和I/O端口的方法

51对外扩的I/O或外扩RAM统一编址,将扩展的I/O口看作片外RAM单元来访问。在C51中如何访问它们?

#include<absacc.H>//absacc.H包含了能进行绝对地址访问的宏定义

#define变量名

XBYTE[地址常数]//指定变量与XDATA

区中的某绝对(字节)地址对应(外RAM或扩展I/O口的地址)

访问方法一、

采用绝对地址访问的方法,用预定义宏指定变量在xdata空间并使绝对地址与要访问的扩展RAM单元、I/O口相对应。第45页,共91页,2023年,2月20日,星期四例:对片外的1000H端口进行数据的读操作,设计方法如下#include<reg51.h>#include<absacc.h>#defineportXBYTE(0x1000);//将外部1000H端口命名为port

长度为8位。此后,程序中就用port对外部1000H地址的端口进行访问voidmain(void){inttemp;While(1){temp=port;}}第46页,共91页,2023年,2月20日,星期四访问方法二:

用指针变量访问外RAM或扩展I/O口。设置指针为指向xdata区类型,并在程序中为指针变量设置与访问的外RAM单元或扩展的I/O口相对应的地址。针对上述举例,程序设计如下:#include<reg51.h>unsignedcharxdata*PORT;//定义一个指向外扩RAM区的无符号字符类型数据的指针voidmain(void){unsignedinttemp;

PORT=0x1000;

//在程序内,对指针设定地址值,指向要访问的地址为1000H的外RAM单元或I/O口

While(1)

{temp=*PORT;}},第47页,共91页,2023年,2月20日,星期四简单I/O扩展设计应用举例例1:应用74273扩展单片机的输出端口,设定74273的端口访问地址为7FFFH,控制数码管显示0-9。设计要求,端口的访问地址为7FFFH,即在地址线上输出时,只有高位P2.7为低电平,其他均为高电平使用/WR与P2.7共同作为74273数据选通的控制信号,与74273的CLK引脚相连。第48页,共91页,2023年,2月20日,星期四#include<reg51.h>#include<absacc.h>#defineportXBYTE[0x7FFF]unsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f};//设置数码显示数据表voiddelay(void){unsignedinti;for(i=0;i<40000;i++);}voidmain(void){unsignedinti;while(1){for(i=0;i<10;i++){port=table[i];

//从数码显示字表读取数据,通过74273输出显示

delay();} }}编程序应注意:在程序中涉及到访问外部寄存器单元地址时,头文件#include<absacc.h>不可缺少②用define定义端口的格式为:

#define端口名称XBYTE(端口地址);第49页,共91页,2023年,2月20日,星期四图8.2.4简单并行I/O接口扩展电路

例2:用74273、74244芯片实现简单的并行接口扩展电路,实现的功能:按键的状态通过74244缓冲读入,通过74273锁存输出,在八个LED发光二极管上显示。+5VP2.0273、244的片选均通过P2.0实现,因此,访问地址均为FEFF,为了区别两芯片访问,加入/RD、/WR来分别控制对不同芯片的控制端。第50页,共91页,2023年,2月20日,星期四#include<reg51.h>unsignedcharxdata*PORT;//定义访问的外部端口变量voidmain(){unsignedinttmp;PORT=0xFEFF;//根据原理图,定义外部端口的地址

While(1)

{tmp=*PORT;//从74244端口读取开关状态数据*PORT=tmp;//将读取的数据通过74273锁存输出

//经硬件电路在发光二极管上显示

}}第51页,共91页,2023年,2月20日,星期四例3:用8255扩展输入、输出口实现外接LED由拨动开关相应位的状态进行控制的功能。由图知A口输出:7FFC

B口输入:7FFDC口:7FFED口:7FFFP2.7P2.7第52页,共91页,2023年,2月20日,星期四#include<absacc.h>#include<reg51.h>#defineCOM8255XBYTE[0x7FFF]//设置命令控制寄存器地址#definePA8255XBYTE[0x7FFC]//设置A口的访问地址#definePB8255XBYTE[0x7FFD]//设置B口的访问地址unsignedchartemp;voidmain(void){COM8255=0x83;//初始化8255,据题目要求A、B口方式0//B口输入,A口输出。

while(1){temp=PB8255;//读入B口数据

PA8255=temp;//从A口输出

}}第53页,共91页,2023年,2月20日,星期四8.2串行总线扩展串行传输信号的特点:10011101

串行方式传送数据时,数据的所有各位不是同时发送和接收,而是按一定顺序,一位一位地分时传送和接收。这种方式传送成本低,传输距离长,速度慢。

第54页,共91页,2023年,2月20日,星期四

与并行扩展一样,串行扩展也要解决下列问题:数据传送对象(单元/I/O口)地址的选择数据读写的控制数据的传输。1.为实现地址、控制、数据信号分时传输,收发双方需要制定严格的协议。

2.如何解决双方同步收发问题?

解决上述问题有多种不同方法,因而产生了多种不同串行总线及其不同的传输协议。

然而,串行总线扩展,通常只有1-2根传输线,因此,地址信号、控制信号和传送的数据只有采用分时传送的办法,用这1条线来传送,那么如何解决上述问题呢?第55页,共91页,2023年,2月20日,星期四

目前单片机外部串行扩展常用的串行总线有SPI(SerialPeripheralInterface)接口

I2C(Inter-IntegratedCircuit)接口

1-Wire(1-WireChips)技术等。1-WIRE总线具有结构最简单、成本低廉、节省I/O资源、便于总线扩展和维护等优点。

在SPI总线标准中,使用3根公共的同步时钟SCK、数据线MISO、MOSI和独立的从器件选择线SS来完成器件的寻址、读写控制和数据传送的。通信过程由产生SCK时钟信号的主器件(MPU)控制。第56页,共91页,2023年,2月20日,星期四

SPI总线接口读写速度比I2C总线接口快,通信协议也较简单,因此,SPI总线在单片机控制系统中被广泛使用在与E2PROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信中。

I2C总线标准中,使用串行时钟信号SCL和串行数据/地址线SDA进行信息传输,并允许若干兼容器件共享双线总线,通信过程由产生SCL时钟信号的主器件(MPU)控制。第57页,共91页,2023年,2月20日,星期四

SPI总线是Motorala公司提出的一种基于四线制的同步串行总线,它是一种在芯片之间通过串行数据线(MISO、MOSI)和串行时钟线(SCK)实现同步串行数据传输的技术。

8.2.1

SPI总线

SPI提供访问一个4线、全双工串行总线的能力,支持在同一总线上将多个从器件连接到一个主器件上,由主器件控制数据向一个或多个从器件传送。

SPI设备可以工作在主方式或从方式中。第58页,共91页,2023年,2月20日,星期四⒈SPI总线结构一个完整的SPI系统有如下的特性:

.全双工、三线同步传送;

.主、从机工作方式;

.可程控的主机位传送频率、时钟极性和相位

.发送完成中断标志;

.写冲突保护标志。

数据传送格式:先传送数据最高位MSB第59页,共91页,2023年,2月20日,星期四一般SPI系统使用四个I/O引脚:①串行数据线(MISO、MOSI)用于串行数据的发送和接收。

MISO——主机方式输入/从机方式输出数据线

MOSI——主机方式输出/从机方式输入数据线

在SPI设置为主机方式时,MISO线是主机数据输入线,MOSI是主机数据输出线;在SPI设置为从机方式时,MISO线是从机数据输出线,MOSI是从机数据输入线。第60页,共91页,2023年,2月20日,星期四

在SPI器件设置为主机方式时,主机启动一次传送后会自动在SCK脚产生8个时钟周期。主机和从机SPI器件在SCK信号的一个跳变时进行数据移位,数据稳定后的另一个跳变时进行采样。②串行时钟线(SCK)

SCK用于同步从MISO、MOSI引脚输入、输出的数据传送。在SPI器件设置为主机方式时SCK为输出;在SPI器件设置为从机方式时SCK为输入。第61页,共91页,2023年,2月20日,星期四

对于一个完整的SPI系统,串行数据和串行时钟之间有四种极性和相位关系,以适应不同的外围器件特性。主机和从机器件之间的传送定时关系必须相同。起始电平为低电平起始电平为高电平采样时间在上升沿采样时间在下降沿第62页,共91页,2023年,2月20日,星期四 ③从机选择() 在从机方式时,脚是输入端,用于使能SPI从机进行数据传送;在主机方式时,用来保护在主方式下SPI同步操作所引起的冲突,逻辑0禁止SPI,清除MSTR位。一般由外部置为高电平,。

通过SPI可以扩展各种I/O功能,包括:A/D、D/A、实时时钟、RAM、EEPROM及并行输入/输出接口等。第63页,共91页,2023年,2月20日,星期四SPI总线接口的典型电路如下图所示。采用1个主器件和n个从器件构成。主器件产生时钟信号,控制着数据向1个或n个从器件传送,从器件在主机发命令时才能接收或发送数据。2.SPI串行总线的接口电路第64页,共91页,2023年,2月20日,星期四

对于没有SPI接口的51单片机,可以用两种方法来实现与SPI外设的接口。

②串行时钟极性和相位之间的关系、传送速率都是固定的,不可编程改变。3.51单片机串行扩展SPI外设的接口1)用串口方式0提供简化的SPI同步串行通信功能①只有两个引脚:RXD(MOSI/MISO)和TXD(SCLK)其特点是:第65页,共91页,2023年,2月20日,星期四

2)通用I/O口来模拟SPI串行接口,用软件来模拟仿真SPI操作。③由于串行数据输入、输出是同一根线,要由软件设置数据传送方向。

④串行数据线上传送数据位的顺序为先LSB后MSB第66页,共91页,2023年,2月20日,星期四

8.2.3I2C总线

I2C总线(IntelICBUS)是Philips公司推出的一种基于两线制的同步串行数据传输总线。被广泛用于消费类电子产品、通信产品、仪器通信及工业总线中。SDA:串行数据线,双向传输数据。SCL:串行时钟线,传输时钟信号,在传输过程中用来同步数据线上的数据传送1、I2C总线系统结构第67页,共91页,2023年,2月20日,星期四

挂在I2C总线上的器件必须有I2C总线接口,它们的SDA和SCL引脚都是开漏结构,都需通过电阻与电源连接。所有器件的同名端相连接。作为主控件的单片机可以没有I2C总线接口。

在I2C总线上的器件根据其功能可分为两种:主控器件和从控器件。

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

从器件:在总线上被主控器件寻址的器件,它们根据主控器件的命令来接收和发送数据。第68页,共91页,2023年,2月20日,星期四1)I2C总线采用两线制,由双向数据线SDA和时钟SCL构成,为同步传输总线,数据线上信号完全与时钟同步,可进行全双工数据传送。2、I2C总线特点3)总线采用了器件地址硬件设置,无须用外围器件片选信号方式的寻址方法。可以并行扩展多个外围器件。2)总线平时通过上拉电阻接到电源,在空闲情况下,2根线都处于高电平。4)系统中的器件有四种可能的工作方式:主发送方式、主接收方式、从发送方式和从接收方式。第69页,共91页,2023年,2月20日,星期四6)是一个真正的多机总线,如果两个或更多主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据被破坏。5)I2C总线指定了严格的规范,包括:接口的电气特性、信号时序、信号传输的定义等。7)由于I2C增加了用于同步的时钟线SCL,可以大大提高数据的传输速度。标准模式下可达100kbit/s快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。第70页,共91页,2023年,2月20日,星期四3、I2C总线工作原理1)数据传送采用主从方式,由主控器件来寻址从器件、启动总线、产生时钟、传送数据及结束数据的传送。2)I2C总线上所有器件都有规范的器件地址,它由器件的固有地址及其地址引脚电平决定,对器件的寻址采用软件方法。

I2C总线器件地址由七位组成,它与1位方向位共同构成了I2C总线器件的寻址字节SLA。第71页,共91页,2023年,2月20日,星期四D7D6D5D4D3D2D1D0寻址字节SLA器件地址引脚地址方向位DA3DA2DA1DA0A2A1A0R/WDA3-DA0是I2C器件固有地址编码,出厂时已给定。如:E2PROMAT24C02的地址为1010,4位LED驱动器SAA1064的地址为0111。同类器件具有同样的地址编码A2、A1、A0是由I2C器件引脚连接状态形成的地址码。这些引脚可接电源或地,这部分可变地址可区分线上同类器件,也决定了总线上可连接的同类器件的数量。第72页,共91页,2023年,2月20日,星期四3)、I2C总线信号类型和时序1)I2C总线在传送数据过程中共有4种类型信号。开始信号(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号(P):SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。

方向位R/W规定了总线上的主器件与从器件的数据传送方向。R/W=1表示接收(读),R/W=0表示发送(写)。第73页,共91页,2023年,2月20日,星期四应答信号(A):接收数据的器件在接收到8位数据后,向发送器件发出特定的低电平脉冲,表示已收到数据。发送器接收到应答信号后,根据实际情况做出是否继续传递信号的判断。若未收到应答信号,则判断为接收器件出现故障。非应答信号(A):接收数据的器件在接收到8位数据后,向发送器件发出高电平为非应答信号。

主器件接收从器件数据时,接收到最后一个字节数据后,必须给从器件发送1个非应答信号,使从器件释放数据总线,以便主器件发送停止信号,从而终止数据传送。第74页,共91页,2023年,2月20日,星期四

4)I2C总线的四种状态和数据传输时序

总线状态SCLSDA总线不忙

高电平

高电平开始传送数据

高电平停止传送数据

高电平

数据传送SCL低电平时更改数据,用SCL的上升沿读取数据,在SCL高电平时数据不能变动I2C数据传送时序SCL高电平期间,SDA状态的改变,被用来表示起始和停止条件第75页,共91页,2023年,2月20日,星期四

①在I2C总线上进行数据传输时要严格遵守其时序、协议,保证做到:

数据有效转换开始后的数据传输过程中,当时钟线SCL为高电平时,数据线SDA必须保持稳定(否则会被认为是发出启动、停止信号)。传输的数据的变化即改变数据线SDA时,必须在时钟线SCL为低电平时方可进行。说明:②主器件在传输数据结束后,即产生停止信号,推出主器件角色,经过一定时间后,总线处于空闲状态。第76页,共91页,2023年,2月20日,星期四③任一器件在总线空闲时,一旦产生起始信号,即开始控制总线而成为主器件,此时,总线处于忙状态,其他器件不能再产生起始信号,否则,该主器件控制的数据传输无法正确完成。④在一个通信过程中,应该有一个起始信号和一个停止信号,如果两者之间有起始信号产生,该信号被称为重复起始信号。第77页,共91页,2023年,2月20日,星期四5)数据传输格式由于数据和地址信号都用一根数据线SDA来传输,何时传输地址?什么时候是主器件读?什么时候是主器件写?如何保证传输的正确?必须有一个共同接受的规定(协议):①.主控器件写操作主器件向被控器件发送n个数据的数据格式如下:起始信号S送7位地址和一位(为”0”)传送方向

SLAW应答信号A发送数据DATA1应答信号A……发送数据DATAn-1应答信号A发送数据DATAn非应答信号A/A停止信号P第78页,共91页,2023年,2月20日,星期四②主控器件读操作主器件向被控器件读n个数据的数据格式如下:起始信号S送7位地址和一位(为”1”)传送方向

SLAR应答信号A接收数据DATA1应答信号A……接收数据DATAn-1应答信号A接收数据DATAn非应答信号A’停止信号P③主控器读写操作

主控器读写操作是指主控期间在一次数据过程中需要改变数据传送方向的操作。此过程中的读、写操作分别与上述方法一样,只是在数据传送方向改变后,必须由主控器件发出从新启动信号,并发一个寻址字节,因为,数据字节的传送方向决定于寻址字节的方向位。SSLAW/RADATA1ADATA2A…DATAnA/ASrSSLARADATA2ADATA3A…DATAnA/APSLAR/WADATA1A其中:Sr为重复起始信号第79页,共91页,2023年,2月20日,星期四作业:1.用8031单片机,并采用一片2716(2KB)和一片8255组成一个既有程序存储器又有扩展I/O口的扩展系统,请:

(1)画出逻辑电路图

(2)说明其存储空间2.请利用74HC138设计一个译码电路,分别选中4片2764,且列出各芯片所占的地址范围:Y0芯片地址范围0000H-1FFFH,Y1芯片地址范围2000H-3FFFH,Y2芯片地址范围4000H-5FFFH,Y3芯片地址范围6000H-7FFFH.第80页,共91页,2023年,2月20日,星期四#defineucharunsignedchar

sbitSDA=P1^0;

//串行数据线sbitSCL=P1^1;

//串行数据线ucharidataSLAdd;

//存从器件地址变量ucharidatasbuf[8];//数据发送缓冲区ucharidatarbuf[8];//数据接收缓冲区bitbdataNACK;//器件坏或错误标志数据位bitbdatanackFlag;//非应答标志位利用51单片机模拟I2C总线接口的单片机程序P1.0P1.18051VCCR=4.7K0.01µfSDASCL第81页,共91页,2023年,2月20日,星期四voidstart(void){ SDA=1; //启动I2C总线

SCL=1; delay5us();//起始条件建立时间>4.7µS SDA=0; delay5us();//起始条件锁定时间>4.7µS SCL=0;//钳住SCL总线,准备发送数据}/*产生起始信号子函数:要求在时钟为高电平期间数据线由高变低。*/SDASCLvoiddelay5us()/*延时约5微秒,对于12M时钟*/{ uinti; for(i=0;i<5;i++) _nop_(); }第82页,共91页,2023年,2月20日,星期四/*产生停止信号子函数:要求在时钟为高电平期间数据线由低变高。*/SDASCLvoidstop(void){//停止I2C总线数据传送

SDA=0; SCL=1;//发送停止条件的时钟信号

delay5us(); SDA=1;//停止总线

delay5us(); SCL=0;}第83页,共91页,2023年,2月20日,星期四/*发送应答位”0”子函数:要求主控器件向被控器件发送”0”应答信号,并立即在SCL上发出与应答位对应的第9个时钟*/SDASCLvoidack(void){ SDA=0;//发送应答位“0” SCL=1;//紧跟着发送对应应答位的第9个时钟

delay5us();//保持数据时间要>4.7µS SCL=0;SDA=1;//释放数据线

}第84页,共91页,2023年,2月20日,星期四/*发送非应答位”1”子函数::要求主控器件向被控器件发送”1”非应答信号,并立即在SCL上发出与非应答位对应的第9个时钟*/SDASCLvoidn_ack(void){ SDA=1; //发送非应答位“1” SCL=1;//紧跟着发送对应应答位的第9个时钟

delay5us();//保持数据时间要>4.7µS SCL=0;SDA=0; }第85页,共91页,2023年,2月20日,星期四/*应答位检查子函数:用于检查一字节数据传送后,被控控器件在第9位时钟期间是否发回”0”的应答,若是,程序置nackFlag标志为0,否则置nac

温馨提示

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

评论

0/150

提交评论