USB通讯协议(通俗易懂,新手绝对入门).ppt_第1页
USB通讯协议(通俗易懂,新手绝对入门).ppt_第2页
USB通讯协议(通俗易懂,新手绝对入门).ppt_第3页
USB通讯协议(通俗易懂,新手绝对入门).ppt_第4页
USB通讯协议(通俗易懂,新手绝对入门).ppt_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式技术基础与实践嵌入式技术基础与实践 主要内容: USB概述 USB设备 USB物理特性 USB通信协议 JB8的USB模块的编程方法 嵌入式技术基础与实践嵌入式技术基础与实践 USB协议有两种:USB1.1和USB2.0。 USB2.0和USB1.1完全兼容。USB1.1支持的 数据传输率为12Mbps和1.5Mbps(用于慢 速外设),USB2.0支持的数据传速率可达 480Mbps。在普通用户看来,USB系统就是 外设通过一根USB电缆和PC机连接起来。通 常把外设称为USB设备,把其所连接的PC机 称为USB主机。将指向USB主机的数据传输 方向称为上行通信,把指向USB设备的数据 传输方向称为下行通信。 嵌入式技术基础与实践嵌入式技术基础与实践 USB网络采用阶梯式星形拓扑结构,如图 16-1。一个USB网络中只能有一个主机。主 机内设置了一个根集线器,提供了主机上 的初始附属点。 集线器 (复合设备) 游戏杆 USB设备 (根阶梯) 阶梯0 扫描仪鼠标集线器 USB设备 阶梯1 阶梯2 PC主机 (根集线器) 图16-1 USB主机和USB设备的连接 嵌入式技术基础与实践嵌入式技术基础与实践 主机定时对集线器的状态进行查询。当一个新设 备接入集线器时,主机会检测到集线器状态改变 ,主机发出一个命令使该端口有效并对其进行设 置。位于这个端口上的设备进行响应,主机收到 关于设备的信息,主机的操作系统确定对这个设 备使用那种驱动程序,接着设备被分配一个唯一 标识的地址,范围从0127,其中0为所有的设备 在没有分配惟一地址时使用的默认地址。主机向 它发出内部设置请求。当一个设备从总线上移走 时,主机就从其可用资源列表中将这个设备删除 。 嵌入式技术基础与实践嵌入式技术基础与实践 16.2.1 USB主机 USB的所有数据通信(不论是上行通信还是下行 通信)都由USB主机启动,所以USB主机在整 个数据传输过程中占据着主导地位。在USB系 统中只允许有一个主机。从开发人员的角度看 ,USB主机可分为三个不同的功能模块:客户 软件、USB系统软件和USB总线接口。 (1) 客户软件 (2) USB系统软件 (3) USB总线接口 嵌入式技术基础与实践嵌入式技术基础与实践 16.2.1 USB主机 (1) 客户软件 客户软件负责和USB设备的功能单元进行通信,以实现其 特定功能。一般由开发人员自行开发。客户软件不能直接访 问USB设备,其与USB设备功能单元的通信必须经过USB系统 软件和USB总线接口模块才能实现。客户软件一般包括USB设 备驱动程序和界面应用程序两部分。 USB设备驱动程序负责和USB系统软件进行通信。通常,它 向USB总线驱动程序发出I/O请求包(IRP)以启动一次USB数 据传输。此外,根据数据传输的方向,它还应提供一个或空 或满的数据缓冲区以存储这些数据。 界面应用程序负责和USB设备驱动程序进行通信,以控制 USB设备。它是最上层的软件,只能看到向USB设备发送的原 始数据和从USB设备接收的最终数据。 嵌入式技术基础与实践嵌入式技术基础与实践 16.2.1 USB主机 (2) USB系统软件 USB系统软件负责和USB逻辑设备进行配置通信, 并管理客户软件启动的数据传输。USB逻辑设备是程 序员与USB设备打交道的部分。USB系统软件一般包 括USB总线驱动程序和USB主控制器驱动程序这两部 分。这些软件通常由操作系统提供,开发人员不必掌 握。 嵌入式技术基础与实践嵌入式技术基础与实践 16.2.1 USB主机 (3) USB总线接口 USB总线接口包括主控制器和根集线器两部分。 根集线器为USB系统提供连接起点,用于给USB系统 提供一个或多个连接点(端口)。主控制器负责完成 主机和USB设备之间数据的实际传输,包括对传输的 数据进行串行编解码、差错控制等。该部分与USB系 统软件的接口依赖于主控制器的硬件实现,开发人员 不必掌握。 嵌入式技术基础与实践嵌入式技术基础与实践 16.2.2 USB设备 一个USB设备由三个功能模块组成:USB总线接口、USB逻辑设 备和功能单元。这里的USB总线接口指的是USB设备中的串行接口引 擎(SIE);USB逻辑设备被USB系统软件看作是一个端点的集合;功 能单元被客户软件看作是一个接口的集合。SIE、端点和接口都是USB 设备的组成单元。为了更好地描述USB设备的特征,USB提出了设备 架构的概念。从这个角度来看,可以认为USB设备是由一些配置、接 口和端点组成的,即一个USB设备可以含有一个或多个配置,在每个 配置中可含有一个或多个接口,在每个接口中可含有若干个端点。其 中,配置和接口是对USB设备功能的抽象,实际的数据传输由端点来 完成。在使用USB设备前,必须指明其采用的配置和接口。这个步骤 一般是在设备接入主机时设备进行自举时完成的,我们在后面会进一 步介绍。USB设备使用各种描述符来说明其设备架构,包括设备描述 符、配置描述符、接口描述符、端点描述符以及字符串描述符,它们 通常被保存在USB设备的固件程序中。 嵌入式技术基础与实践嵌入式技术基础与实践 16.2.2 USB设备 设备 设备代表一个USB设备,它由一个或多个配置组成。设备描述符 用于说明设备的总体信息,并指明其所含的配置的个数。一个USB设 备只能有一个设备描述符。 配置 一个USB设备可以包含一个或多个配置,如USB设备的低功耗模式 和高功耗模式可分别对应一个配置。在使用USB设备前,必须为其选 择一个合适的配置。配置描述符用于说明USB设备中各个配置的特性 ,如配置所含接口的个数等。USB设备的每一个配置都必须有一个配 置描述符。 接口 一个配置可以包含一个或多个接口,如对一个光驱来说,当用于 文件传输时使用其大容量存储接口;而当用于播放CD时,使用其音频 接口。接口是端点的集合,可以包含一个或多个可替换设置,用户能 够在USB处于配置状态时,改变当前接口所含的个数和特性。接口描 述符用于说明USB设备中各个接口的特性,如接口所属的设备类及其 子类等。USB设备的每个接口都必须有一个接口描述符。 嵌入式技术基础与实践嵌入式技术基础与实践 16.2.2 USB设备 端点 端点是USB设备中的实际物理单元,USB数据传输就是在主机和 USB设备各个端点之间进行的。端点一般由USB接口芯片提供,例如 Freescale的MC68HC908JB8。USB设备中的每一个端点都有唯一的端 点号,每个端点所支持的数据传输方向一般而言也是确定的:或是输 入(IN)或是输出(OUT),也有些芯片提供的端点的数据方向是可 以配置的,例如MC68HC908JB8包含有两个用于数据收发的端点:端 点1和端点2。其中端点1只能用于数据发送,即支持输入(IN),端 点2既能用于数据发送也可用于数据接收,即支持输入(IN)和输出 (OUT)操作。需要注意的是,在这里数据的传输方向是站在主机的 立场上来看得。比如端点1只能发送数据,在主机看来是端点1向主机 输入数据,即IN操作;当端点2配置为接收数据时,主机向端点2输出 数据,即OUT操作。这一点是初学者比较容易产生混淆的地方。 利用设备地址、端点号和传输方向就可以指定一个端点,并和它 进行通信。 0号端点比较特殊,它有数据输入IN和数据输出OUT两个物理单元 ,且只能支持控制传输。 嵌入式技术基础与实践嵌入式技术基础与实践 16.2.2 USB设备 字符串 在USB设备中通常还含有字符串描述符,以说明一些专用信息, 如制造商的名称、设备的序列号等。它的内容以UNICODE的形式给出 ,且可以被客户软件所读取。对USB设备来说,字符串描述符是可选 的。 管道 在USB系统结构中,可以认为数据传输是在主机软件(USB系统软 件或客户软件)和USB设备的各个端点之间直接进行的,它们之间的 连接称为管道。管道是在USB设备的配置过程中建立的。管道是对主 机和USB设备间通信流的抽象,它表示主机的数据缓冲区和USB设备 的端点之间存在着逻辑数据传输,而实际的数据传输是由USB总线接 口层来完成的。 管道和USB设备中的端点一一对应。一个USB设备含有多少个端点 ,其和主机进行通信时就可以使用多少条管道,且端点的类型决定了 管道中数据的传输类型,如中断端点对应中断管道,且该管道只能进 行中断传输。传输类型在后面会介绍。不论存在着多少条管道,在各 个管道中进行的数据传输都是相互独立的。 嵌入式技术基础与实践嵌入式技术基础与实践 16.3.1 USB接口 USB使用一根屏蔽的4线电缆与网络上的设备进行互联。 数据传输通过一个差分双绞线进行,这两根线分别标为D+ 和D-,另外两根线是Vcc和Ground,其中Vcc向USB设备供 电。使用USB电源的设备称为总线供电设备,而使用自己 外部电源的设备叫做自供电设备。为了避免混淆,USB电 缆中的线都用不同的颜色标记,如表16-1所示。 引脚引脚编编编编号号信号名称信号名称缆线颜缆线颜缆线颜缆线颜 色色 1 1 VccVcc红红红红 2 2 Data-(D-)Data-(D-)白白 3 3 Data+(D+)Data+(D+)绿绿绿绿 4 4 GroundGround黑黑 表16-1 USB缆线的信号与颜色 嵌入式技术基础与实践嵌入式技术基础与实践 16.3.1 USB接口 从一个设备连回到主机,称为上行连接;从主机到设备的连 接,称为下行连接。为了防止回环情况的发生,上行和下行 端口使用不同的连接器所以USB在电缆和设备的连接中分别 采用了两种类型的连接头,即图16-2所示的A型连接头和B型 连接头。每个连接头内的电线号与图16-2的引脚编号是一致 的。A型连接头,用于上行连接,即在主机或集线器上有一个 A型插座,而在连接到主机或集线器的电缆的一端是A型插头 。在USB设备上有B型插座,而B型插头在从主机或集线器接 出的下行电缆的一端。采用这种连接方式,可以确保USB设 备、主机/集线器和USB电缆始终以正确的方式连接,而不出 现电缆接入方式出错,或直接将两个USB设备连接到一起的 情况。 1234 12 43 A型连接头 B型连接头 图16-2 USB连接头 嵌入式技术基础与实践嵌入式技术基础与实践 16.3.2 USB信号 (1)差分信号技术特点 传统的传输方式大多使用“正信号”或者“负信号”二进制 表达机制,这些信号利用单线传输。用不同的信号电平范围 来分别表示1和0,它们之间有一个临界值,如果在数据传 输过程中受到中低强度的干扰,高低电平不会突破临界值, 那么信号传输可以正常进行。但如果遇到强干扰,高低电平 突破临界值,由此造成数据传输出错。差分信号技术最大的 特点是:必须使用两条线路才能表达一个比特位,用两条线 路传输信号的压差作为判断1还是0的依据。这种做法的优 点是具有极强的抗干扰性。倘若遭受外界强烈干扰,两条线 路对应的电平同样会出现大幅度提升或降低的情况,但二者 的电平改变方向和幅度几乎相同,电压差值就可始终保持相 对稳定,因此数据的准确性并不会因干扰噪声而有所降低。 嵌入式技术基础与实践嵌入式技术基础与实践 (2)USB通信的格式 图16-3 在USB电缆上使用双向不归零编码和差动信号的传输 NRZI编码器 电缆段 差分驱动器 NRZI解码器差分驱动器 D+ D- USB的数据包使用反向不归零编码(NRZI)。图16-3描述了在 USB电缆段上传输信息的步骤。反向不归零编码由传送信息的 USB代理程序完成;然后,被编码的数据通过差分驱动器送到 USB电缆上;接着,接收器将输入的差分信号进行放大,将其送 给解码器。使用该编码和差动信号传输方式可以更好地保证数据 的完整性并减少噪声干扰。 嵌入式技术基础与实践嵌入式技术基础与实践 (2)USB通信的格式 图16-4 反向不归零编码 空闲 数据 反向不 归零码 0 110 1 000 1110 10 使用反向不归零编码方式可以保证数据传输的完整性,而且不 要求传输过程中有独立的时钟信号。反向不归零编码不是一个 新的编码方式。它在许多方面都有应用。图16-4给出了一个数 据流和编码之后的结果。在反向不归零编码时,遇到“0”转换, 遇到“1”保持。反向不归零码必须保持与输入数据的同步性,以 确保数据采样正确。反向不归零码数据流必须在一个数据窗口 被采样,无论前一个位时间是否发生过转换。解码器在每个位 时间采样数据以检查是否有转换。 嵌入式技术基础与实践嵌入式技术基础与实践 (2)USB通信的格式 图16-5在USB电缆上使用双向不归零编码和差动信号的传输 00011111111011 数据 空闲 双向不归零码 填充后数 据 填充位 若重复相同的“1”信号一直进入时,就会造成数据长时间无法转换,逐渐的积累,而 导致接收器最终丢失同步信号的状况,使得读取的时序会发生严重的错误。因此,在 NRZI编码之间,还需执行所谓的位填充的工作。位填充要求数据流中如果有连续的六个 “1”就要强行转换。这样接收器在反向不归零码数据流中最多每七个位就检测到一次跳转 。这样就保证了接收器与输入数据流保持同步。反向不归零码的发送器要把“0”(填充位 )插到数据流中。接收器必须被设计成能够在连续的六个“1”之后识别一个自动跳转,并 且立即扔掉这六个“1”之后的“0”位。 图16-5的第一行是送到接收器的原始数据。注意数据流包括连续的八个“1”。第二行 表示对原始数据进行了位填充,在原始的第六个和第七个“1”之间填入了一个“0”。第七 个“1”延时一个位时间让填充位插入。接收器知道连续六个“1”之后将是一个填充位,所 以该位就要被忽略。注意,如果原始数据的第七个位是“0”,填充位也同样插入,在填充 过的数据流中就会有两个连续的“0”。 嵌入式技术基础与实践嵌入式技术基础与实践 在USB设备连接时,USB系统能自动检测到这个连接,并识别出 其采用的数据传输速率。USB采用在D+或D-线上增加上拉电阻的 方法来识别低速和全速设备。USB支持三种类型的传输速率: 1.5Mb/s的低速传输、12Mb/s的全速传输和480Mb/s的高速传输 。如图16-6和图16-7所示。当主控制器或集线器的下行端口上没 有USB设备连接时,其D+和D-线上的下拉电阻使得这两条数据线 的电压都是近地的(0V);当全速/低速设备连接以后,电流流 过由集线器的下拉电阻和设备在D+/D-的上拉电阻构成的分压器 。由于下拉电阻的阻值是15K,上拉电阻的阻值是1.5K,所以 在D+/D-线上会出现大小为(Vcc*15/(15+1.5)的直流高电 平电压。当USB主机探测到D+/D-线的电压已经接近高电平,而 其它的线保持接地时,它就知道全速/低速设备已经连接了。 嵌入式技术基础与实践嵌入式技术基础与实践 低速USB设备电缆和电阻的连接 全速USB设备电缆和电阻的连接 USB 主机 USB 低速 设备 USB数据线 +5V D+ D- 15千欧 1.5千欧 Vcc D+ D- 地 15千欧 USB 主机 USB 全速 设备 USB数据线 +5V D+ D- 15千欧 1.5千欧 Vcc D+ D- 地 15千欧 嵌入式技术基础与实践嵌入式技术基础与实践 16.4.1 包 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经 过打包后在总线上传输的。USB包由五部分组成,即同步字段(SYNC )、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和 包结尾字段(EOP),包的基本格式如下图: 同步字段(同步字段(SYNCSYNC ) PIDPID字段字段数据字段数据字段CRCCRC字段字段 包包结结结结尾字段(尾字段(EOPEOP ) 1 1、SYNCSYNC字段字段: :由由8 8位组成,作为每个数据封包的前导,用来产位组成,作为每个数据封包的前导,用来产 生同步作用,使生同步作用,使USBUSB设备与总线的包传输率同步,它的数值固定为设备与总线的包传输率同步,它的数值固定为 0000000100000001。 2 2、PIDPID字段字段: :用来表示数据封包的类型。包标识符中的校验字段用来表示数据封包的类型。包标识符中的校验字段 是通过对类型字段的每个位求反码产生的,是通过对类型字段的每个位求反码产生的, PIDPID字段如下图所示:字段如下图所示: PID0PID0PID1PID1PID2PID2PID3PID3PID0PID0PID1PID1PID2PID2PID3PID3 嵌入式技术基础与实践嵌入式技术基础与实践 封包封包类类类类型型PIDPID名称名称PIDPID编码编码编码编码意意义义义义 令牌令牌 OUTOUT0001B0001B 从主机到从主机到设备设备设备设备 的数据的数据传输传输传输传输 ININ1001B1001B 从从设备设备设备设备 到主机的数据到主机的数据传输传输传输传输 SOFSOF0101B0101B 帧帧帧帧的起始的起始标记标记标记标记 与与帧码帧码帧码帧码 SETUPSETUP1101B1101B 从主机到从主机到设备设备设备设备 。表示要。表示要进进进进行控制行控制传输传输传输传输 数据数据 DATA0DATA00011B0011B 偶数数据封包偶数数据封包 DATA1DATA11011B1011B 奇数数据封包奇数数据封包 握手握手 ACKACK0010B0010B 接收器收到无接收器收到无错误错误错误错误 的数据封包的数据封包 NAKNAK1010B1010B 接收器无法接收数据或接收器无法接收数据或发发发发射器无法送出数射器无法送出数 据据 STALLSTALL1110B1110B 端点端点产产产产生停滞的状况生停滞的状况 特殊特殊PREPRE1100B1100B 使能下游端口的使能下游端口的USBUSB总线总线总线总线 的数据的数据传输传输传输传输 切切 换换换换到低速的到低速的设备设备设备设备 表表16-2 16-2 各种信息包的类型与规范各种信息包的类型与规范 嵌入式技术基础与实践嵌入式技术基础与实践 3、数据字段:是用来携带主机与设备之间要传递的信息,其内容和长 度根据包标识符、传输类型的不同而各不相同。在USB包中,数据字段可以 包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总是 首先传输字节的最低位,最后传输字节的最高位。 (1) 设备地址(ADDR)数据域 ADDR数据域由7位组成,可用来寻址多达127个外围设备。 (2) 端点(ENDP)数据域 ENDP数据域由4位组成。通过这4个位最多可寻址出32个端点。这个 ENDP数据域仅用在IN、OUT与SETUP令牌信息包中。对于慢速设备可支持端 点0以及端点1作为中断传输模式,而全速设备则可以拥有16个输入端点( IN)与16个输出端点(OUT)共32个端点。 (3) 帧序列号 当USB令牌包的PID为SOF时,其数据字段必须为11位的帧序列号。帧 序列号由主机产生,且每个数据帧自动加一,最大数值为0x7FF。当帧序列 号达到最大数时将自动从0开始循环。 (4) 数据 它仅存于DATA信息包内,根据不同的传输类型,拥有不同的字节大小 ,从0到1023字节(实时传输)。 嵌入式技术基础与实践嵌入式技术基础与实践 4、循环冗余码CRC字段由不同数目的位所组成 。根据不同的信息包类型,CRC数据域由不同数目 的位所组成。其中重要的数据信息包采用CRC16的 数据域(16个位),而其余的信息包类型则采用 CRC5的数据域(5个位)。其中的循环冗余码校验 CRC,是一种错误检测技术。由于数据在传输时, 有时候会发生错误,因此CRC可根据数据算出一个 校验值,然后依此判断数据的正确性 5、包结尾字段即发送方在包的结尾发出包结 尾信号。USB主机根据EOP判断数据包的结束。 嵌入式技术基础与实践嵌入式技术基础与实践 1令牌(token)包 在USB系统中,只有主机才能发出令牌包。令牌包定义了数据传输的类型,它 是事务处理的第一阶段。令牌包中较为重要的是SETUP、IN和OUT这三个令牌包。它 们用来在根集线器和设备端点之间建立数据传输。一个IN包用来建立一个从设备到 根集线器的数据传送,一个OUT包用来建立从根集线器到设备的数据传输。令牌包 格式如下: 8 8位位8 8位位0102301023位位1616位位 SYNCSYNCPIDPIDPIDPIDDATADATACRC16CRC16 8 8位位8 8位位7 7位位4 4位位5 5位位 SYNCSYNCPIDPIDPIDPIDADDRADDRENDPENDPCRC5CRC5 2 2数据(数据(datadata)包)包 数据封包含有数据封包含有4 4个域:个域:SYNCSYNC、PIDPID、DATADATA与与CRC16CRC16。DATADATA数据域的位数据域的位 值是根据值是根据USBUSB设备的传输速度及传输类型而定,且须以设备的传输速度及传输类型而定,且须以8 8字节为基本单位。也就字节为基本单位。也就 是,若传输的数据不足是,若传输的数据不足8 8字节,或传输到最后所剩余的也不足字节,或传输到最后所剩余的也不足8 8字节,仍须传输字节,仍须传输 8 8字节的数据域。格式如下:字节的数据域。格式如下: 3.3. 握手(握手(HandshakeHandshake)包)包 握手信息包是最简单的信息包类型。在这个握手信息包中仅包含一个握手信息包是最简单的信息包类型。在这个握手信息包中仅包含一个 PIDPID数据域而已,它的格式如下所列:数据域而已,它的格式如下所列: 嵌入式技术基础与实践嵌入式技术基础与实践 在USB上数据信息的一次接收或发送的处理过程称为事 务处理(Transaction)。事务处理的类型包括输入(IN)事务 处理、输出(OUT)事务处理、设置(SETUP)事务处理和帧开始 、帧结尾等类型。在输出(OUT)事务处理和设置(SETUP)事务 处理中,紧接着SETUP和OUT包后的是DATA包,DATA0和 DATA1包是交替地发送的,在DATA包后面,设备将回应一个 握手信号,如果设备可以接收数据,就回应ACK包,如果设 备忙,就回应NAK包,如果设备出错,则回应STALL包;在 IN事务中,IN包后面是设备发来的DATA包或NAK包或STALL 包,若设备忙或出错,就发NAK包或STALL包给主机,若设 备数据准备好发送,则发DATA包,DATA0和DATA1包也是交 替地发送的,紧接着DATA包后面是主机发给设备的握手包 ,ACK表示主机可以接收数据,NAK包代表主机忙,STALL 包代表主机出错。 嵌入式技术基础与实践嵌入式技术基础与实践 1输入(IN)事务处理 输入事务处理表示USB主机从总线上的某个USB设备接收一个数据 包的过程。 正常的输入事务处理 设备忙时的输入事务处理 设备出错时的输入事务处理 嵌入式技术基础与实践嵌入式技术基础与实践 正常的输出事务处理 设备忙时的输出事务处理设备忙时的输出事务处理 设备出错时的输入事务处理设备出错时的输入事务处理 嵌入式技术基础与实践嵌入式技术基础与实践 正常的设置事务处理 设备忙时的设置事务处理设备忙时的设置事务处理 设备出错时的设置事务处理设备出错时的设置事务处理 嵌入式技术基础与实践嵌入式技术基础与实践 在USB的传输中,制定了4种传输类型:控制传输、中断传输、批量传输以及等时 传输。控制传输类型分为23个阶段:设置阶段、数据阶段(无数据控制没有此 阶段)以及状态阶段。根据数据阶段的数据传输的方向,控制传输又可分为3种类 型:控制读取(读取USB描述符)、控制写入(配置USB设备)以及无数据控制。 1控制传输 控制传输是USB传输中最重要的传输。它包含3种类型:控制读取、控制写入以及 无数据控制。这3种控制传输类型又分为23个阶段:设置阶段、数据阶段(无数 据控制没有此阶段)以及状态阶段。 阶段一:设置阶段 主机从USB设备获取配置信息,并设置设备的配置值。 设置阶段的数据交换包含了SETUP令牌封包、紧随其后的DATA0数据封包以及ACK 握手封包。它的作用是执行一个设置(概念含糊)的数据交换,并定义此控制传输 的内容。 嵌入式技术基础与实践嵌入式技术基础与实践 数据传输阶段用来传输主机与设备之间的数据。控制读取是将数据从设 备读到主机上,读取的数据USB设备描述符。该过程如图16-8所示。对每一个 数据信息包而言,首先,主机会发送一个IN令牌信息包,表示要读数据进来。 然后,设备将数据通过DATA1数据信息包回传给主机。最后,主机将以下列的 方式加以响应:当数据已经正确接收时,主机送出ACK令牌信息包;当主机正 在忙碌时,发出NAK握手信息包;当发生了错误时,主机发出STALL握手信息 包。 控制写入则是将数据从主机传到设备上,所传的数据即为对USB设备的配 置信息,该过程如图16-9所示。对每一个数据信息包而言,主机将会送出一个 OUT令牌信息包,表示数据要送出去。紧接着,主机将数据通过DATA0数据信 息包传递至设备。最后,设备将以下列方式加以响应:当数据已经正确接收时 ,设备送出ACK令牌信息包;当设备正在忙碌时,设备发出NAK握手信息包; 当发生了错误时,设备发出STALL握手信息包。 主机 (PC) USB 设备 1. IN令牌封包 2. DATA1数据封包 3. ACK握手封包 图16-8控制读取的IN数据交换的过程示意图 主机 (PC) USB 设备 1.OUT令牌封包 2. DATA1数据封包 3. ACK握手封包 图16-9控制写入的OUT数据交换的过程示意图 嵌入式技术基础与实践嵌入式技术基础与实践 状态阶段用来表示整个传输的过程已完全结束。 状态阶段传输的方向必须与数据阶段的方向相反,即原来是IN令牌 封包,这个阶段应为OUT令牌封包;反之,原来是OUT令牌封包,这个 阶段应为IN令牌封包。对于控制读取而言,主机会送出OUT令牌封包, 其后再跟着0长度的DATA1封包。而此时,设备也会做出相对应的动作 ,送ACK握手封包、NAK握手封包或STALL握手封包。相对地对于控制写 入传输,主机会送出IN令牌封包,然后设备送出表示完成状态阶段的0 长度的DATA1封包,主机再做出相对应的动作:送ACK握手封包、NAK 握手封包或STALL握手封包。 嵌入式技术基础与实践嵌入式技术基础与实践 2实时传输 实时传输适用于必须以固定速率抵达或在指定时刻抵 达,可以容忍偶尔错误的数据上。实时传输一般用于麦 克风、喇叭等设备。 实时传输只需令牌与数据两个信息包阶段,没有握手 包,故数据传错时不会重传。 3批量传输 用于传输大量数据,要求传输不能出错,但对时间没有 要求,适用于打印机、存储设备等。 4中断传输 中断传输方式总是用于对设备的查询,以确定是否有数 据需要传输。因此中断传输的方向总是从USB设备到主 机。 嵌入式技术基础与实践嵌入式技术基础与实践 1描述符 USB描述符就好像是USB外围设备的“身份证” 一样,详细地记录着外围设备相关的一切信息。 为了描述不同的数据,就需以不同类型的USB描述 符来加以描述,它共有以下几种类型:设备描述 符、配置描述符、接口描述符和端点描述符,这 几个描述符是必须具有的,下面将结合实例详细 介绍;其他的描述符,例如,字符串描述符、数 种不同的群组描述符以及报告描述符则可以根据 不同的设备进行选择。 嵌入式技术基础与实践嵌入式技术基础与实践 (1)设备描述符 嵌入式技术基础与实践嵌入式技术基础与实践 (1)设备描述符 嵌入式技术基础与实践嵌入式技术基础与实践 (2)配置描述符 嵌入式技术基础与实践嵌入式技术基础与实践 (3)接口描述符 嵌入式技术基础与实践嵌入式技术基础与实践 (4)端点描述符 嵌入式技术基础与实践嵌入式技术基础与实践 (4)端点描述符 嵌入式技术基础与实践嵌入式技术基础与实践 位移量位移量字段字段值值值值 大小大小( (字字节节节节 ) ) 描述描述 0 0 BmRequesBmReques t Typet Type 1 1 D7-D7-数据数据传输传输传输传输 方向:方向:0 0主机至主机至设备设备设备设备 ,1 1设备设备设备设备 至主机至主机 D6:5-D6:5-类类类类型:型:0 0标标标标准,准,1 1群群组组组组,2 2供供应应应应商商 3 3保留保留 D4:0-D4:0-接收端:接收端:0 0设备设备设备设备 ,1 1接口,接口,2 2端点,端点, 3 3其他,其他,431431保留保留 1 1 bRequestbRequest 1 1 特定特定请请请请求求 2 2 wValuewValue 2 2 传递传递传递传递 一个参数一个参数给设备给设备给设备给设备 4 4 wIndexwIndex 2 2 指定一个接口或端点指定一个接口或端点 6 6 wLengthwLength 2 2 如果有数据如果有数据阶阶阶阶段,段,该该该该域表示所要域表示所要传输传输传输传输 的字的字节节节节大小大小 1.1.清除请求清除请求(Clear Feature) 2.(Clear Feature) 2.获得描述符获得描述符(Get Descriptor)(Get Descriptor) 3.3.设置地址设置地址(Set Address) (Set Address) 4.4.设置状态设置状态(Set Configuration)(Set Configuration) 几个主要的设备请求几个主要的设备请求 嵌入式技术基础与实践嵌入式技术基础与实践 下面结合实例分别介绍几个主要的设备请求。下面结合实例分别介绍几个主要的设备请求。 (1) (1) 清除特性清除特性( (Clear Feature)Clear Feature) 该请求是用来取消一个特性,其格式如下:该请求是用来取消一个特性,其格式如下: bmRequestTypebRequestwValuewIndexwLengthData 00000000B(0端点) 00000001B(1端点) 00000010B(2端点) CLEAR_FEATUR(01H)特性选择0接口端点0无 该请求中的wValue表示特性选择器,它对应的值为:0端点,1设 备。当某个特点不允许取消,或该特性根本不存在,或者是指向一个根 本不存在的接口或端点时,该请求将会导致设备请求失败。如果端点被 固件设为停止状态,主机软件(总线驱动程序)也可以发送一个值为0的 CLEAR_FEATURE命令清除该端点的停止状态,本实例中就是这样使用 该请求的。 嵌入式技术基础与实践嵌入式技术基础与实践 (2) (2) 取得描述符取得描述符(Get Descriptor)(Get Descriptor) 该请求可以取得该请求可以取得USBUSB设备中存在的特定的描述符,其格式如下:设备中存在的特定的描述符,其格式如下: 该请求中的wValue的高字节表示要取的描述符类型,低字节表示描述符的索引 值,描述的类型有:1表示设备描述符,2表示配置描述符,3表示字符串描述符 ,4表示接口描述符,5表示端点描述符。wIndex的值为0或语言ID;当要取的 描述符是字符串描述符时,该域的值为语言ID;当为其他的描述符时,该域为0 。wLength表示要返回的数据长度,如果SETUP阶段的地址使用的是预设地址 0(ENDP字段为0),这时的wLength值会大于实际的描述的值。这是为什么 呢?原因是用户以预设的地址0来取得设备描述符时,不管设多少字节,用户最 多只取其前8字节,即在控制传输过程只有一次数据阶段。但是,如果用户以新 的地址(ENDP字段不为0)来取得设备描述符时,这时wLength的值就要注意 了。 bmRequestTypebRequestwValuewIndexwLengthData 10000000B GET_DESCRIPTOR (06H) 描述符类型与描述符指针0或语言ID 描述符的长 度 各个描述 符 嵌入式技术基础与实践嵌入式技术基础与实践 (3) (3) 设置地址设置地址(Set Address)(Set Address) 该请求给该请求给USBUSB设备设置地址,从而可以对该设备设置地址,从而可以对该USBUSB设备进行进一步的访问。其设备进行进一步的访问。其 格式如下:格式如下: 该请求与其他的请求有一个重要的不同点,该请求下,USB设备一直不改变它的 地址,直到该请求的状态阶段被成功地完成,而其他请求的操作都是在状态阶段 之前完成,可以阅读本实例加深对该点的理解。若特定的设备地址大于127,或 者wIndex 或wLength为非0值,那么该请求不执行。 bmRequestTypebRequestwValuewIndexwLengthData 00000000BSET_ADDRESS(05H)设备地址00无 嵌入式技术基础与实践嵌入式技术基础与实践 (4) (4) 设置配置设置配置(Set Configuration)(Set Configuration) 该请求对设备进行设置。其格式如下:该请求对设备进行设置。其格式如下: bmRequestTypebRequestwValuewIndexwLengthData 00000000B(0端点) 00000001B(1端点) 00000010B(2端点) CLEAR_FEATUR(01H)特性选择0接口端点0无 该请求中的wValue域的低字节表示设置的值,该值必须为0或者与配置描述符 中的配置值相匹配。如果设置值等于0,表示设备在地址状态。如果wIndex 或 wLength为非0值,那么该请求不执行。 嵌入式技术基础与实践嵌入式技术基础与实践 3 设备列举 设备列举可以简单地概括为这样的一个过程:主机通过 USB设备请求来取得设备描述符并对该设备进行配置。该过 程可以简化为如下5个步骤: 第一步,使用预设的地址0取得设备描述符。 第二步,设置设备的新地址。 第三步,使用新地址取得设备描述符。 第四步,取得配置描述符。 第五步,设置配置描述符。 设备列举使用的是控制传输。上述的5个步骤必须符合 控制传输的基本架构,第一步、第三步和第四步使用的是控 制读取,第二步和第五步使用的是无数据控制。 嵌入式技术基础与实践嵌入式技术基础与实践 16.5.1 MC68HC908JB8简介 1MC68HC908JB8 单片机的性能概述 3MHz内部总线频率。 64字节I/O寄存器区。 256字节的片内RAM。 8192字节的片内Flash存储器,具有在线编程能力和保密 功能。 976字节监控ROM。 16字节用户定义矢量区。 2个16位双通道定时器接口模块,每个通道可选择为输入 捕捉、输出比较和脉宽调制输出。 内置USB模块,遵循USB1.1协议。 嵌入式技术基础与实践嵌入式技术基础与实践 16.5.1 MC68HC908JB8简介 2引脚功能 JB8具有20、28、44三种封装形式,下面以44引脚封装的JB8为例,介绍其引脚 功能。 电源类引脚 VDD、VSS(2脚、42脚):电源供给端; VREG(1脚):为3.3V输出,其主要用于USB数据驱动的电压调制; 控制类引脚 (36脚):外部低有效复位输入或输出脚,有内部上拉电阻; (18脚):外部中断输入脚,有内部上拉电阻; I/O类引脚 PTA7/KBA7PTA0/KBA0 (2225、3235脚):8位通用双向I/O口; PTB7PTB0 (3741、35脚):8位通用双向I/O口; PTC7PTC0 (3128、1714脚):8位通用双向I/O口; PTD7PTD0 (1921、106脚):8位通用双向I/O口; PTE4/D-、PTE3/D+ (13、12脚):2位通用双向I/O口;D-、D+用于USB模块; PTE4/D-还可编程对IRQ中断进行触发; PTE2/TCH1 、PTE1/TCH0 、PTE0/TCLK (26、11、27脚):3位通用双向I/O口; TCH1、TCH0、TCLK用于定时器模块TIM; 其它 OSC1、OSC2 (43、44脚):片内振荡器引脚。 嵌入式技术基础与实践嵌入式技术基础与实践 JB8具有20、28、44三 种封装形式,不同封装 只是引脚数量和形式有 所区别,其它方面是一 致的,JB8单片机的封装 见图16-10所示,其中 a,b,c分别给出了28, 20,44三种封装形式的 管脚图。 嵌入式技术基础与实践嵌入式技术基础与实践 3JB8存储器组织 CPU08可寻址64K地址空间 ,所以它的地址范围是 $0000$FFFF,在这 $0000$FFFF的寻址范 围内,分成多个不同区 段,每个区段的作用不 同。MC68HC908JB8单 片机的存储器组织及地 址分配见图16-11。 $0000 $003F $0040 $013F $0140 $DBFF $DC00 $FBFF $FC00 $FDFF $FE00 $FE0F $FE10 $FEDF $FFE0 $FFEF $FFF0 $FFFF 64字节的I/O寄存器区 256字节的RAM区 56000字节未定义区 8192字节Flash存储器区 512字节监视ROM区1 控制及状态寄存器区 464字节监视ROM区2 16字节Flash向量区 16字节保留区 图16-11 JB8存储映像图 嵌入式技术基础与实践嵌入式技术基础与实践 16.5.2 USB功能模块 USB功能模块可以内嵌在 芯片中,也可以外扩。 MC68HC908JB8使用了内嵌的 USB功能模块,如右图所示。 (1 1) USBUSB收发器:收发器:USBUSB的的D+D+和和D-D-数据提供了接口。数据提供了接口。 (2 2)USBUSB控制逻辑控制逻辑 :处理:处理CPUCPU和收发器之间的数据移动。和收发器之间的数据移动。 (3 3)USBUSB寄存器:寄存器:USBUSB寄存器是用来控制和监控寄存器是用来控制和监控USBUSB操作操作 。 (4 4)USBUSB复位信号复位信号: :(5 5)USBUSB悬挂悬挂 (6 6)USBUSB低速设备低速设备 USB控制 逻辑 收 发 器 USB寄存器 D+ D- USB 接口 CPU总线 USB功能模块图 嵌入式技术基础与实践嵌入式技术基础与实践 USBUSB寄存器是用来控制和监视寄存器是用来控制和监视USBUSB操作的,操作的,MC68HC908JB8MC68HC908JB8中中 USBUSB寄存器有如下几种:地址寄存器(寄存器有如下几种:地址寄存器(ADDRADDR)、控制寄存器)、控制寄存器0-0- 4 4(UCR0-UCR4UCR0-UCR4)、状态寄存器)、状态寄存器0-10-1(USR0-USR1USR0-USR1)、中断寄)、中断寄 存器存器0-20-2(UIR0-UIR2UIR0-UIR2)、端点)、端点0 0数据寄存器数据寄存器0-70-7(UE0D0-UE0D0- UE0D7UE0D7)、端点)、端点1 1数据寄存器数据寄存器0-70-7(UE1D0-UE1D7UE1D0-UE1D7)和端点)和端点2 2数数 据寄存器据寄存器0-70-7(UE2D0-UE2D7UE2D0-UE2D7)。下面分别介绍这些寄存器。)。下面分别介绍这些寄存器。 嵌入式技术基础与实践嵌入式技术基础与实践 数据位D7D6D5D4D3D2D1D0 定义义USBENUADD6UADD5UADD4UADD3UADD2UADD1UADD0 复位00000000 1 1)USBUSB地址寄存器(地址寄存器(UADDRUADDR) UADDRUADDR的地址:的地址:$0038$0038,定义如下:,定义如下: D7 D7 USBEN USBEN位:位:USBUSB模块允许位。模块允许位。USBEN=1USBEN=1,允许,允许USBUSB模块,并且模块,并且 PTE4PTE4中断不允许;中断不允许;USBEN=0USBEN=0,不允许,不允许USBUSB模块,包括模块,包括USBUSB中断、复位以及中断、复位以及 复位中断都不允许,并且复位中断都不允许,并且PTE4/D-PTE4/D-和和PTE3/D+PTE3/D+用作高电流开漏输入输出口用作高电流开漏输入输出口 PTE4PTE4和和PTE3PTE3。可读写位。可读写位。 D6D6D0 D0 UADD6 UADD6UADD0UADD0:USBUSB模块的地址。都是可读写位。模块的地址。都是可读写位。 嵌入式技术基础与实践嵌入式技术基础与实践 数据位D7D6D5D4D3D2D1D0 定义义EOPIESUSPNDTXD2IERXD2IETXD1IE未定义义TXD0IERXD0IE 复位00000000 2 2)USBUSB中断寄存器中断寄存器0 0(UIR0UIR0) UIR0UIR0的地址:的地址:$0039$0039,定义如下:,定义如下: D7 D7 EOPIE EOPIE位:位:EOPEOP检测中断允许位。可读写位,检测中断允许位。可读写位,EOPIE=1EOPIE=1,如果,如果EOPEOP被检测到,能产生一被检测到,能产生一 个个CPUCPU中断请求;中断请求;EOPIE=0EOPIE=0,如果,如果EOPEOP被检测到,不能产生一个被检测到,不能产生一个CPUCPU中断请求。中断请求。 D6 D6 SUSPND SUSPND位:位:USBUSB挂起位。可读写位,如果挂起位。可读写位,如果USBUSB总线上连续总线上连续3ms3ms处于闲置状态,则该位处于闲置状态,则该位 将会被软件置位。置该位可以将收发器处于节能模式。在置该位之前,将会被软件置位。置该位可以将收发器处于节能模式。在置该位之前,RESUMFRESUMF标志位必须清零标志位必须清零 ;在;在RESUMFRESUMF置位后,软件必须清掉该位。置位后,软件必须清掉该位。 D5 D5 TXD2IE TXD2IE位:端点位:端点2

温馨提示

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

评论

0/150

提交评论