320 likes | 473 Views
第 8 章 单片机小系统及片外扩展. 8-1 单片机系统扩展概述 8-2 串行扩展总线接口技术 8-3 并行扩展三总线的产生 8-4 外部存储器的扩展. 8-1 单片机系统扩展概述. 89C51 本身是一个完整的最小微机系统,若在实际应用中,片内资源不能满足系统功能要求情况下,可进行外扩。. 外扩内容: 存储器、 I/O 接口、各种管理功能器件(如定时器 / 计数器、 A/D 、 D/A 、时钟芯片、看门狗等等)。. 外扩方法: 并行扩展:选用并行操作器件,通过并行总线扩展连接。 串行扩展:选用串行操作器件,通过串行总线扩展连接。.
E N D
第8章 单片机小系统及片外扩展 8-1 单片机系统扩展概述 8-2 串行扩展总线接口技术 8-3 并行扩展三总线的产生 8-4 外部存储器的扩展
8-1 单片机系统扩展概述 89C51本身是一个完整的最小微机系统,若在实际应用中,片内资源不能满足系统功能要求情况下,可进行外扩。 • 外扩内容: • 存储器、I/O接口、各种管理功能器件(如定时器/计数器、A/D、D/A、时钟芯片、看门狗等等)。 • 外扩方法: • 并行扩展:选用并行操作器件,通过并行总线扩展连接。 • 串行扩展:选用串行操作器件,通过串行总线扩展连接。
8-2 串行扩展总线接口技术 串扩总线接口技术是指通过串行总线外扩芯片,以串行方式传输数据。 目前常用的串行总线有三种:SPI、I2C、单总线。 值得一提是: 89C51本身不具备实际意义上的SPI、I2C、单总线,但可模拟应用,且编程较麻烦。
一、SPI总线(由Motorola公司推出) • 基本概念 • SPI(Serial Peripheral Interface)总线——串行外设接口总线。用以扩展具备SPI接口的芯片。 • SPI构成: SCK —— 串行时钟线; MISO —— 主机输入/从机输出数据线; MOSI —— 主机输出/从机输入数据线; /CS —— 从机片选线。 • SPI系统可配置为主、从工作模式。以串行方式通信,8位数据同步发送和接收。
SPI系统扩展示意图 • 允许含多个单片机,但只能一个为主器件。 • 彼此的SCK、MOSI、MISO同名端相连。 • 外围器件可进行选通操作(含片选端/CS)。 • 主机可向1个或多个从器件传送控制数据,而从器件只能在主机发命令时,才能接收或向主机传送数据。 • 主机的SCK信号使传输同步。主机的MOSI/MISO=输出/输入,从机则相反。 • 数据传送高前低后,速度最高可达1.05Mb/s。 • 提供频率可编程时钟、发送结束中断标志、写冲突保护、总线竞争保护等。
89C51模拟SPI接口方法 例1:用I/O线模拟SPI,扩展一片MCM2814(带SPI接口的串行E2PROM)。 • 应用要点: • P1.1=SCK、P1.0=MOSI、P1.3=MISO、P1.2=片选控制。 • 89C51只能软件模拟串行时钟、数据输入和输出操作。 • 编程前,先搞清被扩芯片的时钟时序,不同芯片的时钟时序有所不同。通常有两种: SCK上沿输入数据,下沿输出数据。 SCK下沿输入数据,上沿输出数据。
P1.0 —— MOSI P1.1 —— SCK P1.2 —— 从机选择 P1.3 —— MISO 程序设计(适用芯片是SCK上沿写入数据,下沿读出数据): • 读子程序SPIIN • 从MCM2814中读出1字节数据放入R0。 SPIIN: SETB P1.1 :使P1.1(时钟)输出为1 CLR Pl. 2 ;选择从机 MOV R1,#08H ;置循环次数 SPIN1:CLR P1. 1 ;使P1. 1(时钟)输出为0 NOP ;延时 NOP MOV C,Pl.3 ;从机输出SPISO送进位C RLC A :左移至累加器ACC SETB Pl. 1 ;使P1. 1(时钟)输出为1 DJNZ R1,SPIN1;判断是否循环8次(1字节数据) MOV R0,A ;1字节数据送RO RET ;返回
P1.0 —— MOSI P1.1 —— SCK P1.2 —— 从机选择 P1.3 —— MISO • 写子程序SPIOUT • 将R0内容传写入MCM2814中。 SPIOUT: SETB Pl.l ;使Pi. 1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H ;置循环次数 MOV A,R0 ;1字节数据送累加器ACC SPIOT1:CLR P1. 1 ;使Pi. 1(时钟)输出为。 NOP ;延时 NOP RLC A ;左移至累加器ACC最高位至C MOV P1. 0,C ;进位C送从机输人SPISI线上 SETB P1. 1 ;使Pl. 1(时钟)输出为1 DJNZ Rl, SPIOT1;判断是否循环8次(1字节数据) RET ;返回
P1.0 —— MOSI P1.1 —— SCK P1.2 —— 从机选择 P1.3 —— MISO • 读/写子程序SPIIO。 • 将 R0内容写入MCM2814中,同时从MCM2814中读出1字节数据存入R0。 SPIIO: SETB Pl.l ;使P1. 1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H;置循环次数 MOV A,R0 ;1字节数据送累加器ACC SPIO1:CLR P1.1 ;使P1. 1(时钟)输出为。 NOP ;延时 NOP MOV C,P1.3 ;从机输出SPISO送进位C RLC A ;左移至累加器ACC最高位至C MOV P.0,C ;进位C送从机输人 SETB P1. l ;使P1. 1(时钟)输出为1 DJNZ R1,SPIO1;判断是否循环8次(1字节数据) MOV R0,A RET ;返回
例2:在89C51串口上扩展多个SPI接口芯片。 • 除打印机机外,其余都是串行接口芯片。 • 单片机用串口方式0工作。 RXD既可收又可发,但不能同时进行,RXD同时充当了主机的MOSI/MISO线功能。 • 通信时,均要求先传送命令/地址,再传送数据,大都具有如下的时序波形。编程较前例简单。
二、I2C总线(由PHILIPS公司推出) • 基本概念 • I2C构成:SDA — 数据线、SCL — 时钟线。 • 被扩器件需带I2C接口,所有节点上的SDA和SCI同名端相连。 • 允许含两个以上主机存在(必须有仲裁功能),但不能同时控制总线,只允许一个有效。 • 启动通信器件为主器件,被寻址的任何器件看作从器件。并可根据不同的工作状态分为主控发/收器、被控发/收器。
无需片选,由主机通过发送寻址字节来寻址被控器件,并规定数据传送方向。无需片选,由主机通过发送寻址字节来寻址被控器件,并规定数据传送方向。 • 寻址字节:D7~D1位为从机地址, D0位为方向位(=0读;=1写)。 • 主机发寻址字节后,线上所有器件作识别比较,若相同认为被主机寻址,并确定发送还是接收。
例1:单片机A作主控发送器向被控单片机B发信息的过程。例1:单片机A作主控发送器向被控单片机B发信息的过程。 第一步:A发送起始信号和时钟寻址B,并确立信息传送方向。 第二步:A向B发送信息,发完后再发终止信号,结束发送过程。 例2:单片机A作主控接收器向被单片机B读信息的过程。 第一步:同上。 第二步:A接收B发出的信息,收完后再发终止信号,结束接收过程。
I2C总线的应用示意图 • I2C支持带电插拔,传输速率为100~400kb/s。 • 多主方式,通过仲裁主控制器取得总线控制权。 • 主从方式(单主),只须考虑主方式的I2C操作。
I2C的接口电路结构 • 每个器件都有虚框所示的一个I2C接口电路,用于与I2C挂接。 • SDA和SCL都是双向传输线,平时均处于高电平备用状态。 • 使SCL=0,可关闭I2C总线。 • SDA和SCL线需分别接上拉电阻。
I2C总线信号定义 • 在SCL=1时,SDA线上数据才有效;反之则无效。据此,只有当SCL=0时,SDA线上的电平状态才允许发生变化。 • SDA线传送数据均以起始信号开始,停止信号结束。 • 在不送数据时SCL线保持Mark(=1)。若SDA上发生一个下降沿,即为起始信号;发生一个上升沿,即称为停止信号。 • 起始和停止信号均由主控器发出,并由被控器检测。
I2C总线的数据传送 传送格式:启动信号+地址+数据+停止信号 • 只有当总线处于备用状态时,传输才能开始。 • 启动与停止信号,由主机产生,从器件检测。 • 地址:1字节+接收器应答位。 • 数据:字节数不限制,但每字节后须跟应答位。
若接收器在接收中途需停顿时,接收器可使SCL=0,迫使SDA线处于等待状态,若继续传输,再使SCL =1。 • 发送器每发完一个字节后,都要求接收方回一个应答信号,SDA=0为应答信号(A), SDA=1为非应答信号(/A)。 • 被控器回一个A,主控器可发送下一字节。若被控器拒收可回一个/A,主控器据此可产生一个停止信号来终止数据传输。 • 当主控器接收被控器送来的最后一个数据时,必须给被控器发一个/A,令被控器释放SDA线,以便主控器可以发送停止信号来结束数据的传输。
I2C总线数据传输协议 • 总线节点的寻址字节 • 主机产生起始条件后,发送一个寻址字节。系统中的每个器件都进行地址比较。对上号的器件会应答主机的寻址。 • 从机地址由两部分构成:固定的+可编程的。 • 任何时刻只有一个主控器件实现总线操作控制,对总线上的其他节点寻址,分时实现点—点的数据传送。 • I2C上的单片机都可为主节点,其器件地址由软件给定,存放在I2C总线的地址寄存器中,称为主器件的从地址。在I2C总线的多主系统中,单片机作为从节点时,其从地址才有意义。
外围器件寻址字节SLA: • 其各位含义如下: • 器件地址(DA3DA2DA1DA0):固有地址编码,出厂给定。 • 例:I2C总线E2PROM AT24C的器件地址为1010, • 4位LED驱动器SAA1064的器件地址为0111。 • 引脚地址(A2A1A0):由地址端口A2A1A0在电路中接正或地的不同而形成的地址数据。 • 数据方向(R//W):主节点对从节点的传送方向。
I2C总线数据传输的格式 • 起始信号地址字节A (数据字节+A)N /A 停止信号,结束传输。 • 若主机仍希望在总线上通信,它可以产生重复的起始信号(Sr)并寻址另一个从机,而不是首先产生一个停止信号。
总线上数据传输有多种组合方式: (l)主控器的写数据操作格式 (2)主控器的读数据操作格式
51单片机与I2C总线的接口 应用要点: • 用两根I/O线模拟I2C总线,与从机相连。 • 确定从机地址和从机中要操作的内部单元的地址。 • 根据I2C总线数据传送格式及SDA和SCL的时序要求编写程序。
三、单总线(由Dallas公司推出) • 单总线(1 - Wire)只有一根数据输人/输出线,所有的器件都挂在这根线上。 • 如:一个由单总线构成的分布式温度监测系统。 其中,DS18S20是带有单总线接口的数字温度计集成电路,单片机对每个DS18S20通过总线DQ寻址。 DQ为漏极开路,须加上拉电阻 RP。
1KB存储器 地址存储内容 0 10011010 1 01101011 … 1023 10100111 地址 CPU 内容 读写控制 8-3 并行扩展三总线的产生 在微机系统中,系统扩展(存储器、I/O接口等)亦可用并行三总线来实现。 所谓三总线是: • 地址总线 AB:传送存储器和 I/O接口的地址信息。其宽度决定计算机最大寻址空间。 如:MCS-51有16根地址总线,寻址空间216 = 64KB • 数据总线DB:传送程序和数据的二进制代码。其宽度一般与微机的字长相同。 • 控制总线CB:传送各种控制脉冲、联络信号、状态电平等,协调各部件工作。控制总线的根数视微机控制功能的需要而定。
P1.0 V 40 1 CC P1.1 P0.0 39 2 A8~A15 P1.2 P0.1 38 3 P2口 P1.3 P0.2 37 4 P1.4 P0.3 36 5 AB总线 ALE P1.5 P0.4 35 6 A0~A7 地址 锁存器 P1.6 P0.5 34 7 P0口 P1.7 P0.6 33 8 89C51 RST/V P0.7 32 9 PD RXD P3 . 0 EA/V 、 31 10 PP 89C51 TXD P3 . 1 ALE/P ROG 30 、 11 D0~D7 INT0 P3.2 PSEN DB总线 、 29 12 INT1 P3.3 P2.7 28 、 13 T0 P3.4 P2.6 、 27 14 PSEN T1 P3.5 P2.5 、 26 15 WR P3.6 P2.4 25 、 WR 16 CB总线 RD P3.7 P2.3 24 、 17 RD XTAL2 P2.2 23 18 XTAL1 P2.1 22 EA 19 V P2.0 21 20 SS 一、MCS-51的外部三总线形成 • P0.0~P0.7:8位数据线/低8位地址线(DB0 ~DB7/AB0~ AB7)复用总线。 • P2.0~P2.7:高8位地址AB8~AB15。 • ALE:地址锁存允许控制信号。 • /PSEN:片外ROM读控制信号。 • /RD:片外RAM读控制信号。 • /WR:片外RAM写控制信号。 • /EA:片内、外ROM选择。
A8~A15 P2口 G D1 Q1 ︰ ︰ ︰ ︰ ︰ ︰ D8 Q8 OE ALE AB总线 A0~A7 373 P0口 89C51 DB总线 D0~D7 ALE CB总线 PSEN 地址 锁存 地址 锁存 WR RD 数据 有效 数据 有效 地址 输出 地址 输出 AD0~7 EA 数据 采样 数据 采样 RD/WR 地址锁存器可用 74LS373充当
ROM:只能读不能写,掉电后信息不丢失。品种包括:ROM:只能读不能写,掉电后信息不丢失。品种包括: RAM:随机存取存储器,掉电后信息自然丢失。品种包括: 掩膜ROM:信息由厂家写入。 PROM:只能一次性编程。 EPROM:可用紫外光反复擦除反复改写。 E²PROM:可用电信号进行清除和重写。 FLASH(闪速存储器):兼有E2PROM和SRAM的优点。 半导体存储器 SRAM(静态RAM ):上电信息保持稳定。特点:功耗大、容量小、速度快、价格贵。 DRAM(动态RAM):工作时信息保持不稳定要不断进行信息恢复。特点:容量大、速度较慢、价格低。 8-4 外部存储器的扩展 一、半导体存储器概述 单片系统扩展用存储器,通常都是半导体存储器芯片。
常用SRAM芯片有: 6116:2K × 8位,地址线11根A0~A10。 6264:8K × 8位,地址线13根A0~A12。 62256:32K × 8位,地址线15根A0~A14。 二、数据存储器扩展
89C51 +5V 例:89C51单片机扩展一片6264SRAM电路。 注意:RAM能读能写,必须分别用/RD、/WR进行读、写控制。
89C51 +5V 当向该片6000H单元写一个数据DATA时, 可用如下指令: MOV A, #DATA MOV DPTA, #6000H MOVX @DPTR, A 从7FFFH单元读一个数据时, 可用如下指令: MOV DPTR, #7FFFH MOVX A, @DPTR 地址范围分析: A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X X 1 1 1 1 1 1 1 1 1 1 1 1 1 第8章作业:2、3、8、10 6000H~7FFFH是一种地址范围。