第 6 章 总线接口技术

144
第6第 第第第第第第 前前 6.1 前前前前前前前前 6.2 前前前前前前前前RS-232-C 6.3 SPI 前前

Upload: kineks

Post on 21-Jan-2016

117 views

Category:

Documents


0 download

DESCRIPTION

第 6 章 总线接口技术. 前言 6 .1 串行通信基本概念 6 .2 串行通信标准总线( RS-232-C ) 6.3 SPI 总线. 第 6 章 总线接口技术. 随着微型计算机控制技术的不断发展,现在已经生产出多种专用工业控制机。这些控制机大都采用模块式结构,具有通用性强,系统组态灵活等特点,因而具有广泛的适用性。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 6 章  总线接口技术

第 6 章 总线接口技术

前言

6.1 串行通信基本概念

6.2 串行通信标准总线(RS-232-C) 6.3 SPI总线

Page 2: 第 6 章  总线接口技术

第 6 章 总线接口技术

随着微型计算机控制技术的不断发展,现在已经生产出多种专用工业控制机。这些控制机大都采用模块式结构,具有通用性强,系统组态灵活等特点,因而具有广泛的适用性。

在这些工业控制机中,除了主机板之外,还有大量的用途各异的 I/O 接口板,如 A/D 和 D/A 转换板、步进电机控制板、电机控制板、内存扩展板,串/ 并行通信扩展板、开关量输入 / 输出板等。为了使这些功能板能够方便地连接在一起,必须采用统一的总线。

微机控制技术

Page 3: 第 6 章  总线接口技术

第 6 章 总线接口技术

总线有并行和串行两种。在这一章里,主要介绍几种工业过程控制中常用的串行总线,如 RS-232-C 、 RS-422 、 RS-485 、 SPI 总线、 I2C 总线以及现场总线等。

微机控制技术

Page 4: 第 6 章  总线接口技术

第 6 章 总线接口技术

总线有并行总线和串行总线两种。( 1 )并行总线 · N 位数据一次传送,因此传送速度快。 · 需要 N 条传输线,故价格较高。主要用于模块与模块之间的连接。( 2 ) 串行总线 · 一位一位地传送,因此传送速度较慢。 · 只需一条传输线,所以价格低。该总线主要用于远距离通

信。

主要介绍几种工业过程控制中常用的串 / 并行总线。

微机控制技术

Page 5: 第 6 章  总线接口技术

6.1 串行通信基本概念

随着微型计算机技术的发展,微型机的应用正在从单机向多机过渡。多机应用的关键是相互通信。特别在远距离通信中,并行通信已显得无能为力,通常大都须采用串行通信方法。在这一节里,首先介绍串行通信的基本概念,然后介绍几种常用的串行通信总线,如 RS-232-C , RS-485 等。此外,还介绍几种单片机专用总线,如 SPI 总线, I2C 总线等。最后 , 讲一下现场总线。它的出现,使微型计算机控制系统正经历着一场新的革命。

微机控制技术

Page 6: 第 6 章  总线接口技术

6.1 串行通信基本概念

6.1.1 数据传送方式6.1.2 异步通信和同步通信

Page 7: 第 6 章  总线接口技术

6.1.1 数据传送方式

在微型计算机系统中,处理器与外部设备之间的数据传送方法有两种:

( 1 )并行通信——数据各位同时传送;( 2 )串行通信——数据一位一位地按顺序传送。如图 6.1 所示就是这两种传送方式的示意图。

微机控制技术

Page 8: 第 6 章  总线接口技术

图 6.1 并行通信与串口通信的数据传送方式

微机控制技术

Page 9: 第 6 章  总线接口技术

6.1.1 数据传送方式

如图 6.1 所示可以看出,在并行通信中,数据有多少位就需要有多少根传输线,而串行通信无论数据有多少位只需要一对传输线。因此,串行通信在远距离和多位数据传送时,有着明显的优越性。但它的不足之处在于数据传送的速度比较慢。本节主要介绍有关串行通信的基本概念。

在串行通信中,数据传送有 3 种方式:单工方式、半双工方式和全双工方式。

微机控制技术

Page 10: 第 6 章  总线接口技术

6.1.1 数据传送方式

1. 单工方式( Simplex Mode ) 在这种方式中,只允许数据按一个固定的方向传送,

如图 6.2 ( a)所示。图中 A 只能发送数据,称为发送器( Transfer); B只能接收数据,叫做接收器( Receiver)。而数据不能从 B向 A 传送。

微机控制技术

Page 11: 第 6 章  总线接口技术

6.1.1 数据传送方式

2. 半双工方式( Half-Duplex Mode ) 半双工方式如图 6.2 ( b)所示。在这种方式下,数

据既可以从 A 传向 B,也可以从 B向 A 传输。因此,A , B既可作为发送器,又可作为接收器,通常称为收发器( Transceiver)。从这个意义上讲,这种方式似乎为双向工作方式。但是,由于 A , B之间只有一根传输线,所以信号只能分时传送。

微机控制技术

Page 12: 第 6 章  总线接口技术

6.1.1 数据传送方式

即在同一时刻,只能进行一个方向传送,不能双向同时传输。因此,将其称为“半双工”方式。在这种工作方式下,要么 A 发送, B接收;要么B发送, A 接收。当不工作时,令 A , B均处于接收方式,以便随时响应对方的呼叫。

微机控制技术

Page 13: 第 6 章  总线接口技术

6.1.1 数据传送方式

3. 全双工方式( Full-Duplex Mode ) 虽然半双工方式比单工方式灵活,但它的效率依然比

较低。主要原因是从发送方式切换到接收方式需要一定的时间,大约为数毫秒。重复线路切换所引起的延迟积累时间是相当可观的。另一方面,也是更重要的,就是在同一时刻只能工作在某一种方式下,这是半双工效率不高的根本原因所在。

微机控制技术

Page 14: 第 6 章  总线接口技术

6.1.1 数据传送方式

解决的方法是增加一条线,使 A , B两端均可同时工作在收发方式,如图 6.2 ( c)所示。将图 6.2 ( c)与图 6.2 ( b)相比,虽然对每个站来讲,都有发送器和接收器,但由于图( c)中有两条传输线,用不着收发切换,因而传送速率可成倍增长。

微机控制技术

Page 15: 第 6 章  总线接口技术

图 6.2 串行数据传送方式示意图

微机控制技术

Page 16: 第 6 章  总线接口技术

6.1.1 数据传送方式

值得说明的是,全双工与半双工方式比较,虽然信号传送速度大增,但它的线路也要增加一条,因此系统成本将增加。在实际应用中,特别是在异步通信中,大多数情况都采用半双工方式。这样,虽然发送效率较低,但线路简单、实用,对于一般系统也基本够用。

微机控制技术

Page 17: 第 6 章  总线接口技术

6.1.2 异步通信和同步通信

根据在串行通信中数据定时、同步的不同,串行通信的基本方式有两种:异步通信( Asynchronous Communication)和同步通信( Synchronous Communication)。

微机控制技术

Page 18: 第 6 章  总线接口技术

6.1.2 异步通信和同步通信

1. 异步通信 异步通信是字符的同步传输技术。 数据以字符为单位传输。当发送一个字符代码时,字符前面要加一个“起始”信号,其长度为一位,极性为“0”,即空号( Space )状态;规定在线路不传送数据时全部为“ 1”,即传号( Mark)状态。字符后边要加一个“停止”信号,其长度为 1 , 1.5或 2位,极性为“ 1”。字符本身的长度为 5~ 8 位数据,视传输的数据格式而定。例如,当传送的数字(或字符)用 ASCII码表示时,其长度为 7位。在某些传输中,为了减少误码率,经常在数据之后还加一位“校验位”。 微机控制技术

Page 19: 第 6 章  总线接口技术

6.1.2 异步通信和同步通信

由此可见,一个字符由起始位( 0)开始,到停止位( 1 )结束,其长度为 7 ~ 12 位。起始位和停止位用来区分字符。传送时,字符可以连续发送,也可以断续发送。不发送字符时线路保持“ 1”状态。字符发送的顺序为先低位后高位。

综上所述,异步串行通信的帧格式,如图 6.3 所示。

微机控制技术

Page 20: 第 6 章  总线接口技术

图 6-3 异步串行通信格式

微机控制技术

Page 21: 第 6 章  总线接口技术

6.1.2 异步通信和同步通信

异步通信的优点是收 / 发双方不需要严格的位同步。也就是说,在这种通信方式下,每个字符作为独立的信息单元,可以随机地出现在数据流中,而每个字符出现在数据流中的相对时间是随机的。然而一个字符一旦发送开始,字符的每一位就必须连续地发送出去。由此可见,在异步串行通信中,“异步”是指字符与字符之间的异步,而在字符内部,仍然是同步传送。在异步通信中,由于大量增加了起始停止和校验位,所以,这种通信方式的效率比较低。其最高效率(传送 8bit数据, 1bit 停止位, 1bit 校验位)也只有 8/( 8+3 ) =73%。

微机控制技术

Page 22: 第 6 章  总线接口技术

6.1.2 异步通信和同步通信

2. 同步通信 同步通信的特点是不仅字符内部保持同步,而且,字符与字符之间也是同步的。在这种通信方式下,收 /发双方必须建立准确的位定时信号,也就是说收 / 发时钟的频率必须严格地一致。同步通信在数据格式上也与异步通信不同,每个字符不增加任何附加位,而是连续发送。但是在传送中,数据要分成组(帧),一组含多个字符代码或若干个独立的码元。

微机控制技术

Page 23: 第 6 章  总线接口技术

6.1.2 异步通信和同步通信

为使收 / 发双方建立和保持同步,在每组的开始处应加上规定的码元序列,作为标志序列。在发送数据之前,必须先发送此标志序列,接收端通过检测该标志序列实现同步。

微机控制技术

Page 24: 第 6 章  总线接口技术

6.1.2 异步通信和同步通信

标志序列的格式因传输规程不同而异。例如,在基本型传输规程中,利用国际 NO.5代码中的“ SYN”控制系统,可实现收 / 发双方同步。又如在高级数据链路规程( HDLC )中,是按帧格式传送的,利用帧标志符“ 01111110”来实现收 / 发双方的同步的。两种传送方法如图 6.4 所示。

微机控制技术

Page 25: 第 6 章  总线接口技术

图 6.4 两种同步传送格式

微机控制技术

Page 26: 第 6 章  总线接口技术

6.1.2 异步通信和同步通信

同步通信方式适合 2400 bps以上速率的数据传输。由于不必加起始位和停止位,所以,传输效率比较高。其缺点是硬件设备较为复杂,因为它要求有时钟来实现发送端和接收端之间的严格同步,因此还要用锁相技术等来加以保证。

微机控制技术

Page 27: 第 6 章  总线接口技术

6.1.2 异步通信和同步通信

例如,一种很常见的数据链路结构是 HDLC ,一般包含 48bit的控制信息、前同步码和后同步码。因此,对于一个 1000 个字符的数据块,每个帧包括48bit的额外开销,以及 1000×8=8000bit的数据,由此可求出其额外开销仅占 48/ ( 8000+48 )×100%=0.6%。

微机控制技术

Page 28: 第 6 章  总线接口技术

6.1.2 异步通信和同步通信

同步通信用于计算机到计算机之间的通信以及计算机到 CRT 或外设之间的通信等。

微机控制技术

Page 29: 第 6 章  总线接口技术

6 . 2 串行通信标准总线( RS-232-C )

1 、在进行串行通信接口设计时,主要考虑:• 接口方法• 传输介质• 电平转换。2 、标准总线及配套接口芯片• 标准总线 RS-232-C , RS-422 、 RS-485 和 20mA 电流环等。• 接口芯片 为串行接口设计带来极大的方便。 串行接口的设计主要是确定一种串行标准总线,其次是选择接口控制及电平转换芯片。

微机控制技术

Page 30: 第 6 章  总线接口技术

6 . 2 串行通信标准总线( RS-232-C )

6.2.1 RS-232-C6.2.2 RS-4856.2.3 多机通信

Page 31: 第 6 章  总线接口技术

6.2.1 RS-232-C

RS-232-C• 美国电子工业协会( E I A ) 1962 年公布, 1969 年最后一次修订而成。• 主要用途 定义计算机系统的一些数据终端设备( DTE ) 和数据通信设备( DCE )之间 接口的电气特性。 如 CRT 、打印机 与 CPU 的通信大都采用 RS-232-C 总

线。• MCS-51 系列单片机使用 RS-232-C 串行总线极为方便。

微机控制技术

Page 32: 第 6 章  总线接口技术

6.2.1 RS-232-C

1. RS-232-C 的电气特性 RS-232-C 标准( 1 )规定高电平为 +3V ~ +15V , 低电平为 -3V ~ -15V (高、低电平要求对称)。( 2 ) RS-232-C 数据线 TxD 、 RxD 的电平使用负

逻辑: 低电平表示逻辑 1 ,高电平表示逻辑 0 。( 3 )控制线均采用正逻辑, 最高能承受 ±30V 的信号电平。

微机控制技术

Page 33: 第 6 章  总线接口技术

6.2.1 RS-232-C

RS-232-C 不能直接与 TTL 电路连接 使用时必须加上适当的电平转换电路: 如: MC1488 ( TTL电平→ RS-232-C 电平) ( 电源电压为±15V或±12V ) MC1489 ( RS-232-C 电平→ TTL电平) (电源电压为 5V)

微机控制技术

特别说明

Page 34: 第 6 章  总线接口技术

补充 RS-232-C 电平转换电路

微机控制技术

Page 35: 第 6 章  总线接口技术

功能更强的 RS-232-C 的接口芯片

• 适用于手提电脑的 RS-232-C 的接口芯片: 电源( 3.3 ~ 5V ) 传输速率 几十 Kbps ~ 1 Mbps 。• 接收和发送功能集成在一块芯片上。• 一片包含多个线路驱动器( TX )和接收器( RX )。• 带 P (微处理器)监控系统。• 含 ±15kV 的静电放电保护( ESD )功能 及 IEC-1000-4-2 空隙放电保护。• 自动关断功能的芯片。• 多种封装形式,如 DIP (双列直插封装)、 SO (小型表

贴)、 SSOP (紧缩的小型表贴)、 Max (微型 Max )等。微机控制技术

Page 36: 第 6 章  总线接口技术

6.2.1 RS-232-C

工业级 RS-232-C 标准接口芯片 MAX232 。• 接收 / 发送一体化接口 两个线路驱动器( TX) 两个接收器( RX)• 16脚 DIP/SO 封装型。• 由 4 部分组成:电压倍增器、电压反向器、 发送器、接收器。

• RS-232 只需用 +5V 单电源即可

微机控制技术

Page 37: 第 6 章  总线接口技术

图 6.5 MAX220/232/232A 管脚分配及应用电路

微机控制技术

Page 38: 第 6 章  总线接口技术

6.2.1 RS-232-C

。这些芯片其收发性能与 1488/1489基本相同,只是收发器路数不同。

微机控制技术

Page 39: 第 6 章  总线接口技术

6.2.1 RS-232-C

2. RS-232-C 的应用• MCS-51 单片机内部设有串行接口,可直接利用串行

接口和 RS-232-C 电平转换芯片实现串行通信。• 串口输出和输入均为 TTL 电平,需要接 RS-232-C

的电平转换芯片。( 1 )简单的 RS-232 电路(补充) 采用 MAX232 作为电平转换。

微机控制技术

Page 40: 第 6 章  总线接口技术

图 6.7 8051 单片机串行接口电路图

微机控制技术

TTL 电平

CMOS 电平

Page 41: 第 6 章  总线接口技术

6.2.1 RS-232-C

设计:实现单片机 8031 与主机之间进行通信 , 设单片机的时钟频率是 11 MHz 。 。 要求 : 通信速率为 4800 波特。 思路:选用串行口工作在方式 1 。• 数据格式:• 通信速率: 取决于定时计数器 T1 的溢出速率和 波特率控制位 SMOD 有关。 计算公式: 波特率 = (2 /32)×( 定时器 T1 的溢出率 ) ( 5-1 )

X = 28– 20 / 11MHz / 384 ×4800 = 250 = 0FAH

微机控制技术

SMOD

T1 的溢出率 = fosc / 12 × ( 2N – X )

方式 2

波特率 = f / 64

Page 42: 第 6 章  总线接口技术

6.2.1 RS-232-C

;主程序 ORG 2000H START : MOV TMOD , #20H ;定时器 T1 为方式 2 MOV THl, #0FAH MOV TLl, #0FAH ;波特率为 4800 MOV PCON, #00H ;置 SMOD=0 SETB TRl ;启动T1 计数开始 MOV SCON, #50H ;串口方式 1 CLR RI ;清接收标志 CLR TI ;清发送标志 HERE: AJMP HERE ;模拟主程序

功 能 程 序

微机控制技术

Page 43: 第 6 章  总线接口技术

6.2.1 RS-232-C

;数据发送程序 SEDATA : MOV R0 , #20H WAIT : JNB TI , $ ;等待发送完一个字符 MOVX A ,@R0 ;取一个字符 MOV SBUF, A ;送串口 INC R0 CLR TI CJNE A , #0AH ,WAIT RET

微机控制技术

将外存中地址为 20H 开始的 10 个单元的数据以查询方式输出

Page 44: 第 6 章  总线接口技术

6.2.1 RS-232-C

;接收子程序RVDATA : MOV R0, #20HRXDW: JNB RI , $ CLR RI MOV A . SBUF MOVX @Ro, A INC R0 CJNE A , #0AH , RXDW RET

微机控制技术

Page 45: 第 6 章  总线接口技术

6.2.1 RS-232-C

在实际工程中 :① 发送子程序是可以实际应用的 只要数据准备好后即可调用。② 接收子程序来说,概念上可以理解,但并不实用。 原因是通信对方何时发来数据是不可知的。③ 在实时性要求不高的应用中, 发送采用查询方式而接收采用中断方式工作。④ 在要求高的场合发和收都要采用中断工作。

微机控制技术

关于上述程序的说明

Page 46: 第 6 章  总线接口技术

( 2 )单片机双机通信

Page 47: 第 6 章  总线接口技术

① 参数计算波特率( 2SMOD/32 )(定时器 T1 的溢出率)

定时器 T1 的溢出率 fOSC/12 (2nX)

• 计数器 T1 的初值:• X2n2SMODfOSC/384波特率• 设 SMOD0, fOSC 为 11MHz,波特率为 4800b/s,则可计算出初值 X250FAH

Page 48: 第 6 章  总线接口技术

② 程序设计• ;主程序• ORG 2000H• START : MOV TMOD , #20H ;定时器 T1 为

方式 2• MOV THl, #0FAH• MOV TLl, #0FAH ;波特率为 4800• MOV PCON, #00H ;置 SMOD0• SETB TRl ;启动 T1 计数开始• MOV SCON, #50H ;串口方式 1• MOV R0,#20H ;发送缓冲区首址

MOV R1,#40H ;接收缓冲区首址

• SETB EA ;开中断• SETB ES ;允许串行口中断• LCALL SOUT ;先输出一个字符• HERE: AJMP HERE ;模拟主程序

Page 49: 第 6 章  总线接口技术

• ;中断服务程序• ORG 0023H ;串行中断入口• LJMPSBR1 ;转至中断服务程序• ORG 0100H• SBR1 : JNB RI , SEDATA ;不是接收则转发

送• LCALL SINDATA ;转接收• SJMPNEXT ;转至程序出口

Page 50: 第 6 章  总线接口技术

• ;数据发送程序• SEDATA : MOV R0 , #20H• WAIT : JNB TI , $ ;等待发送完

一个字符• MOVX A ,@R0 ;取一个字符• MOV SBUF, A ;送串口• INC R0• CLR TI• CJNE A , #0AH ,WAIT• RET

Page 51: 第 6 章  总线接口技术

• ;接收子程序• RVDATA : MOV R0, #20H• RXDW: JNB RI , $ • CLR RI• MOV A , SBUF• MOVX @R0, A• INC R0• CJNEA , #0AH, RXDW• RET

Page 52: 第 6 章  总线接口技术

( 2 )单片机与 PC 机之间的通信

Page 53: 第 6 章  总线接口技术

• 单片机 AT89S52 的主要工作于方式 1 ,通过查询接收中断位 RI 和发送完毕中断位 TI实现数据的可靠传输。

• 串行中断服务程序用于接收数据。如果接收到 0FFH,表示上位机需要联机信号,单片机发送 0FFH作为应答信号;如果接收到数字 1~n,表示相应的功能。

• 假设收到‘ 1’,单片机向 PC 机发送字符‘ a’;如果收到‘ 2’,单片机向 PC 机发送字符‘ k’; 如果收到其他数据,单片机向 PC 机发送字符‘m’。

Page 54: 第 6 章  总线接口技术

ORG 0000H• LJMPMAIN• ORG 0023H ;串行中断服务程序• LJMPSINT• ORG 0100H• MAIN : MOV SP , #60H;设置堆栈• MOV TMOD , #20H;设置T1 工作方

式 2• MOV TH1 , #0F3H ;定时器重装值• MOV TL1 , #0F3H ;定时器初值,波特率 2400

• MOV PCON , #00H ;波特率不倍增

Page 55: 第 6 章  总线接口技术

• MOV SCON , #50H ;设置串口工作方式 1 ,REN=1 允许接收

• SETBES ;允许串行中断• SETB EA ;允许总的中断•• SETB TR1 ;定时器开始工作• HERE: SJMP HERE ;模拟主程序

Page 56: 第 6 章  总线接口技术

• ;串行中断服务程序SINT : CLR ES ;禁止串行中断• CLR RI ;清除接收标志位• MOV A , SBUF ;从缓冲区取出数据• MOV DPTR , #TABLE• CJNE A , #0FFH , IN1 ;检查数据• MOV SBUF, #0FFH ;收到 0FFH ,发送联

机信号• JNB TI , $ ;等待发送完毕• CLR TI ;清除发送标志• SETB ES ;允许串行中断• RETI

Page 57: 第 6 章  总线接口技术

• ;发送“ a”• IN1 : CJNE A , #01H, IN2 ;如果收到 1• MOVC @A+DPTR• MOV SBUF, A ;发送‘ a’• JNB TI , $ ;等待发送完毕• CLR TI ;清除发送标志• SETBES ;允许串行中断• RETI

Page 58: 第 6 章  总线接口技术

;发送“ k”• IN2 : CJNE A , #02H, IN3 ;如果收到 2• MOVC @A+DPTR• MOV SBUF, A ;发送‘ k’• JNB TI , $ ;等待发送完毕• CLR TI ;清除发送标志• SETBES ;允许串行中断• RETI

Page 59: 第 6 章  总线接口技术

• ;发送“m”

• IN3 : MOV A , #03H ;如果收到 3• MOVC@A+DPTR• MOV SBUF, A ;发送‘m’• JNB TI , $ ;等待发送完毕• CLR TI ;清除发送标志• SETB ES ;允许串行中断• RETI• TABLE : DB ‘2’,‘a’,‘k’,‘m’• END

Page 60: 第 6 章  总线接口技术

6.2.1 RS-232-C

3. RS-232-C 机械特性及引脚的功能 RS-232-C 标准总线为 25 条线, 分为两类 :• 信息: TxD 和 RxD;• 联络信号。

微机控制技术

Page 61: 第 6 章  总线接口技术

6.2.1 RS-232-C

( 1 )传送信息信号 ● 2 发送数据 TxD ( Transmitting Data)● 3 接受数据 RxD ( Receive Data)( 2 )联络信号这类信号共有 6个:● 4请求传送信号 RTS ( Request To Send )● 5清除发送 CTS ( Clear To Send )● 数据准备就绪 DSR ( Data Set Ready)● 数据终端就绪信号 DTR ( Data Terminal Ready)● 数据载波检测信号 DCD ( Data Carrier Detect)● 振铃指示信号 RI ( Ring Indication)

微机控制技术

Page 62: 第 6 章  总线接口技术

6.2 . 2 RS-422/RS-485

RS-232-C虽然使用很广,但由于推出时间比较早,所以在现代通信网络中已暴露出明显的缺点,主要表现在:

( 1 )传送速率不够快。( 2 )传送距离不够远,一般不超过 15m 。( 3 ) RS-232-C未明确规定连接器,因而出现了互不兼容的 25芯连接器。

( 4 )接口使用非平衡发送器,电器性能不佳。( 5 ) 接口处各信号间容易产生串扰。

微机控制技术

Page 63: 第 6 章  总线接口技术

6.2 . 2 RS-422/RS-485

所以,近几年 EIA作了部分改进,于 1977年,制定了新标准 RS-449,与 RS-449一起推出的还有RS-423-A 和 RS-422-A 。实际上,它们都是 RS-449标准的子集。下边主要介绍 RS-423-A 和 RS-422-A

微机控制技术

Page 64: 第 6 章  总线接口技术

1. RS-423-A/RS-422-A

与 RS-232-C类似, RS-423-A也是一个单端的、双极性电源的电路标准但它提高了传送设备的传送数据速率。在速率为 1000 波特时,距离可达 1200m ,在速率为 100 k 波特时,距离可达 90m 。

RS-423-A/RS-422-A也是负逻辑且参考电平为地,但不同的是 RS-232-C规定为 -5+15V,而这两个标准规定为 -6+6V。

微机控制技术

Page 65: 第 6 章  总线接口技术

RS-422-A规定了差分平衡的电气接口,它能够在较长距离明显地提高数据传送速率,

传输速率 1200m 100 k 波特, 12m 10M波特。

微机控制技术

Page 66: 第 6 章  总线接口技术

6.2 . 2 RS-422/RS-485

( a)为 RS-232-C ,单端驱动单端接收电路,只用一根导线,是最简单的连接结构。但无法区分有用信号及干扰信号。

( b) RS-423-A ,差分电路接收器,接受器的另一端接发送端的信号地,(因而大大地减少了地线的干扰。

( c) RS-422-A,平衡驱动和差分接收方法,从根本上消除了地线干扰。 RS-423-A/RS-422-A 的另一个优点是允许传送线上连接多个接收器。

微机控制技术

Page 67: 第 6 章  总线接口技术

6.2 . 2 RS-422/RS-485

RS-423-A/RS-422-A 的另一个优点是允许传送线上连接多个接收器。虽然在 RS-232-C 系统中可以使用多个接收器循环工作,但它每一时刻只允许一个接收器工作。而 RS-423-A/RS-422-A 可允许 10 个以上接收器同时工作。关于多站连接方法将在下一小节讲述。

微机控制技术

Page 68: 第 6 章  总线接口技术

2. RS-485

RS-485 与 RS-422 总线的的区别:⑴RS-422 为全双工,而 RS-485 为半双工;⑵RS-422 采用两对平衡差分信号线, RS-485 只需其

中的一对。 RS-485更适合于多站互连,一个发送驱动器最多可

连接 32个负载设备。

微机控制技术

Page 69: 第 6 章  总线接口技术

6.2 . 2 RS-422/RS-485

负载设备可以是被动发送器、接收器和收发器。此电路结构在平衡连接电缆两端有终端电阻,在平衡电缆上挂发送器、接收器或组合收发器。

两种总线的连接方法如图 6-9所示。

微机控制技术

Page 70: 第 6 章  总线接口技术

图 6-8 RS-485/RS-422 接口连接方法

微机控制技术

Page 71: 第 6 章  总线接口技术

6.2 . 2 RS-422/RS-485

图( a )为 RS-485 连接电路。在此电路中,某一时刻只能有一个站可以发送数据,而另一个站只能接收。因此,其发送电路必须由使能站加以控制。

图( b )由于是双工连接方式,故任一时刻两站都可以同时发送和接收。

微机控制技术

Page 72: 第 6 章  总线接口技术

对于一个通信子站来讲, RS-422 和 RS-485 的驱动 / 接收电路没有多大差别,详见表 6.1 。

和 RS-232-C 标准总线一样, RS-422 和 RS-485 两种总线也需要专用的接口芯片完成电平转换。下边介绍一种典型 RS-485/RS-422 接口芯片。

微机控制技术

Page 73: 第 6 章  总线接口技术

表 6.1 RS-422 与 RS-485 的比较

RS-422 RS-485

动作方式 差动方式 差动方式可连接的台数 1台驱动器

10台接收器 32台驱动器32台接收器

最大距离 1200m 1200m

传送速率的最大值

12m 10Mbps 10Mbps

120m 1Mbps 1Mbps

1200m 100Mbps 100Mbps

同相电压的最大值 +6V -0.25V +12V -7V

同相电压的最大值

无负载时 ±5V ±5V

有负载时 ±2V ±1.5V

接 口 项 目

微机控制技术

Page 74: 第 6 章  总线接口技术

表 6.1 RS-422 与 RS-485 的比较 (续 )

驱动器的输出阻抗

POWER-ON

没有规定 ±100A 最大-7V≤Vcom≤12V

(高阻抗状态)

POWER-OFF

±100A 最大 -0.25V≤Vcom≤6V

±100A 最大-7V≤Vcom≤12V

接收器输入电压范围

-7V ~ +7V -7V ~ +12V

接收器输入敏感度 ±200mV ±200mV

接收器输入阻抗 >4k >12k

微机控制技术

Page 75: 第 6 章  总线接口技术

6.2 . 2 RS-422/RS-485

MAX481E/MAX488E是低电源(只有 +5V) RS-485/RS-422收发器。每一个芯片内都含有一个驱动器和一个接收器,采用 8脚 DIP/SO封装。除了上述两种芯片外,和 MAX481E相同的系列芯片还有 MAX483E/485E/487E/1487E等等,和 MAX488E相同的有MAX490E。这两种芯片的主要区别是前者为半双工,后者为全双工。它们的管脚分配及原理如图 6-10所示。

微机控制技术

Page 76: 第 6 章  总线接口技术

图 6-9 MAX481E/488E结构及管脚图

微机控制技术

Page 77: 第 6 章  总线接口技术

6.2 . 2 RS-422/RS-485

从图 6-10可以看出, (a)、 (b)两种电路共同点是都有一个接收输出端 RO ,和一个驱动输入端 DI 。不同的是,图 (a)中只有两个信号线, A 和 B 。 A为同相接收器输入和同相驱动器输出; B为反相接收器输入和反相驱动器输出。而在 (b)图中,由于是双工的,所以信号线分开,为 A 、 B、 Z、 Y。这两种芯片由于内部都含有接收器和驱动器,所以每个站只用一片即可完成收发任务。其接口电路如图 6-10所示。

微机控制技术

Page 78: 第 6 章  总线接口技术

6.2 . 2 RS-422/RS-485

MAX481E/483E/485E/487E/491E和 MAX1487E是为多点双向总线数据通讯而设计的。如图 6-12和 5-13 所示,也可以把它们作为线路中继站,其传送距离超过 1200m 。

微机控制技术

Page 79: 第 6 章  总线接口技术

图 6.11 MAX481E/MAX488E 连接电路图 a

微机控制技术

Page 80: 第 6 章  总线接口技术

图 6.10 MAX481E/MAX488E 连接电路图 b

微机控制技术

Page 81: 第 6 章  总线接口技术

图 6-11 MAX481E/483E/485E/487E/1487E典型的 RS-485半双工网络

微机控制技术

Page 82: 第 6 章  总线接口技术

图 6-12 MAX488E/489E/490E/MAX491E全双工 RS-485网络

微机控制技术

Page 83: 第 6 章  总线接口技术

6.2.3 多机通信

Page 84: 第 6 章  总线接口技术

▲多机通信设单片机工作于方式 2或 3 ,该方式发送数据格式每一帧是 11 位,如图 6.14 所示。▲ 1 位是起始位( 0), 8 位数据位(低位在前), 1

位可设置的第 9位数据和 1 位停止位。▲其中,第 9位可识别发送的前 8 位数据是数据帧还

是地址帧,该位为 1 为地址帧,为 0 则为数据帧,此位可通过对 SCON寄存器的 TB8 位赋值来置位。▲当TB8 为 1 时,单片机发出的一帧数据中第 9位为

1 ,否则为 0。

Page 85: 第 6 章  总线接口技术

• 作为接收方(本例为从机)的串行口也同样工作在工作方式 2 和方式 3状态,它的 SM2 和 RB8 (接收到的第 9位)的组合是:

• ( 1 )若从机的控制位 SM2 设为 1 ,则当接收数据的第 9位为 1 时,即地址帧时,数据装入 SBUF,并置 RI 为 1 ,向 CPU发出中断申请;则当接收数据的第 9位为 0时,即数据帧时,不会产生中断,信息被丢弃。

• ( 2 )若从机的控制位 SM2 设为 0,则无论是地址帧还是数据帧都将产生 RI=1 的中断标志, 8 位数据均装入 SBUF。

Page 86: 第 6 章  总线接口技术
Page 87: 第 6 章  总线接口技术

1 .系统硬件设计

Page 88: 第 6 章  总线接口技术

单片机 P1 口的低 5 位作为地址译码线,因此,可以译出 32个地址,其二进制数为00000 ~ 11111 。每个从机的地址可以通过拨动拨码开关的位置来设定。

Page 89: 第 6 章  总线接口技术

2 .系统软件设计通信过程:• ( 1 )主机处于发送状态。由于是发送状态,所以 SM

2=0或 SM2=1 均可,首先发送的是地址帧,此时 SCON中的TB8=1 ,表示发送的是地址标识。

• ( 2 )主机发送地址标识后,设置 SM2=1 ,主机处于接收地址的状态,等待从机的应答。

• ( 3 )所有的从机都处于接收状态,他们会同时收到主机发来的地址码,分别与各自的地址码比较后,只有与主机发送的地址相符的的从机才进行下一步的应答处理,其余各从机仍处于接收状态。

Page 90: 第 6 章  总线接口技术

( 4 )地址相符的的从机进行应答,使自己的 SCON中的 TB8=1 ,向主机发送自己的标识码,然后置 SCON中的 SM2=0 ,进入数据接受状态。

• ( 5 )主机收到从机发送的地址标识码,至此,通信双方握手成功。

• ( 6 )主机设置 SM0=0 ,主机开始发送数据或数据块,发送结束后,主机返回到初始状态。

• ( 7 )因为只有和主机地址标识符相符的从机才能接收到数据,接收完后,将根据最后的校验结果判断数据接收是否正确,若正确,则向主机发送数据正确信号。然后,从机也返回初始状态。此时,一次通信完成。

Page 91: 第 6 章  总线接口技术

图 6.16 主机程序流程图

Page 92: 第 6 章  总线接口技术

图 6.17 从机程序流程图

Page 93: 第 6 章  总线接口技术

6. 3 SPI 总线

① 串行总线系统依靠一定的通信协议,只用很少几根线,就 能完成有效的数据传送。

微机控制技术

② 常见的串行接口总线• Motorola 公司的 SPI ( Serial Peripheral Interface)总线、• PHILIPS 公司的 I2C 总线、• 国家半导体公司的 NS8085U ,• Microwire 、 Intel 和 Duracell 公司提出的 SMBus ( System Management Bus )等。 在这一节里,主要介绍 SPI 总线。

系统处理

Page 94: 第 6 章  总线接口技术

6. 3 SPI 总线

• SPI 是 增强型单片机 MC68HC70508A ( Motorola )的上的串行接口。

• 能与外部设备进行全双工、同步串行通信。• 其功能类似MCS-51 系列单片机串行口中的方式 0 。• 关于 MC68HC70508A 单片机的详细内容请参看 Motorola 公司的有关资料。

微机控制技术

Page 95: 第 6 章  总线接口技术

6. 3 SPI 总线

SPI具有如下特点:1. 全双工操作2. 主从方式3. 有 4 种可编程主方式频率(最大为 1.05MH

z )4. 最大从方式频率为 2.1 MHz5. 具有可编程极性和相位的串行时钟6. 有传送结束中断标志7. 有写冲突出错标志8. 有总线冲突出错标志 不为低。

微机控制技术

Page 96: 第 6 章  总线接口技术

6. 3 SPI 总线

6.3.1 SPI的内部结构6.3.2 SPI的工作原理6.3.3 多机SPI系统6.3.4 串行时钟的极性和相位6.3.5 SPI中断6.3.6 直接采用SPI总线接口芯片的应用6.3.7 SPI总线模拟程序设计

Page 97: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构图 6.14 SPI 接口内部结构

SPI 接口的内部结构图如 6.18 所示。

微机控制技术

Page 98: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

从图 6.14 中可以看出, SPI 接口由 SPI移位寄存器、SPI 控制电路、管脚控制逻辑、除法器、时钟逻辑以及控制寄存器( SPCR )、状态寄存器( SPSR )、数据寄存器( SPDR )等组成。 SPI 移位寄存器主要完成串 / 并数据之间的转换;管脚控制逻辑主要控制 PD2/MISO , PD3/MOSI , PD4/SCK以及 PD5/ 4个管脚的工作方式;除法器则是系统时钟的分频器,由程序控制选择 4 种不同的时钟频率; SPI 控制电路用来控制串行工作状态及错误信息; 3个 SPI寄存器SPCR , SPSR 和 SPDR ,主要用来保存各种状态信息及数据。

微机控制技术

Page 99: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

1. SPI 数据寄存器( SPDR ) 图 6.15 所示的 SPDR 是用于 SPI 所接收字符

的读缓冲器。写一个字节到 SPDR 中,就是把该字节直接放入 SPI移位寄存器。

微机控制技术

Page 100: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

2. SPI 控制寄存器( SPCR ) SPCR 各位的功能如图 6.16 所示。• SPCR 具有下列功能:• 允许 SPI 中断请求;• 允许 SPI ;• 设置 SPI 为主或从方式;• 选择串行时钟极性、相位和频率。

微机控制技术

Page 101: 第 6 章  总线接口技术

图 6.15 SPI 数据寄存器( SPDR )图 6.16 SPI 控制寄存器( SPCR )

图 6.19 SPI 数据寄存器( SPDR )

图 6.20 SPI 控制寄存器( SPCR )微机控制技术

Page 102: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

图 6.20所示的 SPCR寄存器各位的功能: SPIE——SPI 中断允许位,该读 /写位允许 SPI 中断。复位时该位被清零。该位置“ 1”,表示允许 SPI 中断;置“ 0”表示禁止 SPI 中断。

SPE——SPI复位允许位,该读 /写位允许 SPI复位。复位时该位将被清零。该位为 1 时,允许 SPI复位;为 0时禁止 SPI复位。

MSTR—— 主机位,该位用来选择主 / 从工作方式。复位时为零。该位为 1 时,选择主方式;为 0时,选择 从方式。

微机控制技术

Page 103: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

CPOL—— 时钟极性位,该读 /写位决定各发送数据之间 PD4/SCK管脚的状态。为了在 SPI 总线上传送数据,各 SPI 必须有相同的 CPOL位,复位不影响 CPOL位。该位为 1 时表示传送数据间 PD4/SCK管脚为逻辑 1 ,为 0时表示传送数据间 PD4/SCK管脚为逻辑 0。

CPHA—— 时钟相位位。该读 /写位用来控制串行时钟和数据之间的时序关系。

微机控制技术

Page 104: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

为了在 SPI 总线上传送数据,各 SPI 之间必须有相同 CPHA 位。复位时对该位没有影响。 该位等于 1 时,表示 PD4/SCK上第一个有效沿后的下一个有效沿锁存数据。该位为 0时,表示 PD4/SCK上第一个有效沿锁存数据。

微机控制技术

Page 105: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

SPR1 和 SPR0 ——SPI 时钟速率位。这些读 /写位用来选择主方式的串行时钟速率,如表 6.2 所示。从 SPI 的这两位对串行时钟无影响。

微机控制技术

Page 106: 第 6 章  总线接口技术

表 6.2 SPI 时钟速率选择表

SPR1 SPR0 时钟因子 传输速率

位时间

0 0 内部时钟÷2 1MHz 1μs 0 1 内部时钟÷4

500kHz

2μs

1 0 内部时钟÷16

125kMHz

8μs

1 1 内部时钟÷32

62.5kHz

16μs

微机控制技术

Page 107: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

3. SPI状态寄存器( SPSR )图 6.17所示为 SPSR 中的标志位。在下列条件下,将

产生置位信号: SPI 发送完毕 写冲突 方式错

图 6.21 SPI状态标志寄存器( SPSR )

微机控制技术

Page 108: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

其中: SPIF——SPI 标志位。该位是可清除的位,并且只能读,不能写。每当移出或移入到移位寄存器中一个字节时,该位被置位。如果 SPCR 中的 SPIE也是置位状态,则 SPIF产生一个中断请求。当 SPIF 置位时通过读 SPSR 可以清除 SPIF,然后读(或写) SPDR 。复位时该位被清除。该位为 1 时,表示传送完毕。该位为 0时,表示传送未完。

微机控制技术

Page 109: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

WCOL——写冲突位。和 SPIF一样,该位也是可清除的位,并且只能读,不能写。在传送过程中,软件对 SPDR 进行写时,该位置位。当WCOL 置位时,可以用读 SPSR 的方法清除这一位;可以读和写 SPDR ,复位也将清除该位。该位置 1 ,表示写 SPDR 无效。该位置 0,表示写 SPDR 有效。

微机控制技术

Page 110: 第 6 章  总线接口技术

6.3.1 SPI 的内部结构

MODF—— 方式错位。该位也是只读并可清除位。当MSTR 位置位时,在 PD5/管脚上产生逻辑 0时, MODF被置位。如果此时 SPIF位也被置位,则MODF产生一个中断请求。清除及复位对它的影响同WCOL位。

该位置 1 ,当MSTR 位置位时, PD5/ 为低;该位置0,当MSTR 位置位时, PD5/ 不为低。

微机控制技术

Page 111: 第 6 章  总线接口技术

6.3.2 SPI 的工作原理

• 主 /从式 SPI 允许在主机与外围设备(包括 CPU )之间进行串行通信。

• 当主机的 SPI 8 位移位寄存器把一个字节传送到另一设备时,来自接收设备的一个字节也被送到主机 SPI 的移位寄存器。

• 主 SPI 的时钟信号与数据传送是同步的。

微机控制技术

Page 112: 第 6 章  总线接口技术

6.3.2 SPI 的工作原理

• 只有主 SPI 可以对传送过程初始化。• 软件通过写入 SPI 数据寄存器( SPDR )的方法开始从

主 SPI 传送数据。• 在 SPI 传送过程中, SPDR 不能缓冲数据,写到 SPI

的数据直接进入移位寄存器,并在串行时钟控制下立即开始传送。

• 当经过 8 个串行时钟脉冲以后, SPI 标志开始置位时,传送结束。同时 SPIF 置位,从接收设备移位到主 SPI的数据被传送到 SPDR 。因此, SPDR 所缓冲的数据是SPI 所接收的数据。在主 SPI 传送下一个数据之前,软件必须通过读 SPDR清除 SPIF标志位,然后再执行。微机控制技术

Page 113: 第 6 章  总线接口技术

6.3.2 SPI 的工作原理

在从 SPI 中,数据在主 SPI 时钟控制下进入移位寄存器,当一个字节进入从 SPI 之后,被传送到 SPDR 。为了防止越限,从机的软件必须在另一个字节进入移位寄存器之前,先读 SPDR 中的这个字节,并准备传送到 SPDR 中。

图 6.22 所示表示主 SPI 与从 SPI 进行数据交换的过程。

微机控制技术

Page 114: 第 6 章  总线接口技术

图 6.18 主机 /从机数据传送方法

微机控制技术

Page 115: 第 6 章  总线接口技术

6.3.2 SPI 的工作原理

从图 6.22 可以看出,实际上可以把两个 8 位的主、从寄存器看成一个循环的 16 位的寄存器。在传输时,只需这个 16 位寄存器循环移位 8 次,即可完成一次数据交换。

微机控制技术

Page 116: 第 6 章  总线接口技术

6.3.2 SPI 的工作原理

当主 CPU进入停止方式时,波特率发生器停止工作,进入所有主方式 SPI操作。如果在 SPI 传送时执行 STOP指令,则发生器暂停,直到 IRQ管脚为低电平退出停止方式时为止。如果用复位来退出停止方式,SPI 控制和状态位被清除,并且 SPI被禁止。

微机控制技术

Page 117: 第 6 章  总线接口技术

6.3.2 SPI 的工作原理

在执行 STOP指令时,如果主 CPU是在从方式下,从 SPI将继续运行,并仍能接收数据和时钟信息,以及把本身的数据返回到主机。对于从 SPI ,在传送结束时不置标志位,直到 IRQ信号唤醒 CPU为止。

值得注意的是,虽然从 SPI 在停止方式时可以与主 SPI交换数据,但从 SPI 的状态位在停止方式时是无效的。

微机控制技术

Page 118: 第 6 章  总线接口技术

1. 主方式下的管脚功能

设 SPI 控制寄存器( SPCR )中的 MSTR 位为 SPI 主方式。在主方式下 SPI管脚功能如下: PD4/SCK(串行时钟)——在主方式下, PD4/SCK管脚是同步时钟输出。 PD3/MOSI (主输出,从输入)——在主方式下, PD3/MOSI管脚是串行输出。 PD2/MISO (主输入,从输出)——在主方式下, PD2/MISO管脚为串行输入。

微机控制技术

Page 119: 第 6 章  总线接口技术

2. 从方式下的管脚功能

清除 SPCR 中的 MSTR 位,使 SPI 工作于从方式,在从方式下 SPI 的管脚功能如下: PD4/SCK(串行时钟)——在从方式下, PD4/SCK管脚是从主机 SPI来的同步时钟信号的输入端; PD3/MOSI (主输出,从输入)——在从方式下,该管脚为串行输入端; PDI/MIS0(主输入,从输出),在从方式下,该管脚为串行输出端。 PD5/ (从选择)——在从方式下,该管脚用做来自主 SPI 的数据和串行时钟接收的使能端。

SS

微机控制技术

Page 120: 第 6 章  总线接口技术

1. 主方式下的管脚功能

PD5/ (从选择)——在主方式下, PD5/ 管脚用来保护在主方式下两个 SPI 同时操作时所引起的冲突。主机 PD5/ 管脚上的逻辑 0禁止 SPI ,清除 MSTR位,并产生方式错误标志( MODF)。

SS SS

SS

微机控制技术

Page 121: 第 6 章  总线接口技术

6.3.2 SPI 的工作原理

当 CPHA=0时,移位时钟是 与 SCK相或。在此时钟相位方式下, 必须在 SPI 信息中的两个有效字符之间为高电平。

当 CPHA=1 时, 线在有效的传输之间保持低电平。这一格式多出现在有一个单独的、固定的主机和一个单独的从驱动MISO 数据线的系统中。

SS

SS

SS

微机控制技术

Page 122: 第 6 章  总线接口技术

6.3.3 多机 SPI 系统

多机 SPI 系统的连接方法有网络型总线方式、菊花链式方式两种。

1. 网络型总线方式2. 菊花链方式

微机控制技术

Page 123: 第 6 章  总线接口技术

1. 网络型总线方式

在网络型总线方式主 SPI 系统中,所有的 PD4/SCK,PD3/MOSI 和 PD2/MISO 同名管脚均连在一起。在传送数据之前,一个 SPI作为主机,其他均为从机,图6.19所示是网络型总线方式主 SPI 系统的原理框图。

事实上,一个系统中也可以有两个主机。一个由两个主 SPI 和三个从 SPI 组成的多 SPI 系统的原理,如图6.20所示。

微机控制技术

Page 124: 第 6 章  总线接口技术

图 6.23 一个主机和三个从机系统的原理框图

微机控制技术

Page 125: 第 6 章  总线接口技术

图 6.24 两个主 SPI 和三个从 SPI 系统原理框图

微机控制技术

Page 126: 第 6 章  总线接口技术

2. 菊花链方式

在菊花链式连接系统中,所有的时钟和选择线都连在一起,一个设备的输出端连到后一个设备的输入端。菊花链上的设备数原则上可以任意多。该方法的原理,如图 6.25 所示。

微机控制技术

Page 127: 第 6 章  总线接口技术

图 6.21 菊花链式多 SPI 系统

微机控制技术

Page 128: 第 6 章  总线接口技术

6.3.4 串行时钟的极性和相位

为了适应外部设备不同串行通信的要求,可以用软件改变 SPI 串行时钟的相位和极性。

SPCR 中时钟的极性位( CPOL)和时钟的相位位( CPHA )用来控制串行时钟和传送数据间的时间关系。图 6.22 所示表示 CPOL和 CPHA 位与时钟 /数据之间的关系。

微机控制技术

Page 129: 第 6 章  总线接口技术

图 6.26 SPI 时钟 / 数据时序图

微机控制技术

Page 130: 第 6 章  总线接口技术

6.3.5 SPI 中断

SPI 有两个中断源:( 1 ) SPI 传送完中断—— SPI状态寄存器中的 SPI 标志位

( SPIF)表示 SPI 传送数据结束。当数据移入或移出 SPI寄存器时, SPIF开始置位。如果 SPIE也置位,则 SPIF产生中断请求。

( 2 ) SPI 方式错中断—— SPI状态寄存器中的方式错状态位( MODF)置位,表示 SPI 方式错。当 SPI 控制寄存器( SPCR )中的主机位( MSTR )置位, PD5/管脚为逻辑 0时,MODF开始置位。如果 SPIE也置位,则MODF产生中断。

微机控制技术

Page 131: 第 6 章  总线接口技术

6.3.5 SPI 中断

SPCR 中的 SPI 中断允许位( SPIE)是两个中断的屏蔽控制位。只有当该位置位时,才允许中断。否则,即使上述两个中断位,即 SPIF和 MODF 置位,也不能产生中断。

微机控制技术

Page 132: 第 6 章  总线接口技术

6.3.6 直接采用 SPI 总线接口芯片的应用

MC68HC70508A 中的 SPI 总线数据格式一般为8 位。但不是所有的外设都是 8 位的,如串行 A/D或D/A 转换器除了 8 位外,还有 10, 12 , 14或 16位的。因此,在 SPI 串行通信系统中,一定要注意串行通信的格式。

图 6.27为 SPI 接口与单个外设连接示意图。图中( a)为与 A/D 转换器的连接图;( b)为与 D/A 转换器的接线图。要特别注意图中数据线 MISO 和MOSI 的连接。图中, MAX1242/1243 为 10位串行A/D 转换器; MAX5150/5151 为 13 位电压输出型 D/A 转换器。

微机控制技术

Page 133: 第 6 章  总线接口技术

图 6.27 SPI 与单个外设连接系统图

微机控制技术

Page 134: 第 6 章  总线接口技术

6.3.6 直接采用 SPI 总线接口芯片的应用

在同一个 SPI 系统中,有时需要多个从设备,此时可以采用总线式或采用菊花链式结构,图 6.28 和图 6.29为一个主机和 3个从机( D/A )分别采用两种不同的连接方法的示意图。

微机控制技术

Page 135: 第 6 章  总线接口技术

图 6.28 SPI 与 MAX5150/5151 总线式连接示意图

微机控制技术

Page 136: 第 6 章  总线接口技术

图 6.29 SPI 与 MAX5150/5151菊花链式连接示意图

微机控制技术

Page 137: 第 6 章  总线接口技术

6.3.7 SPI 总线模拟程序设计

值得说明的是,带 SPI 总线接口的器件,也可以和不带 SPI 总线的单片机连接,此时可用软件模拟SPI 总线。例如 , 常用的 51 系列单片机就没有 SPI 总线。此时,我们可以采用模拟的方法来解决。为了适用各种器件的 SPI 接口,单片机可使用软件来模拟 SPI 的操作,包括串行时钟、数据输入和输出。对于不同的串行接口外围芯片,它们的时钟时序是不同的。

微机控制技术

Page 138: 第 6 章  总线接口技术

6.3.7 SPI 总线模拟程序设计

图 6.30为 8031(CPU)与美国 Xicor公司芯片 X25045(集 uP监控、看门狗定时器、 EEPROM 于一体 )的硬件连接图,有关 X25045 的详细情况请参见该公司产品手册。图中 P1. 0模拟 SPI 的数据输出端 (MOSI), P1. 1 模拟 SPI 的 SCK输出端, P1.2 模拟 SPI 的从机选择端, P1. 3 模拟 SPI 的数据输入端 (MISO)。

微机控制技术

Page 139: 第 6 章  总线接口技术

图 6.26 8031 与 X25045 接口原理图

微机控制技术

Page 140: 第 6 章  总线接口技术

6.3.7 SPI 总线模拟程序设计

下面介绍用 8031汇编语言模拟 SPI 串行输人、串行输出二个子程序。这些子程序也适用于在串行时钟的上升沿输入和下降沿输出各种串行外围接口芯片,如8 位或 10位 A/ D芯片, 74LS 系列输出芯片等,对于下降沿输入 ,上升沿输出的各种串行外围接口芯片,只要改变 P1. 1 的输出顺序,即输出 0再输入1 , 0……,他们也同样适用。

微机控制技术

Page 141: 第 6 章  总线接口技术

6.3.7 SPI 总线模拟程序设计

1. CPU串行输入子程序 SPIIN功能:按 X25045 时序从 P1. 3读人 1字节数据至 A 。入口参数:无出口参数: A 一数据

微机控制技术

Page 142: 第 6 章  总线接口技术

6.3.7 SPI 总线模拟程序设计

SPIIN: SETB P1 . 1 ;使 P1 . 1( 时钟 )输出为1

CLR P1 . 2 ;选择从机 MOV R1 , #08H ;置循环次数SPIINl: CLR P1 . 1 ;使 P1 . 1( 时钟 )输出为

0 NOP ;延时 NOP

MOV C , P1 . 3 ;从机输出至进位 C RLC A ;左移至累加器 A SETB P1 . 1 ;使 P1 . 1( 时钟 )输出为 1 DJNZ R1 , SPINl ;判是否循环 8 次 (1字节数据 ) RET ;返回

微机控制技术

Page 143: 第 6 章  总线接口技术

6.3.7 SPI 总线模拟程序设计

2. CPU串行输出子程序 SPIOUT功能:按 X25045 时序从 P1. 0输出入口参数: A 一数据出口参数:无

微机控制技术

Page 144: 第 6 章  总线接口技术

6.3.7 SPI 总线模拟程序设计

SPIOUT : SETB P1 . 1 ;使 P1 . 1( 时钟 )输出为 1 CLR P1 . 2 ;选择从机 MOV R1 , #08H ;置循环次数SPIOUTl: CLR P1 . 1 ;使 P1 . 1( 时钟 )输出为 0 NOP ;延时 NOP RLC A ; A中数据输出至进位 C

MOV P1 . O , C ;进位 C 送从机输入线上 SETB P1 . 1 ;使 P1 . 1( 时钟 )输出为 1 DJNZ R1 , SPIOUTl ;判是否循环 8 次 (1字节数据 ) RET ;返回