单片机系统的扩展及接口技术.ppt
《单片机系统的扩展及接口技术.ppt》由会员分享,可在线阅读,更多相关《单片机系统的扩展及接口技术.ppt(121页珍藏版)》请在三一办公上搜索。
1、第五章 单片机系统的扩展及接口技术,5.0 系统扩展概述5.1 串行扩展总线接口技术5.2 并行扩展三总线的产生5.3 存储器扩展5.4 I/O口的扩展5.5 键盘与显示器接口技术5.6 数/模与模/数转换接口技术,最小应用系统 单片机所具有的各种功能能满足应用系统的要求,不需要进行扩展的单片机应用系统。,第五章 单片机系统的扩展及接口技术,如:8051 8751 89C51 外接了EPROM的8031 单片机应用系统。,5.0 系统扩展概述,2.系统扩展 当单片机最小系统不能满足系统功能要求时,需要扩展ROM、RAM、I/O口及其它所需的外围芯片。,输入/输出接口扩展 简单的I/O接口(中小
2、规模集成电路)适用于较简单的扩展系统 可编程I/O接口(8155/8255/8253/8250/8251),系统扩展一般有下列几方面内容:,外部程序存储器 E2PROM/EPROM 的扩展,外部数据存储器 RAM 的扩展,E2PROM既可以扩展为片外EPROM,也可以扩展为片外RAM.,扩展应尽量采用串行扩展方案。通过SPI或I2C总线扩展E2PROM、A/D、D/A、显示器、看门狗、时钟等芯片,占用MCU的I/O口线少,编程也方便。,5.1 串行扩展总线接口技术,一、SPI(串行外设接口)总线,SPI(Serial Peripheral Interface)总线 一种同步串行外设接口,用于M
3、CU与各种外围设备以串行方式进行通信(8位数据同时同步地被发送和接收),系统可配置为主或从操作模式。SPI总线定义:串行时钟线(SCK,同步脉冲)主机输入/从机输出数据线(MISO,高位在前)主机输出/从机输入数据线(MOSI,高位在前)从机选择线CS(SS),89C51除自身具有UART可用于串行扩展I/O口(方式0)以外,还可利用它的34根I/O口线进行SPI或I2C的外设芯片扩展、以及单总线的扩展。,SPI系统可直接与多种标准外围器件直接接口。外围设备包括:简单的移位寄存器(用作并行输入或输出口)至复杂的LCD显示驱动器或A/D转换器等。,与并行总线相比,SPI总线的使用可以简化电路设计
4、,省掉了很多常规电路中的接口器件,提高了设计的可靠性。,1.SPI总线系统的组成,SPI总线系统典型结构示意图。,注:有多个SPI接口的单片机时,应为一主多从,在某一时刻只能由一个单片机为主器件;在扩展多个SPI外围器件时,单片机应分别通过I/O口线来分时选通外围器件。,SPI主机方式最高数据传输率可达1.05 Mb/s。数据的传输格式是高位(MSB)在前,低位(LSB)在后。输入输出可同时进行。从器件只能在主机发命令时,才能接收或向主机传送数据。主SPI的时钟信号(SCK)使传输同步。,SPI总线有以下主要特性:全双工、3线同步传输;主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲
5、突保护;总线竞争保护等。典型时序图如下所示(在一个CLK中,下降沿输出,上升沿输入。或反之)。,图8-2 SPI串行总线典型时序图,2.89C51单片机串行扩展SPI外设接口的方法,(1)用一般I/O口线模拟SPI操作 对于不同的串行接口外围芯片,它们的时钟时序是不同的。,对于在时钟上升沿输入数据和在下降沿输出数据的器件,一般取时钟输出P1.1的初态为1;在允许接口芯片后,置P1.1为0。,图8-3为89C51与MCM2814(E2PROM)的硬件连接图。,P1.0模拟MCU的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端,P1.3模拟SPI的数据输入
6、端(MISO)。,用于89C51模拟SPI串行输入、串行输出和串行输入/输出的3个子程序如下。它们适用于在串行时钟的下降沿输出和上升沿输入的各种串行外围接口芯片,如A/D芯片,74系列输出芯片等。,单片机模拟1位数据输入/输出的过程:,例1.MCU串行输入子程序SPIIN 从2814的SPISO线上接收1字节数据并放入寄存器R0中。,SPIIN:SETB P1.1;使P1.1(时钟)输出为1CLRP1.2;选择从机MOVR1,#08H;置循环次数SPIN1:CLRP1.1;使P1.1(时钟)输出为0(有效)NOP;延时NOPMOVC,P1.3;从机输出SPISO送进位CRLCA;左移至累加器A
7、CCSETBP1.1;使P1.1(时钟)输出为1DJNZR1,SPIN1;判断是否循环8次(1个字节数据)MOVR0,A;1个字节数据送R0RET;返回,例2.MCU串行输出子程序SPIOUT 将89C51中R0寄存器的内容传送到2814的SPISI线上。,SPIOUT:SETBP1.1;使P1.1(时钟)输出为1CLRP1.2;选择从机MOVR1,#08H;置循环次数MOVA,R0;1个字节数据送累加器ACCSPIOT1:CLRP1.1;使P1.1(时钟)输出为0NOP;延时NOPRLCA;左移累加器ACC最高位至CMOVP1.0,C;进位C送从机输入SPISI线上SETBP1.1;使P1.
8、1(时钟)输出为1(有效)DJNZR1,SPIOT1;判断是否循环8次(1个字节数据)RET;返回,例3.MCU串行输入/输出子程序SPIIO 将89C51中R0的内容传送到2814的SPISI线上,同时从2814的SPISO接收1字节数据存入R0中。,SPIIO:SETBP1.1;使P1.1(时钟)输出为1CLRP1,2;选择从机MOVR1,#08H;置循环次数MOVA,R0;1字节数据送累加器ACCSPIO1:CLR P1.1;使P1.1(时钟)输出为0(输入有效)NOP;延时NOPMOVC,P1.3;从机输出SPISO送进位CRLCA;左移ACC最高位至C,C至ACCMOVP1.0,C;
9、进位C送从机输入SETBP1.1;使P1.1(时钟)输出为1(输出有效)DJNZR1,SPIO1;判断是否循环8次MOVR0,ARET;返回,(2)利用89C51串行口方式0实现SPI操作 常用于开关量I/O、A/D、D/A、时钟、显示及打印功能等。,串行时钟芯片 在对绝对时钟要求较高的场合使用外部时钟芯片,串行日历时钟芯片HT1380就是一个典型的器件。,图8-4 HT1380与单片机接口电路,I/O端:串行输入输出端口 RST:复位PIN,RST 为高时可以对其进行读/写操作(类似于芯片选择信号)。为低时,I/O引脚对外是高阻状态,因此它允许多个串行芯片同时挂接在串行端口上。,串行LED显
10、示接口MAX7219 MAX7219可驱动8个LED显示器,89C51与它的接口如图:,图8-5 MAX7219与单片机接口电路,单片机通过串行口以方式0与MAX7219交换信息:,TXD作为移位时钟 RXD作为串行数据I/O端 Load为芯片选择端,当Load低电平时,对7219进行读/写操作;当Load为高电平时,DIN处于高阻状态。,7219同样允许多个串行接口芯片共同使用89C51的串行口。,串行接口芯片的一般接口规律 单片机通过串行接口可以与 E2PROM、A/D、D/A芯片等连接。串行接口方式遵循:通过单片机的开关量I/O口线进行芯片选择;当芯片未选中时,数据端口处于高阻状态;与单
11、片机交换信息时,要求单片机串行口以方式0进行;传输数据时的帧格式要求先传送命令/地址,再传送数据;具有图8-7所示的时序波形。,图8-7 串行接口信号的一般时序图,扩展多个串行接口芯片时典型控制器的结构 同时扩展多个串行接口芯片的控制电路如图:,图8-8 基于串行接口控制器的电路结构图,由于单片机无并行总线扩展,节余的资源可以作为打印机输出控制、功能键、中断逻辑等电路。串行接口的使用扩展了系统的功能,并极大地利用了系统资源,且接口简单,控制器体积减小,可靠性提高。系统的软件设计与常规的单片机扩展系统类似,只是在芯片选择方面不是通过地址线完成,而是通过I/O口线来实现。,二、I2C总线,I2C总
12、线是PHILIPS公司推出的同步串行数据传输总线。在很多器件上都配备有I2C总线接口,使用时一般需要通过I2C总线进行控制。,1.I2C总线的概念,是一种具有自动寻址、高低速设备同步和仲裁等功能的高性能串行总线,能够实现完善的全双工数据传输,是总线中使用信号线数量较少的。I2C总线只有两根信号线:数据线SDA和时钟线SCL。总线传输速率 100 kb/s(改进后的规范为400 kb/s),总线驱动能力为400pF。进入I2C总线系统中的设备都带有I2C总线接口,符合I2C总线的电气规范,I2C总线上所有节点的串行数据线SDA和时钟线SCL分别与总线的SDA和SCL相连。各节点供电可以不同,但需
13、共地,SDA和SCL需分别接上拉电阻。,图8-9 I2C总线典型系统示意图,当执行数据传送时主器件:启动数据发送并产生时钟信号的器件;从器件:被寻址的任何器件;发送器:发送数据到总线上的器件;接收器:从总线上接收数据的器件。,I2C总线是多主机总线,总线上可以有两个或更多的能够控制总线的器件(多个单片机);同时I2C总线还具有仲裁功能,当一个以上的主器件同时试图控制总线时,只允许一个有效,从而保证数据不被破坏。,I2C总线的寻址采用纯软件的寻址方法。,主控发送器、主控接收器、被控发送器、被控接收器,主机先发送启动信号(和时钟),随后发送寻址字节来寻址被控器件,并规定数据传送方向。寻址字节由7位
14、从机地址(D7D1)和1位方向位(D0,读0/写1)组成。当主机发送寻址字节时,总线上所有器件都将其中的高7位地址与自己的比较,若相同,则该器件根据读/写位确定是从发送器还是从接收器。,若为从接收器,在寻址字节之后,主控发送器通过SDA线向从接收器发送信息,信息发送完毕后发送终止信号,以结束传送过程。若为从发送器,寻址字节之后,主控接收器通过SDA线接收被控发送器的发送信息。,注意:不论主控器是向被控器发送还是读取信息,被传信息的起始和终止信号以及时钟信号都是由主控器发送的。,数据传送时,图8-10 I2C总线外围扩展示意图,2.I2C总线的应用,I2C总线外围扩展示意图如图:,常用的I2C总
15、线外围通用器件、外围设备模块、接口有:SRAM、E2PROM、ADC/DAC、RTC、I/O口和DTMF等;LED、LCD驱动控制器构成的显示器等;键盘、码盘、打印机接口和LCD接口等。,I2C总线上支持多主和主从两种工作方式,在主从方式中:从器件的地址由器件编号地址和引脚地址构成 器件编号地址由I2C总线委员会分配 引脚地址决定于引脚外接电平的高低 当器件内部有连续的子地址空间时,对这些空间进行N个字节的连续读/写,子地址会自动加1。,在多主方式中,通过硬件和软件的仲裁,主控制器取得总线控制权。多数情况下系统中只有一个主器件,即单主节点,其他器件都是从器件,这时的I2C总线就工作在主从工作方
16、式。,在主从方式的I2C总线系统中,只须考虑主方式的I2C总线操作。,3.I2C总线基本知识,(1)I2C总线的接口电路结构,I2C总线中一个节点的每个电路器件都具有如图8-11所示的一个接口电路,用于与I2C总线的SDA和SCL线挂接。,SDA和SCL都是双向的,平时均处于高电平备用状态,只有当需要关闭I2C总线时,SCL线才会箝位在低电平。,图8-11 I2C总线的器件连接,图8-12 I2C总线信号的时序,(2)I2C总线信号定义,SCL=0时,SDA上的数据信号无效。即,只有当SCL=0时,SDA线上的电平状态才允许发生变化。SDA上传送的数据以起始信号START开始,停止信号STOP
17、结束,不传送数据时SCL线保持为1。当SCL=1时:SDA上发生一个由高到低的变化过程(下降沿)为起始信号;发生一个由低到高的变化过程,为停止信号。,SCL=1时,SDA上的数据才会有效(高电平为1,低电平为0);,起始信号和停止信号均由主控器(如单片机)发出,由挂接在I2C总线上的被控器(I2C总线接口的器件)检测。对不具备I2C总线接口的单片机,为了能准确检测到这些信号,必须保证在总线的一个时钟周期内对SDA进行至少两次采样。,4.I2C总线的数据传送,I2C总线上数据的传送时序如图8-13所示。,图8-13 I2C总线的数据传送字节格式,每传输一位数据都有一个时钟脉冲相对应。时钟脉冲不必
18、是周期性的,它的时钟间隔可以不同。总线备用时(“非忙”状态),SDA和SCL都为“1”;关闭I2C总线时使SCL箝位在低电平。只有当总线处于“非忙”状态时,数据传输才能被初始化。,I2C总线上传输的数据和地址字节均为8位,且高位在前,低位在后。I2C总线以起始信号为启动信号,接着传输的是地址和数据字节,数据字节是没有限制的,但每个字节后必须跟随一个应答位(0),全部数据传输完毕后,以终止信号结尾。,SCL的”线与”特性:SCL为低电平时,SDA上数据就被停止传送 当接收器接收到一个字节后无法立即接收下一个字节时,便向SCL线输出低电平而箝住SCL(SCL=0),迫使SDA线处于等待状态,直到接
19、收器准备好接收新的字节时,再释放时钟线SCL(SCL=1),使SDA上的数据传输得以继续进行。如:图中的A处,当接收器在A点接收完主控器发来的一个字节时,需要处理接收中断而无法继续接收,则被控器便可箝住SCL线为低电平,使主控发送器处于等待状态,直到被控器处理完接收中断后,再释放SCL线。,数据传输时,发送器每发完一个字节,都要求接收方发回一个应答信号(0)。应答信号的时钟仍由主控器在SCL上产生。主控发送器必须在被控接收器发送应答信号前,预先释放对SDA线的控制(SDA1),以便主控器对SDA线上应答信号的检测。,主控器发送时,被控器接收完每个字节需发回应答信号,主控器据此进行下一字节的发送
20、。如果被控器由于某种原因无法继续接收SDA上数据时,可向SDA输出一个非应答信号(1),主控器据此便产生一个Stop来终止SDA线上的数据传输。,主控器接收时,也应给被控器发应答信号。当主控器接收被控器送来的最后一个数据时,必须给被控器发一个非应答信号(1),令被控器释放SDA线,以便主控器可以发送Stop信号来结束数据的传输。,应答信号,5.I2C总线数据传输协议,(1)总线节点的寻址字节 挂接到总线上的所有器件、外设接口都是总线上的节点。在任何时刻总线上只有一个主控器件(主节点)实现总线的控制操作,对总线上的其他节点寻址,分时实现点对点的数据传送。,高7位为从机地址,最后位决定了报文的方向
21、:0 主机写信息到从机;1 主机读从机中的信息。,每个节点都有一个固定的节点地址。主机产生起始条件后,发送的第一个字节为寻址字节SLA。格式如下:,从机地址 7位地址由一个4位固定和一个可编程的部分(低3位)构成,同一总线上共可以连接8个相同的器件。固定的4位地址由I2C总线委员会分配。例如,I2C总线E2PROM AT24C的器件地址为1010,4位LED驱动器SAA1064的器件地址为0111。,可编程的3位(A2、A1和A0)由I2C总线外围器件地址端口A2、A1和A0接不同的电平信号来决定。,P206 表8-1列出了一些常用外围器件的节点地址和寻址字节。,表8-1 常用I2C接口通用器
22、件的种类、型号和寻址字节,(2)I2C总线数据传输的格式I2C总线传输数据时必须遵循规定的数据传输格式,图815 I2C总线一次完整的数据传输格式,地址字节后面是被控器发出的应答位ACK。之后是数据字节、应答位。数据字节全部传送完后,被控接收器发回一个非应答信号(1),主控器据此发送停止信号(STOP),以结束这次数据的传输。如果主机仍希望在总线上通信,可以再次产生起始信号(Sr)并寻址另一个从机,而不是首先产生一个停止信号。,以起始信号表明一次数据传送的开始;之后为被控器的地址字节,高位在前,低位在后。,总线上数据传输的多种组合方式:,主控器写数据主机向被寻址的从机写入n个数据字节,主控器读
23、数据主机从被寻址的从机读出n个数据字节,主控器读/写数据主机在一段时间内为读操作,在另一段时间内为写操作。,在一次数据传输过程中需要改变数据的传送方向。由于读/写方向有变化,起始信号和寻址字节都会重复一次,但读/写方向(R/W)相反。格式如下:,Sr为重复起始信号;data 1data n为主控器的读数据;DATA 1DATA n为主控器的写数据。,例:单片机主机读取存储器从机中某存储单元的内容。主机先向从机写入该存储单元的地址,再发一个启动位,进行读操作。,图8-16 模拟I2C总线,6.51单片机与I2C总线的接口,(1)单片机与I2C总线的硬件连接 51单片机不带I2C接口,若需控制I2
24、C总线时,可选择两个I/O口线,在软件中分别定义成SCL和SDA,连接接口如图8-16所示。,(2)51单片机对I2C总线的控制程序,原则:根据I2C总线对SDA和SCL在各个时段的时序要求,写出起始、停止、送应答位、送非应答位、检查应答位、发送一字节、接收一字节、发送N字节数据、接收N字节数据的子程序。,7.I2C总线数据传送软件包,单主系统89C51软件模拟I2C总线时序:主发送和主接收,选用图8-16所示,P1.6和P1.7作为SCL和SDA,晶振6 MHz。软件包包括:启动(STA)、停止(STOP)、发送应答位(MACK)、发送非应答位(MNACK)、应答位检查(CACK)、发送一字
25、节数据(WRBYT)、接收一字节数据(RDBYT)、发送N字节数据(WRNBYT)和接收N字节数据(RDNBYT)9个子程序。,(1)典型信号时序及信号模拟子程序,设单片机的时钟为6 MHz,相应的单周期指令的周期为2s。结合指令周期考虑时序的配合,则起始(STA)、终止(STOP)、发送应答位(MACK)、发送非应答位(MNACK)的4个模拟子程序如下:,启动I2C总线子程序STASETBSDASETBSCL;起始条件建立时间大于4.7sNOPNOPCLRSDANOP;起始条件锁定时间大于4sNOPCLRSCL;箝住总线,准备发送数据RET,停止I2C总线子程序STOP CLRSDASETB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 系统 扩展 接口 技术
链接地址:https://www.31ppt.com/p-6449707.html