第八章 串行输入 输出接口 -...

127
第八章 串行输入/输出接口 一 概述 二 可编程串行通讯接口芯片8251A 三 串行通信接口RS-232C 四 USB总线简介

Upload: others

Post on 17-May-2020

30 views

Category:

Documents


0 download

TRANSCRIPT

第八章 串行输入/输出接口

一 概述

二 可编程串行通讯接口芯片8251A

三 串行通信接口RS-232C

四 USB总线简介

第八章 串行输入/输出接口

一 概述

二 可编程串行通讯接口芯片8251A

三 串行通信接口RS-232C

四 USB总线简介

一 概述

计算机与外部信息交换方式有两种,一种是并行通信,另一种是串行通信。并行通信时,数据各位同时传送。而串行通信时,数据和控制信息是一位接一位串行地传送下去。这样,虽然速度会慢一些,但传送距离比并行通信长,硬件电路也相应简单些。

第八章 串行输入/输出接口

串行通信的实现

1、串行通信的特点串行通信是逐位传送数据,所以一个多位数据需要多次传送。比如一个8位的字节型数据至少需要8次传送。它有如下特点:

速度较慢

引线少

距离长

计算机 外设

TXD

RXD

TXD

RXD

第八章 串行输入/输出接口

2、串行通信的硬件条件

在硬件上,串行通信系统的核心部件是移位寄存器,其中在发端要有一个并入串出移位寄存器,在收端要有

一个串入并出移位寄存器。

第八章 串行输入/输出接口

串行通信的实现

D Q D Q

CLK

D Q

CLK……

……

D0D6

并入串出移位寄存器

D Q D Q

CLK

D Q

CLK……

……

D7D1

并出串入移位寄存器

0 0 1 1 0

0 0 0 0

0 0 0 1 1

0 0 0 0

0 0 0 0 1

0 0 0 1

D7

D0

3、串行通信的同步

为了可靠的串行通信,同步信号起到至关重要的作用。在理想情况下,同步信号应该在数据信号线上出现有效数据期间的中心点有效,因为这时数据线上的数据是最稳定的

D7 D6 D5 D4 D3 D2 D1 D0

同步脉冲

第八章 串行输入/输出接口

串行通信的实现

在典型的串行通信系统中,是不存在同步信号线的,如何实现串行通信的中数据传送的同步呢?系统从软件和硬件两方面采取了如下三个措施:

(1)设置波特率波特率是指单位时间内传送的位数,单位是比特/秒。

第八章 串行输入/输出接口

串行通信的实现

(2)设置数据的传送格式,一般地串行通信在传送数据时,并不是单纯地传送数据位信息。为了使数据传送可靠,还设定了其他一些辅助位。

第八章 串行输入/输出接口

串行通信的实现

(3)设置波特率因子

在异步通信方式进行通信时,发送端需要用时钟来决定每1位对应的时间长度,接收端也需要用一个时钟来测定每1位的时间长度,前一个时钟叫发送时钟,后一个时钟叫接收时钟。这两个时钟的频率可以是波特率的数倍,一般取16倍、32倍或64倍。这个倍数就称为波特率因子。

第八章 串行输入/输出接口

串行通信的实现

波特率1/波特

率因子

接收时钟

1200×16=19200 1200

第八章 串行输入/输出接口

串行通信的实现

第八章 串行输入/输出接口

串行通信的实现

串行通信的基本技术1、串行通信方式

1) 异步通信

异步通信是指以字符为单位传送数据,用起始位和停止位标识每个字符的开始和结束字符,两次传送时间隔不固定。

2) 同步通信

在大量数据传送时,为了提高速度,采用块传输方式,这就是同步通信。采用同步传送,在数据块开始处要用同步字符来指示,并在发送端和接收端之间要用时钟来实现同步。

第八章 串行输入/输出接口

串行通信的基本技术1、串行通信方式

1) 异步通信

第八章 串行输入/输出接口

串行通信的基本技术1、串行通信方式

2) 同步通信

传输开始,先发送1或2个同步字符。

收发双方须用同一个时钟协调,确定传输的每bit位置。

双方达到同步后,就可逐个字符连续发送一大块数据(信息帧),不再需要起始位和停止位。

接收方利用同步字符,使其内部时钟与发送方同步,将其后的数据逐位移入,转换成并行格式。

第八章 串行输入/输出接口

2、串行通讯中的数据传送方向

1)单工单向通信,A只能发送数据,B只能接收数据

2)半双工每次只能有一个站发送。

3)完全双工两个站都能同时发送称完全双工。

第八章 串行输入/输出接口串行通信的基本技术

3、异步接收/发送器(UART)串行接口的基本结构主要是异步接收/

发送器(UART),它不仅包括并行数据和串行数据之间的相互转换,还有检测串行通信在传送过程中可能发生错误的逻辑部件。

(Universal Asynchronous Receiver Transmitter)

第八章 串行输入/输出接口串行通信的基本技术

第八章 串行输入/输出接口串行通信的基本技术

3、异步接收/发送器(UART)

串行通信的基本技术4、信号的调制和解调

将数字信号调制成模拟信号进行传输,用解调器把接收的模拟信号再转换成数字信号。

数字信号的频带宽,而普通通信线路频带较窄,如电话线频带范围仅300~3400Hz,所以采用普通通信线路进行远程数据通信时,需要在发送端用调制器(Modulator)把数字信号转换为模拟信号,模拟信号经通信线路传送到接收方,接收方再以解调器(Demodulator),把模拟信号变为数字信号。

第八章 串行输入/输出接口

4、信号的调制和解调

大多数情况下,调制器和解调器合在一个装置中,称为调制解调器——Modem

Modem起着传输信号的作用,是一种数据通讯设备,简称DCE,接收设备和发送设备称为数据终端设备,简称DTE。

第八章 串行输入/输出接口

串行通信的基本技术

数字调制方法

1)幅度调制(ASK)

用改变信号幅度的方法来表示数字信号0和1

。一种调幅方法为: 当接通f=387Hz的正弦波时表示数字1,断开时表示0。

第八章 串行输入/输出接口

串行通信的基本技术

数字调制方法

2)频率键移调制(FSK)

用一种频率信号表示数字0,另一种表示1。

2)频率键移调制(FSK)为了实现全双工通信,常使用四种不同的频率来表示不同方向上的两种不同数字。

例如,对于Bell 103A,300Bd FSK MODEM标准,规定在一个方向上用2025Hz的频率表示0,而用2225Hz表示1;另一个方向用1070Hz表示0,1270Hz表示1。

第八章 串行输入/输出接口

串行通信的基本技术

信息传输的检错和纠错串行数据在传输过程中,有可能出现信息的出错

如何发现传输中的错误,叫检错。

发现错误后,如何消除错误,叫纠错

最简单的检错方法是奇偶校验,即在传送字符的各位之外,再传送1位奇/偶校验位。

奇校验: 偶校验:

奇偶校验能够检测出1位误码,但是不能纠错

第八章 串行输入/输出接口

第八章 串行输入/输出接口

一 概述

二 可编程串行通讯接口芯片8251A

三 串行通信接口RS-232C

四 USB总线简介

二 可编程串行通讯接口芯片8251A

8251A芯片是INTEL公司生产的电路芯片,是与INTEL系列CPU兼容的可编程的串行通讯接口。虽然8251A功能较强,但它需要外部时钟电路。因此采用8251A作为接口电路时需要比较复杂的外围电路。

第八章 串行输入/输出接口

1、主要基本性能8251A是通用同步/异步数据收发器(USART),是常用的可编程通信接口器件,用于全双工通信并具有同步或异步工作方式。

同步方式:数据5~8位,波特率DC~64K位/秒,可选择内同步或外同步。

异步方式:数据5~8位, 波特率DC~19.2K位/秒,波特率系数(时钟速率/传输速率)1、16和64,停止位1、1.5或2位,能检查假启动位,可自动产生、检测和处理中止符等。

有检测奇偶校验错、溢出错和帧错误的功能。

第八章 串行输入/输出接口

二 可编程串行通讯接口芯片8251A

2、内部结构

第八章 串行输入/输出接口

二 可编程串行通讯接口芯片8251A

1)发送器a. 数据输出线TxDb. 发送时钟 TxCc. 发送器准备好 TxRDYd. 发送器空信号 TxEMPY

过程TxRDY有效CPU写数据到82518251发数据 发送完毕,TxEMPY有效

2)接收器a. 数据输入线RxDb. 接收时钟 RxCc. 接收器准备好 RxRDY

过程8251接数据 RxRDY有效 CPU读8251

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

2、内部结构3)调制解调控制电路

DTR#——数据终端准备好信号。是由8251A

送往外设的,表示CPU当前已经准备就绪。DSR#——数据设备准备好。是外设送往

825lA的,表示当前外设已经准备好数据。RTS#——请求发送信号。是8251A送往外设

的,表示CPU已经准备好发送。CTS#——清除请求发送信号。由外设送往

825lA的,当为低电平时,允许825lA执行发送操作。

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

2、内部结构4)读/写控制电路

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

3、8251编程

1)方式选择控制字

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

RxC

TxC OUT CLK

GATE

+5v

1MHz

8251

8253

比特率/波特率因子和输入频率的关系

如果波特率为1200,波特率因子为16,问计数初值?

1200×16

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

2) 控制寄存器的格式(操作命令控制字)

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

第八章 串行输入/输出接口

TxRDY=1 发送数据缓冲器空,准备好接收数据。

PE=1 奇偶校验错。

OE=1 溢出错。

FE=1 帧错误,仅用于异步方式。

DSR=1,MODEM已准备好数据。

其余位的意义与引脚功能相同。

3) 状态寄存器的格式(状态控制字(读))二 可编程串行通讯接口芯片8251A

向控制口写入复位命令字。 写入方式字确定工作方式。

同步方式,方式字后需写入1或2个同步字符,随后写入命令字。

异步方式,写入方式字后,接着写入命令字。

若要改变数据传送方式,须写入复位命令字,再重新写入新的方式字和命令字。

工作中,可用IN指令读状态字,检查是否有错等。

没出错,可不断传送数据,直至数据全部传送完为止。

8251A编程流程图

4、举例例:编写8251异步模式下的接收和发送程序,设端口地址:90H,92H,波特率因子16,1位起始位,1位停止位,无奇偶校验,每字符8位。

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

RxC

TxC OUT CLK

GATE

+5v

1.8432M

8251

8253

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

解:1)8253工作方式及计数初值

工作方式 mode38253输出频率:

fout=9600*16=153600=153.6K

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

2)8251工作方式方式选择控制字

0 1 0 0 1 1 1 0 =4EH

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

3)操作命令控制字

第八章 串行输入/输出接口

0 0 1 1 0 1 1 1 =37H

二 可编程串行通讯接口芯片8251A

4)状态字

第八章 串行输入/输出接口

TxRDY=1 发送数据缓冲器空,准备好接收数据。

PE=1 奇偶校验错。

OE=1 溢出错。

FE=1 帧错误,仅用于异步方式。

DSR=1,MODEM已准备好数据。

其余位的意义与引脚功能相同。

二 可编程串行通讯接口芯片8251A

3、程序8251初始化设置:a、先对825lA软件复位,方法是:采用先送3

个 0,再送 1个40H的方法,这也是8251A的编程约定,40H是使8251A执行复位操作的实际代码。(8251的编程约定)

b、对8251A进行工作方式及操作命令设置

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

……MOV DX,8251_CTRLMOV AL,00H ;复位8251OUT DX,ALCALL DELAYOUT DX,ALCALL DELAYOUT DX,ALCALL DELAYMOV AL,40HOUT DX,ALCALL DELAY ;等待8251复位

MOV AL,01001110B ;置工作方式

OUT DX,ALMOV AL,00110111B ;操作命令OUT DX,AL……

第八章 串行输入/输出接口二 可编程串行通讯接口芯片8251A

SENDDAT PROC ;DL:要发送的数据MOV AH,DL

CHKTXR: MOV DX,8251_CTRLIN AL,DX ;输入状态字AND AL,01H ;查TXRDYJZ CHKTXRMOV AL,AHMOV DX,8251_DOUT DX,AL ;发送RET

SENDDAT ENDP

第八章 串行输入/输出接口

RECIDAT PROC ;AL:接收的数据CHKRXD: MOV DX,8251_CTRL

IN AL,DX ;输入状态字AND AL 02H ;查RXRDY?JZ CHKRXDMOV DX,8251_DIN AL,DX ;接收RET

RECIDAT ENDP

第八章 串行输入/输出接口

注:缺少错误检查;增加:

IN AL,DX

TEST AL,38H

JNZ ERROR

美国国家半导体公司(National Semiconductor

)的PC16550D是一个通用的异步接收器/发送器UART芯片,它与IBM早期推出的个人计算机IBM PC/XT所使用的UART芯片INS 8250 兼容,但最高波特率提高到1.5Mb/s,且具有接收器和发送器FIFO(first-in first-out先进先出)缓冲区,每个FIFO缓冲区长度均为16个字节。目前16550在PC机的外围芯片组中得到了广泛的

应用

第八章 串行输入/输出接口串行接口芯片16550简介

第八章 串行输入/输出接口

串行接口芯片16550简介

第八章 串行输入/输出接口

一 概述

二 可编程串行通讯接口芯片8251A

三 串行通信接口RS-232C

四 USB总线简介

三 串行通信接口RS-232C

1、RS-232C电器特性及接口信号1)电气特性

在数据线TXD和RXD上:逻辑1=-3V~-15V逻辑0=+3V~+15V

在控制线和状态线RTS、CTS、DSR、DTR和DCD上:

信号有效=+3V~+15V信号无效=-3V~-15V

第八章 串行输入/输出接口

2)RS-232C与TTL转换RS-232C是用正负电压来表示逻辑状

态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够使计算机接口与终端的TTL器件连接,必须在RS-232C与TTL电路之间进行电平和逻辑关系变换

第八章 串行输入/输出接口

三 串行通信接口RS-232C

RS-232串行口有 9针D形连接器和DB25针连接器

第八章 串行输入/输出接口

三 串行通信RS-232C

3.RS-232C的接口信号可以用电缆线直接连接标准RS232端

口,但通信距离较近(<12m)。若 距离较远,可附加调制解调器(MODEM)。RS-232C规标准接口有25条线,最常用的信号线有9根。

第八章 串行输入/输出接口

三 串行通信接口RS-232C

第八章 串行输入/输出接口

三 串行通信接口RS-232C电平转换电路MAX232和MAX233

二、RS-232C应用举例

1.RS-232C串口通信接线方法(三线制)

RS-232 MAX232 MCS51

TXD

RXD

TXD

RXD

第八章 串行输入/输出接口

三 串行通信接口RS-232C

二、RS-232C应用举例

1.RS-232C串口通信接线方法

MAX232

第八章 串行输入/输出接口

三 串行通信接口RS-232C

BIOS串行通信口功能

IBM PC及其兼容机提供了比较灵活的关于串行口的BIOS中断调用方法,即通过INT 14H调用ROM BIOS串行通信口例行程序。该例行程序包括将串行口初始化为指定的字节结构和传输速率,检查控制器的状态,读写字符等功能

第八章 串行输入/输出接口

三 串行通信接口RS-232C

举例

设通信双方有一台计算机为PC机,使用COM1端口。在串行通信中,必须首先设定通信双方所使用字符串的数据结构,才能进行软件编程。这里我们设数据在接收和发送的字符串中,序号为0的字节为数据长度,其后的字节为所接收的数据。

第八章 串行输入/输出接口

三 串行通信接口RS-232C

接收数据子程序:

receive proc far ;这是接收数据子程序,

;出口AL,AH

rec_check: mov ah,3 ;读通讯口状态字

mov dx,0

int 14h

test ah,20H ;测试数据准备好位

jz rec_check ;数据未准备好,再读状态字

mov ah,2 ;读通信端口数据

mov dx,0

int 14h

ret

receive endp

第八章 串行输入/输出接口

三 串行通信接口RS-232C

发送数据子程序:

send proc far ;这是发送数据子程序,

;输入参数:AL,输出参数:AL,AH

push ax

send_check: mov ah,3 ;读通讯口状态字

mov dx,0

int 14h

test ah,20h ;测试“发送保存寄存器空”位

jz send_check ;发送保存寄存器满,再读状态字

pop ax

mov ah,2 ;发送数据

mov dx,0

int 14h

ret

send endp

第八章 串行输入/输出接口

三 串行通信接口RS-232C

第八章 串行输入/输出接口

一 概述

二 可编程串行通讯接口芯片8251A

三 串行通信接口RS-232C

四 USB总线简介

USB(Universal Serial Bus)通用串行总线,是一种外部总线,用于电脑与外设的连接和通讯。

USB标准1994年

底提出,被大量

应用于常用外设,

后成功替代大部

分串口和并口,

成为个人机和许

多智能外设的必

配接口。

四 USB总线简介

第八章 串行输入/输出接口

四 USB总线简介1)USB的特点2)USB规范3)USB接口规范4)USB的数据编码5)USB的传输方式6)USB包7)USB设备的枚举

第八章 串行输入/输出接口

1)USB的特点

1.传输速度快

USB1.0提供两种传输速度:

USB低速 1.5Mbps 支持键盘、鼠标、U盘、数码相机等低速设备。

USB全速 12Mbps 适用于更大范围的多媒体设备

USB2.0 速度 480Mbps,即60MB/s

USB3.0 速度 5Gbps

第八章 串行输入/输出接口

1)USB的特点

2.连接简单快捷

支持热插拔与即插即用,可在通电状态下任意插拔,而且主机能自动识别USB设备。

3.通用连接器

4针USB连接器可连接多种外设,用来替代硬盘的IDE接口、串行的鼠标接口和并行的打印机接口等。

第八章 串行输入/输出接口

1)USB的特点

4.无须外接电源

插头插入时电源先接上,能从总线向设备提供

500mA /+5V电源,USB3.0则提高到900mA,用于键盘、鼠标、U盘等低功耗设备的电源。打印机等高功耗USB设备仍需自带电源。目前大部分手机已采用USB接口充电。

5.扩充外设能力强

USB采用星形层式结构和Hub技术,理论上允许

一个主控机连接127个外设,两个外设间的距离可达5米。现在,无线USB也已投入使用。

第八章 串行输入/输出接口

四 USB总线简介

1)USB的特点2)USB规范3)USB接口规范4)USB的数据编码5)USB的传输方式6)USB包7)USB设备的枚举

第八章 串行输入/输出接口

2)USB规范1. USB1.0

1996年推出,速率1.5Mbps(192KB/s)

1998年升级为USB1.1,速度提到12Mbps

(1.5MB /s),称全速USB (FullSpeed) 。有些U盘、MP3等还在用。

2. USB2.0

2000年发布,半双工传输,速度480Mbps

, 也 称 高 速 USB (HighSpeed) , 兼 容USB1.1,能满足大多数外设的速率要求。

第八章 串行输入/输出接口

2)USB规范

3. USB3.0

2008年发布,速度是USB2.0的10倍

兼容USB2.0,并有以下增强功能:

1)提高了带宽。新增加4根信号线,以对

偶单纯形四线制差分信号的形式,进行双向并发(即全双工)数据流传输,实际速率能达3.2Gbps(即400MB/s)。

第八章 串行输入/输出接口

2)USB规范2)增加了新的电源管理功能。USB3.0传输

采用中断驱动协议,在有中断请求数据传输之前,可让设备转入待机、休眠和暂停等低功耗状态。

3)能让主机为外设提供更多电源功率。新的9针接口可提供900mA/+5V电源,从而能将USB应用于无线USB适配器、LED照明等

4)能让主机更快识别器件。

5)进一步提高了数据处理效率。

第八章 串行输入/输出接口

2)USB规范4. USB OTG协议

随着USB应用领域的扩大,人们希望USB设备能摆脱主机控制,两个USB设备能直接互连。由此诞生了USB OTG (On-The-Go,正在进行中)协议。

2001年公布了USB OTG,之后又发布了USB2.0

OTG,它实际上是对USB2.0的补充,在完全兼容USB2.0基础上,增加了电源管理功能。USB设备将完全抛开PC,既可作主机,也可当外设,与另

一个设备进行点对点通讯,直接交换数据的速度达到480Mbps。

第八章 串行输入/输出接口

USB OTG的应用例子

移动硬盘

OTG插头

2)USB规范

5.无线USB规范

2005年又颁布了无线USB规范(Wireless

USB,WUSB),是USB规范的扩展。它

定义了一个易用的无线接口,具有有线USB技术的高速率和安全性。

速率:

3米内达到USB2.0的480Mb/s

310米为110Mb/s

第八章 串行输入/输出接口

四 USB总线简介

1)USB的特点2)USB规范3)USB接口规范4)USB的数据编码5)USB的传输方式6)USB包7)USB设备的枚举

第八章 串行输入/输出接口

3)USB接口规范

1. USB接口的机械规范

USB的产品标识(logo) 上图:

USB产品标识,出现在所有

USB插头上。

中图:

USB2.0(高速)产品标识

下图:

USB3.0(超高速)产品标识

第八章 串行输入/输出接口

USB连接器分为标准口和Mini口两类,各包括A、B两种规格

自左至右:

Mini-A插头、Mini-B插头、B插头、A插座、A插头

3)USB接口规范

第八章 串行输入/输出接口

标准USB A/B型接口上行A插头

连主机

下行B插头接打印机

3)USB接口规范第八章 串行输入/输出接口

在D+和地之间插入了一个ID

信号, A型接地,B型悬空。

下行Mini B

插头

上行A插头

Mini USB A/B型接口

3)USB接口规范

此外,有的厂家还使用不同的Mini USB接口,如Mini B型4针,Mini B型8针,Mini B型8针2x4

Mini A和Mini B接口

3)USB接口规范

USB Micro接口2007年进一步发布了Micro口,属于USB2.0的便携版本,5线,有A/B插头、B型插槽和支持OTG的Micro-AB插槽。接口体积更小,多用于卡片式数码相机,手机等设备上。

3)USB接口规范

MiniUSB和Micro USB的对照

3)USB接口规范

第八章 串行输入/输出接口

USB3.0接口有A/B/BM/MINI/MICRO等多种,通常组合进了USB2.0信号。USB3.0连接器的塑料部分规定为蓝色。

3)USB接口规范

A型插头:

4根粗线为USB2.0

,较长的+5V和地

能保证电源先接通; 5 根 细 线 是USB3.0,上下2根

各为接收和发送线,中间为地。

第八章 串行输入/输出接口

A型插头: 双层BM型插头:大孔上下各有2根USB 2.0线,小孔中是5根USB3.0线。

3)USB接口规范第八章 串行输入/输出接口

Micro-B型连接器

3)USB接口规范

第八章 串行输入/输出接口

USB 3.0 电缆

3)USB接口规范

第八章 串行输入/输出接口

2.USB设备的电气连接

如图,USB2.0电缆中的D+、D-是双绞信号线,传输表示数据的差分信号(Differential Signal),VBUS(即VCC)和GND为设备提供+5V电源。连接线最长5 m,信号线要有屏蔽层以减小干扰。

3)USB接口规范

第八章 串行输入/输出接口

全速USB设备的连接:设备端D+接1.5 kΩ上拉电阻Rpu,发送器端接2个15KΩ下拉电阻Rpd。无设备连接时,D+、D- 0V。设备接上,D+经Rpu接+5V,又经对方的Rpd接地,+5V分压后使D+近Vcc,D-仍为0。此电压保持2.5s,计算机就认为已有设备接上。若D+和D-都降到0.8V以下,并持续2.5s,表示设备已断开。D+高、D-低为全速设备。低速设备要将Rpu接到D-上,由D+低、D-高来区分。

2.USB设备的电气连接

3. USB设备及其体系结构

USB是通用串行总线,运行过程中外设可

被随时添加、设置、使用或拆除。一个完整的USB系统,由安装在主机上的USB主控制器和根集线器(Root Hub或RHub)以及USB集线器(USB Hub)、USB设备、电缆等硬件,再加上USB主控制器驱动程序、USB总线驱动程序、USB设备驱动程序等软件构成。

3)USB接口规范

3. USB设备及其体系结构

1)USB设备 有三类USB设备: USB主机(USB Host):提供USB驱动程序模块,对USB设备进行配置并管理总线。

USB 集线器(Hub):一个Hub有1个上游接口和4个(或7个)下游接口,以扩展连接多个USB设备。Hub由中继器和控制器构成,对所接设备进行电源管理和信号分配,并检测和恢复总线故障。主机中有一个RHub,用来连接次级Hub和USB设备。

USB设备:即连在USB总线上的外设,也叫USB功能设备(USB Function)。

3)USB接口规范

1拖7的USB

扩展器

3. USB设备及其体系结构2)USB总线连接 可用菊花链形式扩充连到主机的

USB外设,形成下图的金字塔型结构,内部的物理连接是一个层叠的星型拓扑结构,Hub位于每个星的中心。最多可有7层,连接多达127个外设和Hub。

3)USB接口规范

3. USB设备及其体系结构

3)USB的供电

Hub可用外接电源供电,并为其每个下

游插口提供500mA电流。

它也可通过总线供电,即从上游插口吸

取500mA,自身消耗100mA,并为4个下

游插口各提供100mA。

USB3.0则能从上游吸取900mA电流。

3)USB接口规范

3. USB设备及其体系结构4)USB的管理

端点(End Point):每个USB外设只有1个逻辑地址,它的每个寄存器赋予不同端点号,主机通过设备地址和端点号与每个端点通信。

管道(Pipe):数据传送发生在主机软件与USB

设备端点之间,端点和主机软件的联合称为管道。管道分为流管道和消息管道,中断、批量和同步传输通过流管道,控制传输通过消息管道。

USB描述符(USB Describer):设在内存中的数据结构,记载USB设备的属性和配置信息,包括设备、设置、接口和端点等几种描述符,向主机提供USB设备的产品信息、遵循的标准版本号、供电方式、使用的驱动程序、设备地址、传输类型、数据包大小和带宽请求等信息。

3)USB接口规范

3. USB设备及其体系结构

5)USB的系统 结 构 :如图

3)USB接口规范

3. USB设备及其体系结构

USB主控制器与主控制器驱动程序

主机中至少有1片USB主控制器(USB

HC)芯片,常用Intel的UHCI(通用主控制器接口)芯片,或 Microsoft 、Compaq、NSC联合设计的OHCI(开放主控制器接口)芯片作USB主控制器。

为管理该芯片,应在主机中安装相应的USB主控制器驱动程序(Host Controller

Driver,HCD),负责最底层的调度、

队列和控制器管理,以及数据的位编码、封包、循环校验、发送、错误处理等

3. USB设备及其体系结构

USB驱动程序

简称USBD(USB Host Driver),是USB

系统软件与用户软件间的接口,位于HCD

之上,独立于硬件,为用户软件提供使用USB设备的功能,以管理每个USB设备,

包括配置管理、用户管理、总线管理和数据传输,还负责USB电力和带宽的自动处理,并管理Hub和设备的动态插拔。

3)USB接口规范

3. USB设备及其体系结构

USB控制器和USB设备驱动程序

每个USB设备中有1个USB控制器,它由1个USB收发器(也叫串行接口引擎,SIE)与控制它的单 片 机 ( MCU ) 组 成 , 如 Philips 公 司 的PDIUSBP12、NSC的USBN9603等都是收发器芯片。有些单片机植入了SIE形成单片USB控制器,如Cypress的EZ-USB FX和Microchip的PIC16C765芯片。还有针对扫描仪、打印机或鼠标等设备的专用USB控制芯片。

这样,每个USB设备有1个设备驱动程序,主机通过它来管理该USB设备,并依靠USBD为用户软件提供与该设备的接口和管道,控制它与主机间的数据流传输。

3)USB接口规范

3. USB设备及其体系结构

PC机和手提电脑的操作系统中,均配置了常用USB设备的驱动程序。

通常将USB设备分成类(Class),具有相似特性的分到一类,并为它们提供一个通用的设备驱动程序。人机接口(Human InterfaceDevice,HID)类、音频类、静止图像类、海量存储类、显示类、图像类、通信类、电源供给类、Hub类设备等等。

如没有合适的驱动程序,主机会到InterNet上去寻找,并自动安装。

只有少数新产品,其驱动程序是随设备提供的,要由用户自己安装。

四 USB总线简介

1)USB的特点2)USB规范3)USB接口规范4)USB的数据编码5)USB的传输方式6)USB包7)USB设备的枚举

第八章 串行输入/输出接口

4)USB的数据编码1.NRZI编码

数据要转换成NRZI码,与时钟一起调制后再传输。为保证转换连续,编码时还要进行位插入,封装成有固定间隔的数据包,并附上同步信号,使接收方能还原出总线时钟信号,实现解码。

USB电缆上传送的是在D+和D-线上变化的差动信号,摆幅3.3V,并定义:

逻辑“0” 电压跳变(0变为3.3V,或3.3V变为0)

逻辑“1” 电压不变

这称为不归零反转编码(NRZI,Non-Return-to-

Zero Inverted Code)。

图a上行是待传送的串行数据流,下行是NRZI编码后实际发送的数据流波形。

编码规则:逢1保持,逢0跳变,NRZI译码为相反操作。

图b是USB数据流的传送电路示意图。

4)USB的数据编码1.NRZI编码

2. 位填充(Bit-stuffing)

解码器在每1位时间检测跳变来同步数据,若遇无跳变长串会丢失同步。位填充在连续发6个1后,在码流中加1个跳变(0)。接收方用位反填充丢弃这个0。接收器能自动判定连续6个1后发生跳变,并将该跳变丢弃。若原数据第7位是0,会照样进行位填充。

要发送数据,含8

个1的长串。

在第6、7个1之间

加了填充位,使第7

个1的发送延迟了1位

实际发送出去的

NRZI数据流。

四 USB总线简介

1)USB的特点2)USB规范3)USB接口规范4)USB的数据编码5)USB的传输方式6)USB包7)USB设备的枚举

第八章 串行输入/输出接口

5)USB的传输方式1. USB的数据流类型

USB有4种数据流类型:

1)控制信号流:设备插入时与系统软件间的控制信息传输,不允许出错或丢失。

2)实时数据流:连续的固定速率数据的传输,要求低延时传送,应开辟较大缓冲区,并确保低误码率。

3)块数据流:大批量数据的传送。

4)中断数据流:少量随机输入信号的传输,如事件通知信号、字符或坐标等。

第八章 串行输入/输出接口

2.USB的数据传输方式

USB有4种数据传输方式,也称事务格式。即:

1)控制传输(双向):传输对设备的控制指令、设备状态查询和确认命令,以及设备枚举,按FIFO原则处理这些数据和命令。

2)批量(Bulk)传输(单/双向):传输时间性不强但要求可靠的大批量数据,若出错应重新传输

3)同步(Isochronous)传输(单/双向):传输速率固定、时间性强的连续实时数据,出错不重传

4)中断传输(单向):仅输入主机的小量数据,需及时处理,如键盘、鼠标、操纵杆等输入设备

第八章 串行输入/输出接口

四 USB总线简介

1)USB的特点2)USB规范3)USB接口规范4)USB的数据编码5)USB的传输方式6)USB包7)USB设备的枚举

第八章 串行输入/输出接口

6)USB包1.包的构成

USB数据传输包含1个或多个事务处理(Transaction,PCI总线中称为交易)。事务由信息包(Packet)组成,包是USB信息交换的基本单位。

信息包封装完美,因此主机可采取“广播”的形式,沿USB的塔形信号链路向下传输信息包,遇到地址符合的设备时才被捕获。信息包也可由外设发出,上行传输。

USB是串行通信,所有信息串,都按自左到右、先低位、后高位的顺序发送。

第八章 串行输入/输出接口

起始:D+、D-同时切到相反极性,通知接收方开始发送信息(Start)了。

同步:接着发6个跳变,并保持当前状态2个码位,形成同步信号(SYNC)。高速USB同步信号有32码位长。

标识:第9个码位起发信息,首字节是包标识符(PacketIdentification,PID),指明包的内容。

选项:要发送的信息,含PID,长度为1~1025字节。终止:D+和D-保持两个码位低电平,表示包结束(

End of Packet,EOP)。

2. 包的类型

包有4类: 令牌包、数据包、握手包、专用包

每类包又包含几种类型,用8位PID的低4位来区分,高4位是低4位的补码,用于校验。

USB2.0增加了7种PID,主要用于高速传输包括

数据PID:DATA2、MDATA

握手PID:NYET

专用PID:ERR、SPLIT、PING、Reserved

6)USB包第八章 串行输入/输出接口

USB的信息包

6)USB包

6)USB包

3. 包的格式采用基于PID的数据传输协议,包由域组成,包括: 同步域SYNC: 8位同步信号,所有包均以

SYNC打头。 类型域PID:8位PID,低4位指定包的类型。 地址域ADDR:7位设备地址,即包的传输目的地,最多可有128个地址。

端点域ENDP:4位端点号,包要传去的端点,1个设备最多可有16个端点。

检查域CRC:5/16位检查域,循环冗余校验码,用于地址、端点和数据的校验。

数据域DATA:要传输的数据。

3.包的格式

4类信息包的构成:

1)令牌包4种令牌包: SOF,IN, OUT, SETUP

SOF 帧开始包(Start of Frame) 格式:SYNC(8位)—PID(8位)—FR#(11位)—CRC(5位)

SOF包不含地址,被RHub广播到所有USB设备。

RHub每1ms传送1个SOF包,两SOF包的间隔为1帧。

1帧可传送1ms/12MHz=12000个码位或1500字节,去除同步和终止后,约1200字节,封装成若干数据包。

FR#域是11位(低速7位)序号标签,按包的顺序改变,在约2秒内从0增到2047再归0,然后重新计数。它是数据包的序号,可同步数据传送。接收端的音、视频设备等,可用FR#作节拍信号。

3.包的格式

IN,OUT,SETUP令牌包格式相同,即SYNC(8位)-PID(8位)-ADDR(7位)-ENDP(4位)-CRC(5

位)

IN 接收包:主机要求设备传回数据。过程:RHub广播接收包设备返回数据包RHub

发握手包。这适用于全部4种传输类型,但同步传输无握手包。 OUT 发送包:主机向设备发送数据。

过程:RHub广播发送包RHub发数据包设备发握手包。适用于同步传输外的其它3种传输类型,只有批传输才发回握手包。 SETUP 设置包:主机发此包表示传输开始,后面

会跟若干IN或OUT包。它是OUT包的特例,总指向双向控制的端点0,优

先级最高,指定设备必须接受它。

3.包的格式

2)数据包。传输数据由DATA0和DATA1包组成。格式:

SYNC(8位)-PID(8位)-DATA(0~1023位)-CRC(16位)

• DATA0和DATA1包只是PID不同,可含 0~ 1023位数据(USB2.0为0~8192位)。应交替发送两种包,接收方可检测是否交替来判断接收是否出错。

3)握手包。用来报告交换的状态,由接收方(设备或Hub)发给发送方。格式:

SYNC(8位)-PID(8位)

• 含ACK(确认包)、NAK(不确认包)、STALL(挂起包)等几种。

4)专用包。仅有前同步包(PREamble),只含SYNC

和PID域。一般在与低速设备进行传输时发此包,只有控

制和中断传输才用到。

四 USB总线简介1)USB的特点2)USB规范3)USB接口规范4)USB的数据编码5)USB的传输方式6)USB包7)USB设备的枚举

第八章 串行输入/输出接口

7)USB设备的枚举USB设备的枚举(Enumeration):

枚举过程:当USB电缆插入计算机USB

口时,操作系统发现有USB设备联机了

,并判断出是哪类设备,操作系统会寻

找合适的USB驱动程序,然后该USB端

口进行配置。

配置完成后,该USB设备将被赋予地址

,完成枚举。

1.控制传输事务

控制传输事务只在枚举和命令初始化阶段,发生在RHub与指定地址的USB设备端点0之间。控制传输事务包含三个阶段:1)建立阶段

主机通过 RHub 发 SETUP 令 牌 包 (SETUP-ADDR-ENDP-CRC5)和配置数据包(DAT0-8字节配置数据-CRC16),外设收到后发回握手包(ACK)。在

配置进程的不同时间点,请求的内容不一样。

7)USB设备的枚举

1.控制传输事务

2)数据阶段

若配置数据超过8字节就应增加数据阶段,

数据也可由设备送回。

如有多个数据包,要交替使用DATA0和

DATA1的PID。数据量很大时应封装成n个

包,长度等于允许的最大长度,最后1个包

装余下数据,故能根据长度判断出最后的

包。

7)USB设备的枚举

1.控制传输事务3)状态阶段

控制传输事务以状态阶段结尾,向主机报告建立阶段和

数据阶段的结果。约定用0长度数据包表示成功,而NAK

或STALL响应则出错了。会有三种返回状态:

外设提供状态:RHub发出IN令牌包,询问配置任务是否完成?外设送回空心数据包(DATA1-CRC16)表示成功完成,RHub发ACK握手包应答。

根集线器提供状态:RHub发出OUT令牌包,随后接1个空

心数据包表示建立过程已顺利结束,外设应答,表示明白了。

外设负面回应:Rhub发出IN令牌包,请外设回应。

外设忙碌,发回NAK握手包,表示还在忙于完成指令。

若建立阶段和数据阶段出错,命令序列没能完成,外设发回STALL握手包。

7)USB设备的枚举

2.USB描述符描述符是记载USB设备属性和配置信息的数据结构,在枚举阶段发挥作用。

1)主机请求

枚举是主机通过RHub对刚连上的外设进行配置,将用控制传输向外设发一系列请求,包含8字节配置数据:

• 字节0规定传输方向,请求类型(标准的/按类的/

厂商定义的),送往设备、接口或端点。

• 字节1是请求代码0~12,如返回状态、返回描述符、给设备指定地址、设定配置等。

• 其余字节指定请求内容、接口/端点号、数据长度等。

7)USB设备的枚举

2.USB描述符2)设备描述符(Device Descriptor)

• 即在内存中为设备定义的18字节表格,内容包括其USB

版本,属于的类(Class)、子类(Sub Class)及使用的协议、厂商标志、产品标志、设备序列号等。

• 类和子类指明是否能用系统支持的设备驱动程序;若不能归类,应说明类定义中有无使用协议,是否由供应商提供驱动程序。

3)配置描述符(Configuration Descriptor)

• 9字节,包括该配置支持的接口数、供电方式、最大功率等。

• 若只要总线提供100mA电流,在最大功耗字节填入50,主机就知道是低功率设备。

7)USB设备的枚举

2.USB描述符4)接口描述符(Interface Descriptor)最小设备只有1个接口。若1个设备的配置支持几个接口,每个接口还需9字节接口描述符,以便为每个接口配备不同的设备驱动程序。接口描述符跟在配置描述符后送给主机。

5)端点描述符(Endpoint Descriptor)除0号端点,接口的其它端点也应有一个7字节端点描述符,规定端点号、传输方向、传输类型、能收发的最大数据包大小、多长时间可被访问一次等。它随接口描述符一起送出。

鼠标、键盘等属最小设备,只有1个接口,接口只有1个0号端口,配置过程较简单

7)USB设备的枚举

3.设备检测以USB接口的鼠标为例:1)鼠标插入PC机USB插口,电源先接通,为鼠标接口供电。

2)上拉电阻使D+线电平从0升到3.3V,D-仍为0,Hub判定一个全速USB设备已连上。

3)发现新设备后,Hub设置状态寄存器中的标志位,并等待命令。

4)主机有规则地用中断传输轮询所有接入的Hub,多数情况下它们会回送NAK包,无东西可报告。

5)发现有设备接入的Hub,会用状态寄存器内容来回应,主机检测到此标志位状态后,便立即开始枚举过程。

7)USB设备的枚举

4.枚举过程

枚举过程就是为新加入的Hub和USB设备编址。

主机通过RHub控制枚举过程,送出一系列请求,都是系统提供的标准函数。

链路中所有Hub都会接收到请求,它们的责任是在USB总线上重复这些信号,不会参加这个过程,因为在这期间它们未被主机编址。

只有刚插入的设备和接纳它的Hub会接收到这些请求。

7)USB设备的枚举

4.枚举过程枚举过程如下:1)主机让Hub返回端口状态

其中包含状态寄存器中标志位的内容

2)主机让Hub清除此端口标志

表示已知道有设备连上

3)主机让该端口功能有效

Hub马上发复位命令给鼠标,让它准备枚举。同时将此动作记入状态寄存器,并允许端点进行USB通信

4)主机再让Hub送回端点状态

主机会从状态寄存器内容中发现外设已完成复位

7)USB设备的枚举

4.枚举过程

5)主机让Hub清除端口标志

这时鼠标已通电和复位,处于设备地址=0的状态,可用这个地址回答主机的请求了。每个时刻只能有1个设备的地址为0。

6)主机请求鼠标送回设备描述符

7)主机为鼠标分配1个地址

之后的请求都发到这个新设备地址,鼠标进入已编制状态。下个接入的设备将被赋予缺省地址0

8)主机用新的地址再次向鼠标索要设备描述符

若回应与之前不同或超时,主机会转去处理错误,枚举过程可能会以出错终止。

7)USB设备的枚举

4.枚举过程

9)主机请求鼠标的配置描述符

将从中获得鼠标信息,包括其接口和端点信息。

鼠标配置较为简单。若是功能复杂的设备,配置过程会较长;有的设备会有多个配置,也都要在此阶段完成;有时还会与用户交互,需要输入特定信息。

10)选择设备驱动程序

鼠标属于HID类外设,与键盘、游戏控制杆等

同属于键盘和指向设备子类,系统已在内存中准备了这类外设的驱动程序,很容易完成枚举过程

11)主机告诉鼠标:配置已完成,可以正常运行