《USB的通讯协议(通俗易懂)》由会员分享,可在线阅读,更多相关《USB的通讯协议(通俗易懂)(75页珍藏版)》请在金锄头文库上搜索。
1、嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践第16章 USB接口与编程实例主要内容:USB概述USB设备USB物理特性USB通信协议JB8的USB模块的编程方法嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.1 USB概述USB协议有两种:USB1.1和USB2.0。USB2.0和USB1.1完全兼容。USB1.1支持的数据传输率为12Mbps和1.5Mbps(用于慢速外设),USB2.0支持的数据传速率可达480Mbps。在普通用户看来,USB系统就是外设通过一根USB电缆和PC机连接起来。通常把外设称为USB设备,把
2、其所连接的PC机称为USB主机。将指向USB主机的数据传输方向称为上行通信,把指向USB设备的数据传输方向称为下行通信。 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.1 USB概述USB网络采用阶梯式星形拓扑结构,如图网络采用阶梯式星形拓扑结构,如图16-1。一个。一个USB网络中只能有一个主机。网络中只能有一个主机。主机内设置了一个根集线器,提供了主机主机内设置了一个根集线器,提供了主机上的初始附属点。上的初始附属点。集线器集线器(复合设备)(复合设备)游戏杆游戏杆USB设备设备(根阶梯根阶梯)阶梯阶梯0扫描仪扫描仪鼠标鼠标集线器集线器USB设备设备
3、阶梯阶梯1阶梯阶梯2PC主机主机(根集线器)(根集线器)图图16-1 USB主机和主机和USB设备的连接设备的连接 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.1 USB概述主机定时对集线器的状态进行查询。当一个新设主机定时对集线器的状态进行查询。当一个新设主机定时对集线器的状态进行查询。当一个新设主机定时对集线器的状态进行查询。当一个新设备接入集线器时,主机会检测到集线器状态改变,备接入集线器时,主机会检测到集线器状态改变,备接入集线器时,主机会检测到集线器状态改变,备接入集线器时,主机会检测到集线器状态改变,主机发出一个命令使该端口有效并对其进行设
4、置。主机发出一个命令使该端口有效并对其进行设置。主机发出一个命令使该端口有效并对其进行设置。主机发出一个命令使该端口有效并对其进行设置。位于这个端口上的设备进行响应,主机收到关于位于这个端口上的设备进行响应,主机收到关于位于这个端口上的设备进行响应,主机收到关于位于这个端口上的设备进行响应,主机收到关于设备的信息,主机的操作系统确定对这个设备使设备的信息,主机的操作系统确定对这个设备使设备的信息,主机的操作系统确定对这个设备使设备的信息,主机的操作系统确定对这个设备使用那种驱动程序,接着设备被分配一个唯一标识用那种驱动程序,接着设备被分配一个唯一标识用那种驱动程序,接着设备被分配一个唯一标识用
5、那种驱动程序,接着设备被分配一个唯一标识的地址,范围从的地址,范围从的地址,范围从的地址,范围从01270127,其中,其中,其中,其中0 0为所有的设备在为所有的设备在为所有的设备在为所有的设备在没有分配惟一地址时使用的默认地址。主机向它没有分配惟一地址时使用的默认地址。主机向它没有分配惟一地址时使用的默认地址。主机向它没有分配惟一地址时使用的默认地址。主机向它发出内部设置请求。当一个设备从总线上移走时,发出内部设置请求。当一个设备从总线上移走时,发出内部设置请求。当一个设备从总线上移走时,发出内部设置请求。当一个设备从总线上移走时,主机就从其可用资源列表中将这个设备删除。主机就从其可用资源
6、列表中将这个设备删除。主机就从其可用资源列表中将这个设备删除。主机就从其可用资源列表中将这个设备删除。 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.2 USB系统基本概念16.2.1 USB主机USBUSB的所有数据通信(不论是上行通信还是下行的所有数据通信(不论是上行通信还是下行的所有数据通信(不论是上行通信还是下行的所有数据通信(不论是上行通信还是下行通信)都由通信)都由通信)都由通信)都由USBUSB主机启动,所以主机启动,所以主机启动,所以主机启动,所以USBUSB主机在整主机在整主机在整主机在整个数据传输过程中占据着主导地位。在个数据传输过程
7、中占据着主导地位。在个数据传输过程中占据着主导地位。在个数据传输过程中占据着主导地位。在USBUSB系系系系统中只允许有一个主机。从开发人员的角度看,统中只允许有一个主机。从开发人员的角度看,统中只允许有一个主机。从开发人员的角度看,统中只允许有一个主机。从开发人员的角度看,USBUSB主机可分为三个不同的功能模块:客户软主机可分为三个不同的功能模块:客户软主机可分为三个不同的功能模块:客户软主机可分为三个不同的功能模块:客户软件、件、件、件、USBUSB系统软件和系统软件和系统软件和系统软件和USBUSB总线接口。总线接口。总线接口。总线接口。 (1) (1) 客户软件客户软件客户软件客户软
8、件(2) USB(2) USB系统软件系统软件系统软件系统软件(3) USB(3) USB总线接口总线接口总线接口总线接口嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.2 USB系统基本概念16.2.1 USB16.2.1 USB主机主机 (1) (1) 客户软件客户软件客户软件客户软件 客户软件负责和客户软件负责和客户软件负责和客户软件负责和USBUSB设备的功能单元进行通信,以实现其设备的功能单元进行通信,以实现其设备的功能单元进行通信,以实现其设备的功能单元进行通信,以实现其特定功能。一般由开发人员自行开发。客户软件不能直接访特定功能。一般由开发人
9、员自行开发。客户软件不能直接访特定功能。一般由开发人员自行开发。客户软件不能直接访特定功能。一般由开发人员自行开发。客户软件不能直接访问问问问USBUSB设备,其与设备,其与设备,其与设备,其与USBUSB设备功能单元的通信必须经过设备功能单元的通信必须经过设备功能单元的通信必须经过设备功能单元的通信必须经过USBUSB系系系系统软件和统软件和统软件和统软件和USBUSB总线接口模块才能实现。客户软件一般包括总线接口模块才能实现。客户软件一般包括总线接口模块才能实现。客户软件一般包括总线接口模块才能实现。客户软件一般包括USBUSB设备驱动程序和界面应用程序两部分。设备驱动程序和界面应用程序两
10、部分。设备驱动程序和界面应用程序两部分。设备驱动程序和界面应用程序两部分。 USBUSB设备驱动程序负责和设备驱动程序负责和设备驱动程序负责和设备驱动程序负责和USBUSB系统软件进行通信。通常,系统软件进行通信。通常,系统软件进行通信。通常,系统软件进行通信。通常,它向它向它向它向USBUSB总线驱动程序发出总线驱动程序发出总线驱动程序发出总线驱动程序发出I/OI/O请求包(请求包(请求包(请求包(IRPIRP)以启动一次)以启动一次)以启动一次)以启动一次USBUSB数据传输。此外,根据数据传输的方向,它还应提供一数据传输。此外,根据数据传输的方向,它还应提供一数据传输。此外,根据数据传输
11、的方向,它还应提供一数据传输。此外,根据数据传输的方向,它还应提供一个或空或满的数据缓冲区以存储这些数据。个或空或满的数据缓冲区以存储这些数据。个或空或满的数据缓冲区以存储这些数据。个或空或满的数据缓冲区以存储这些数据。 界面应用程序负责和界面应用程序负责和界面应用程序负责和界面应用程序负责和USBUSB设备驱动程序进行通信,以控制设备驱动程序进行通信,以控制设备驱动程序进行通信,以控制设备驱动程序进行通信,以控制USBUSB设备。它是最上层的软件,只能看到向设备。它是最上层的软件,只能看到向设备。它是最上层的软件,只能看到向设备。它是最上层的软件,只能看到向USBUSB设备发送的设备发送的设
12、备发送的设备发送的原始数据和从原始数据和从原始数据和从原始数据和从USBUSB设备接收的最终数据。设备接收的最终数据。设备接收的最终数据。设备接收的最终数据。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.2 USB系统基本概念16.2.1 USB主机主机(2) USB(2) USB系统软件系统软件系统软件系统软件 USBUSB系统软件负责和系统软件负责和系统软件负责和系统软件负责和USBUSB逻辑设备进行配置通信,逻辑设备进行配置通信,逻辑设备进行配置通信,逻辑设备进行配置通信,并管理客户软件启动的数据传输。并管理客户软件启动的数据传输。并管理客户软件启
13、动的数据传输。并管理客户软件启动的数据传输。USBUSB逻辑设备是程逻辑设备是程逻辑设备是程逻辑设备是程序员与序员与序员与序员与USBUSB设备打交道的部分。设备打交道的部分。设备打交道的部分。设备打交道的部分。USBUSB系统软件一般包系统软件一般包系统软件一般包系统软件一般包括括括括USBUSB总线驱动程序和总线驱动程序和总线驱动程序和总线驱动程序和USBUSB主控制器驱动程序这两部主控制器驱动程序这两部主控制器驱动程序这两部主控制器驱动程序这两部分。这些软件通常由操作系统提供,开发人员不必掌分。这些软件通常由操作系统提供,开发人员不必掌分。这些软件通常由操作系统提供,开发人员不必掌分。这
14、些软件通常由操作系统提供,开发人员不必掌握。握。握。握。 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.2 USB系统基本概念16.2.1 USB主机(3) USB(3) USB总线接口总线接口 USBUSB总线接口包括主控制器和根集线器两部分。总线接口包括主控制器和根集线器两部分。总线接口包括主控制器和根集线器两部分。总线接口包括主控制器和根集线器两部分。根集线器为根集线器为根集线器为根集线器为USBUSB系统提供连接起点,用于给系统提供连接起点,用于给系统提供连接起点,用于给系统提供连接起点,用于给USBUSB系统系统系统系统提供一个或多个连接点(端
15、口)。主控制器负责完成提供一个或多个连接点(端口)。主控制器负责完成提供一个或多个连接点(端口)。主控制器负责完成提供一个或多个连接点(端口)。主控制器负责完成主机和主机和主机和主机和USBUSB设备之间数据的实际传输,包括对传输的设备之间数据的实际传输,包括对传输的设备之间数据的实际传输,包括对传输的设备之间数据的实际传输,包括对传输的数据进行串行编解码、差错控制等。该部分与数据进行串行编解码、差错控制等。该部分与数据进行串行编解码、差错控制等。该部分与数据进行串行编解码、差错控制等。该部分与USBUSB系系系系统软件的接口依赖于主控制器的硬件实现,开发人员统软件的接口依赖于主控制器的硬件实
16、现,开发人员统软件的接口依赖于主控制器的硬件实现,开发人员统软件的接口依赖于主控制器的硬件实现,开发人员不必掌握。不必掌握。不必掌握。不必掌握。 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.2 USB系统基本概念16.2.2 USB设备 一个一个一个一个USBUSB设备由三个功能模块组成:设备由三个功能模块组成:设备由三个功能模块组成:设备由三个功能模块组成:USBUSB总线接口、总线接口、总线接口、总线接口、USBUSB逻辑逻辑逻辑逻辑设备和功能单元。这里的设备和功能单元。这里的设备和功能单元。这里的设备和功能单元。这里的USBUSB总线接口指的是总
17、线接口指的是总线接口指的是总线接口指的是USBUSB设备中的串行接口设备中的串行接口设备中的串行接口设备中的串行接口引擎(引擎(引擎(引擎(SIESIE););););USBUSB逻辑设备被逻辑设备被逻辑设备被逻辑设备被USBUSB系统软件看作是一个端点的集合;系统软件看作是一个端点的集合;系统软件看作是一个端点的集合;系统软件看作是一个端点的集合;功能单元被客户软件看作是一个接口的集合。功能单元被客户软件看作是一个接口的集合。功能单元被客户软件看作是一个接口的集合。功能单元被客户软件看作是一个接口的集合。SIESIE、端点和接口都是、端点和接口都是、端点和接口都是、端点和接口都是USBUSB
18、设备的组成单元。为了更好地描述设备的组成单元。为了更好地描述设备的组成单元。为了更好地描述设备的组成单元。为了更好地描述USBUSB设备的特征,设备的特征,设备的特征,设备的特征,USBUSB提出了提出了提出了提出了设备架构的概念。从这个角度来看,可以认为设备架构的概念。从这个角度来看,可以认为设备架构的概念。从这个角度来看,可以认为设备架构的概念。从这个角度来看,可以认为USBUSB设备是由一些配置、设备是由一些配置、设备是由一些配置、设备是由一些配置、接口和端点组成的,即一个接口和端点组成的,即一个接口和端点组成的,即一个接口和端点组成的,即一个USBUSB设备可以含有一个或多个配置,在每
19、设备可以含有一个或多个配置,在每设备可以含有一个或多个配置,在每设备可以含有一个或多个配置,在每个配置中可含有一个或多个接口,在每个接口中可含有若干个端点。个配置中可含有一个或多个接口,在每个接口中可含有若干个端点。个配置中可含有一个或多个接口,在每个接口中可含有若干个端点。个配置中可含有一个或多个接口,在每个接口中可含有若干个端点。其中,配置和接口是对其中,配置和接口是对其中,配置和接口是对其中,配置和接口是对USBUSB设备功能的抽象,实际的数据传输由端点设备功能的抽象,实际的数据传输由端点设备功能的抽象,实际的数据传输由端点设备功能的抽象,实际的数据传输由端点来完成。在使用来完成。在使用
20、来完成。在使用来完成。在使用USBUSB设备前,必须指明其采用的配置和接口。这个步设备前,必须指明其采用的配置和接口。这个步设备前,必须指明其采用的配置和接口。这个步设备前,必须指明其采用的配置和接口。这个步骤一般是在设备接入主机时设备进行自举时完成的,我们在后面会进骤一般是在设备接入主机时设备进行自举时完成的,我们在后面会进骤一般是在设备接入主机时设备进行自举时完成的,我们在后面会进骤一般是在设备接入主机时设备进行自举时完成的,我们在后面会进一步介绍。一步介绍。一步介绍。一步介绍。USBUSB设备使用各种描述符来说明其设备架构,包括设备描设备使用各种描述符来说明其设备架构,包括设备描设备使用
21、各种描述符来说明其设备架构,包括设备描设备使用各种描述符来说明其设备架构,包括设备描述符、配置描述符、接口描述符、端点描述符以及字符串描述符,它述符、配置描述符、接口描述符、端点描述符以及字符串描述符,它述符、配置描述符、接口描述符、端点描述符以及字符串描述符,它述符、配置描述符、接口描述符、端点描述符以及字符串描述符,它们通常被保存在们通常被保存在们通常被保存在们通常被保存在USBUSB设备的固件程序中。设备的固件程序中。设备的固件程序中。设备的固件程序中。 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.2 USB系统基本概念16.2.2 USB设备
22、设备设备设备设备 设备代表一个设备代表一个设备代表一个设备代表一个USBUSB设备,它由一个或多个配置组成。设备描述符设备,它由一个或多个配置组成。设备描述符设备,它由一个或多个配置组成。设备描述符设备,它由一个或多个配置组成。设备描述符用于说明设备的总体信息,并指明其所含的配置的个数。一个用于说明设备的总体信息,并指明其所含的配置的个数。一个用于说明设备的总体信息,并指明其所含的配置的个数。一个用于说明设备的总体信息,并指明其所含的配置的个数。一个USBUSB设设设设备只能有一个设备描述符。备只能有一个设备描述符。备只能有一个设备描述符。备只能有一个设备描述符。 配置配置配置配置 一个一个一
23、个一个USBUSB设备可以包含一个或多个配置,如设备可以包含一个或多个配置,如设备可以包含一个或多个配置,如设备可以包含一个或多个配置,如USBUSB设备的低功耗模设备的低功耗模设备的低功耗模设备的低功耗模式和高功耗模式可分别对应一个配置。在使用式和高功耗模式可分别对应一个配置。在使用式和高功耗模式可分别对应一个配置。在使用式和高功耗模式可分别对应一个配置。在使用USBUSB设备前,必须为其设备前,必须为其设备前,必须为其设备前,必须为其选择一个合适的配置。配置描述符用于说明选择一个合适的配置。配置描述符用于说明选择一个合适的配置。配置描述符用于说明选择一个合适的配置。配置描述符用于说明USB
24、USB设备中各个配置的特设备中各个配置的特设备中各个配置的特设备中各个配置的特性,如配置所含接口的个数等。性,如配置所含接口的个数等。性,如配置所含接口的个数等。性,如配置所含接口的个数等。USBUSB设备的每一个配置都必须有一个设备的每一个配置都必须有一个设备的每一个配置都必须有一个设备的每一个配置都必须有一个配置描述符。配置描述符。配置描述符。配置描述符。 接口接口接口接口 一个配置可以包含一个或多个接口,如对一个光驱来说,当用于一个配置可以包含一个或多个接口,如对一个光驱来说,当用于一个配置可以包含一个或多个接口,如对一个光驱来说,当用于一个配置可以包含一个或多个接口,如对一个光驱来说,
25、当用于文件传输时使用其大容量存储接口;而当用于播放文件传输时使用其大容量存储接口;而当用于播放文件传输时使用其大容量存储接口;而当用于播放文件传输时使用其大容量存储接口;而当用于播放CDCD时,使用其音时,使用其音时,使用其音时,使用其音频接口。接口是端点的集合,可以包含一个或多个可替换设置,用户频接口。接口是端点的集合,可以包含一个或多个可替换设置,用户频接口。接口是端点的集合,可以包含一个或多个可替换设置,用户频接口。接口是端点的集合,可以包含一个或多个可替换设置,用户能够在能够在能够在能够在USBUSB处于配置状态时,改变当前接口所含的个数和特性。接口处于配置状态时,改变当前接口所含的个
26、数和特性。接口处于配置状态时,改变当前接口所含的个数和特性。接口处于配置状态时,改变当前接口所含的个数和特性。接口描述符用于说明描述符用于说明描述符用于说明描述符用于说明USBUSB设备中各个接口的特性,如接口所属的设备类及设备中各个接口的特性,如接口所属的设备类及设备中各个接口的特性,如接口所属的设备类及设备中各个接口的特性,如接口所属的设备类及其子类等。其子类等。其子类等。其子类等。USBUSB设备的每个接口都必须有一个接口描述符。设备的每个接口都必须有一个接口描述符。设备的每个接口都必须有一个接口描述符。设备的每个接口都必须有一个接口描述符。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式
27、技术基础与实践嵌入式技术基础与实践16.2 USB系统基本概念16.2.2 USB设备 端点端点端点端点 端点是端点是端点是端点是USBUSB设备中的实际物理单元,设备中的实际物理单元,设备中的实际物理单元,设备中的实际物理单元,USBUSB数据传输就是在主机和数据传输就是在主机和数据传输就是在主机和数据传输就是在主机和USBUSB设备各个端点之间进行的。端点一般由设备各个端点之间进行的。端点一般由设备各个端点之间进行的。端点一般由设备各个端点之间进行的。端点一般由USBUSB接口芯片提供,例如接口芯片提供,例如接口芯片提供,例如接口芯片提供,例如FreescaleFreescale的的的的M
28、C68HC908JB8MC68HC908JB8。USBUSB设备中的每一个端点都有唯一设备中的每一个端点都有唯一设备中的每一个端点都有唯一设备中的每一个端点都有唯一的端点号,每个端点所支持的数据传输方向一般而言也是确定的:或的端点号,每个端点所支持的数据传输方向一般而言也是确定的:或的端点号,每个端点所支持的数据传输方向一般而言也是确定的:或的端点号,每个端点所支持的数据传输方向一般而言也是确定的:或是输入(是输入(是输入(是输入(ININ)或是输出()或是输出()或是输出()或是输出(OUTOUT),也有些芯片提供的端点的数据方),也有些芯片提供的端点的数据方),也有些芯片提供的端点的数据方
29、),也有些芯片提供的端点的数据方向是可以配置的,例如向是可以配置的,例如向是可以配置的,例如向是可以配置的,例如MC68HC908JB8MC68HC908JB8包含有两个用于数据收发的包含有两个用于数据收发的包含有两个用于数据收发的包含有两个用于数据收发的端点:端点端点:端点端点:端点端点:端点1 1和端点和端点和端点和端点2 2。其中端点。其中端点。其中端点。其中端点1 1只能用于数据发送,即支持输入只能用于数据发送,即支持输入只能用于数据发送,即支持输入只能用于数据发送,即支持输入(ININ),端点),端点),端点),端点2 2既能用于数据发送也可用于数据接收,即支持输入既能用于数据发送也
30、可用于数据接收,即支持输入既能用于数据发送也可用于数据接收,即支持输入既能用于数据发送也可用于数据接收,即支持输入(ININ)和输出()和输出()和输出()和输出(OUTOUT)操作。需要注意的是,在这里数据的传输方)操作。需要注意的是,在这里数据的传输方)操作。需要注意的是,在这里数据的传输方)操作。需要注意的是,在这里数据的传输方向是站在主机的立场上来看得。比如端点向是站在主机的立场上来看得。比如端点向是站在主机的立场上来看得。比如端点向是站在主机的立场上来看得。比如端点1 1只能发送数据,在主机看只能发送数据,在主机看只能发送数据,在主机看只能发送数据,在主机看来是端点来是端点来是端点来
31、是端点1 1向主机输入数据,即向主机输入数据,即向主机输入数据,即向主机输入数据,即ININ操作;当端点操作;当端点操作;当端点操作;当端点2 2配置为接收数据时,配置为接收数据时,配置为接收数据时,配置为接收数据时,主机向端点主机向端点主机向端点主机向端点2 2输出数据,即输出数据,即输出数据,即输出数据,即OUTOUT操作。这一点是初学者比较容易产生操作。这一点是初学者比较容易产生操作。这一点是初学者比较容易产生操作。这一点是初学者比较容易产生混淆的地方。混淆的地方。混淆的地方。混淆的地方。 利用设备地址、端点号和传输方向就可以指定一个端点,并和它利用设备地址、端点号和传输方向就可以指定一
32、个端点,并和它利用设备地址、端点号和传输方向就可以指定一个端点,并和它利用设备地址、端点号和传输方向就可以指定一个端点,并和它进行通信。进行通信。进行通信。进行通信。 0 0号端点比较特殊,它有数据输入号端点比较特殊,它有数据输入号端点比较特殊,它有数据输入号端点比较特殊,它有数据输入ININ和数据输出和数据输出和数据输出和数据输出OUTOUT两个物理单两个物理单两个物理单两个物理单元,且只能支持控制传输。元,且只能支持控制传输。元,且只能支持控制传输。元,且只能支持控制传输。 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.2 USB系统基本概念16.2
33、.2 USB设备 字符串字符串字符串字符串 在在在在USBUSB设备中通常还含有字符串描述符,以说明一些专用信息,设备中通常还含有字符串描述符,以说明一些专用信息,设备中通常还含有字符串描述符,以说明一些专用信息,设备中通常还含有字符串描述符,以说明一些专用信息,如制造商的名称、设备的序列号等。它的内容以如制造商的名称、设备的序列号等。它的内容以如制造商的名称、设备的序列号等。它的内容以如制造商的名称、设备的序列号等。它的内容以UNICODEUNICODE的形式给的形式给的形式给的形式给出,且可以被客户软件所读取。对出,且可以被客户软件所读取。对出,且可以被客户软件所读取。对出,且可以被客户软
34、件所读取。对USBUSB设备来说,字符串描述符是可设备来说,字符串描述符是可设备来说,字符串描述符是可设备来说,字符串描述符是可选的。选的。选的。选的。 管道管道管道管道 在在在在USBUSB系统结构中,可以认为数据传输是在主机软件(系统结构中,可以认为数据传输是在主机软件(系统结构中,可以认为数据传输是在主机软件(系统结构中,可以认为数据传输是在主机软件(USBUSB系统系统系统系统软件或客户软件)和软件或客户软件)和软件或客户软件)和软件或客户软件)和USBUSB设备的各个端点之间直接进行的,它们之间设备的各个端点之间直接进行的,它们之间设备的各个端点之间直接进行的,它们之间设备的各个端点
35、之间直接进行的,它们之间的连接称为管道。管道是在的连接称为管道。管道是在的连接称为管道。管道是在的连接称为管道。管道是在USBUSB设备的配置过程中建立的。管道是对设备的配置过程中建立的。管道是对设备的配置过程中建立的。管道是对设备的配置过程中建立的。管道是对主机和主机和主机和主机和USBUSB设备间通信流的抽象,它表示主机的数据缓冲区和设备间通信流的抽象,它表示主机的数据缓冲区和设备间通信流的抽象,它表示主机的数据缓冲区和设备间通信流的抽象,它表示主机的数据缓冲区和USBUSB设设设设备的端点之间存在着逻辑数据传输,而实际的数据传输是由备的端点之间存在着逻辑数据传输,而实际的数据传输是由备的
36、端点之间存在着逻辑数据传输,而实际的数据传输是由备的端点之间存在着逻辑数据传输,而实际的数据传输是由USBUSB总线总线总线总线接口层来完成的。接口层来完成的。接口层来完成的。接口层来完成的。 管道和管道和管道和管道和USBUSB设备中的端点一一对应。一个设备中的端点一一对应。一个设备中的端点一一对应。一个设备中的端点一一对应。一个USBUSB设备含有多少个端设备含有多少个端设备含有多少个端设备含有多少个端点,其和主机进行通信时就可以使用多少条管道,且端点的类型决定点,其和主机进行通信时就可以使用多少条管道,且端点的类型决定点,其和主机进行通信时就可以使用多少条管道,且端点的类型决定点,其和主
37、机进行通信时就可以使用多少条管道,且端点的类型决定了管道中数据的传输类型,如中断端点对应中断管道,且该管道只能了管道中数据的传输类型,如中断端点对应中断管道,且该管道只能了管道中数据的传输类型,如中断端点对应中断管道,且该管道只能了管道中数据的传输类型,如中断端点对应中断管道,且该管道只能进行中断传输。传输类型在后面会介绍。不论存在着多少条管道,在进行中断传输。传输类型在后面会介绍。不论存在着多少条管道,在进行中断传输。传输类型在后面会介绍。不论存在着多少条管道,在进行中断传输。传输类型在后面会介绍。不论存在着多少条管道,在各个管道中进行的数据传输都是相互独立的。各个管道中进行的数据传输都是相
38、互独立的。各个管道中进行的数据传输都是相互独立的。各个管道中进行的数据传输都是相互独立的。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.3 USB物理特性 16.3.1 USB接口 USBUSB使使使使用用用用一一一一根根根根屏屏屏屏蔽蔽蔽蔽的的的的4 4线线线线电电电电缆缆缆缆与与与与网网网网络络络络上上上上的的的的设设设设备备备备进进进进行行行行互互互互联联联联。数数数数据据据据传传传传输输输输通通通通过过过过一一一一个个个个差差差差分分分分双双双双绞绞绞绞线线线线进进进进行行行行,这这这这两两两两根根根根线线线线分分分分别别别别标标标标为为为为D+
39、D+和和和和D-D-,另另另另外外外外两两两两根根根根线线线线是是是是VccVcc和和和和GroundGround,其其其其中中中中VccVcc向向向向USBUSB设设设设备备备备供供供供电电电电。使使使使用用用用USBUSB电电电电源源源源的的的的设设设设备备备备称称称称为为为为总总总总线线线线供供供供电电电电设设设设备备备备,而而而而使使使使用用用用自自自自己己己己外外外外部部部部电电电电源源源源的的的的设设设设备备备备叫叫叫叫做做做做自自自自供供供供电电电电设设设设备备备备。为为为为了了了了避避避避免免免免混混混混淆,淆,淆,淆,USBUSB电缆中的线都用不同的颜色标记,如表电缆中的线都
40、用不同的颜色标记,如表电缆中的线都用不同的颜色标记,如表电缆中的线都用不同的颜色标记,如表16-116-1所示。所示。所示。所示。引脚编号引脚编号引脚编号引脚编号信号名称信号名称信号名称信号名称缆线颜色缆线颜色缆线颜色缆线颜色1 1VccVcc红红红红2 2Data-(D-)Data-(D-)白白白白3 3Data+(D+)Data+(D+)绿绿绿绿4 4GroundGround黑黑黑黑表表16-1 USB缆线的信号与颜色缆线的信号与颜色 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.3 USB物理特性16.3.1 USB16.3.1 USB接口接口 从
41、从从从一一一一个个个个设设设设备备备备连连连连回回回回到到到到主主主主机机机机,称称称称为为为为上上上上行行行行连连连连接接接接;从从从从主主主主机机机机到到到到设设设设备备备备的的的的连连连连接接接接,称称称称为为为为下下下下行行行行连连连连接接接接。为为为为了了了了防防防防止止止止回回回回环环环环情情情情况况况况的的的的发发发发生生生生,上上上上行行行行和和和和下下下下行行行行端端端端口口口口使使使使用用用用不不不不同同同同的的的的连连连连接接接接器器器器所所所所以以以以USBUSB在在在在电电电电缆缆缆缆和和和和设设设设备备备备的的的的连连连连接接接接中中中中分分分分别别别别采采采采用用
42、用用了了了了两两两两种种种种类类类类型型型型的的的的连连连连接接接接头头头头,即即即即图图图图16-216-2所所所所示示示示的的的的A A型型型型连连连连接接接接头头头头和和和和B B型型型型连连连连接接接接头头头头。每每每每个个个个连连连连接接接接头头头头内内内内的的的的电电电电线线线线号号号号与与与与图图图图16-216-2的的的的引引引引脚脚脚脚编编编编号号号号是是是是一一一一致致致致的的的的。A A型型型型连连连连接接接接头头头头,用用用用于于于于上上上上行行行行连连连连接接接接,即即即即在在在在主主主主机机机机或或或或集集集集线线线线器器器器上上上上有有有有一一一一个个个个A A型
43、型型型插插插插座座座座,而而而而在在在在连连连连接接接接到到到到主主主主机机机机或或或或集集集集线线线线器器器器的的的的电电电电缆缆缆缆的的的的一一一一端端端端是是是是A A型型型型插插插插头头头头。在在在在USBUSB设设设设备备备备上上上上有有有有B B型型型型插插插插座座座座,而而而而B B型型型型插插插插头头头头在在在在从从从从主主主主机机机机或或或或集集集集线线线线器器器器接接接接出出出出的的的的下下下下行行行行电电电电缆缆缆缆的的的的一一一一端端端端。采采采采用用用用这这这这种种种种连连连连接接接接方方方方式式式式,可可可可以以以以确确确确保保保保USBUSB设设设设备备备备、主主
44、主主机机机机/ /集集集集线线线线器器器器和和和和USBUSB电电电电缆缆缆缆始始始始终终终终以以以以正正正正确确确确的的的的方方方方式式式式连连连连接接接接,而而而而不不不不出出出出现现现现电电电电缆缆缆缆接接接接入入入入方方方方式式式式出出出出错错错错,或或或或直直直直接接接接将将将将两两两两个个个个USBUSB设设设设备备备备连接到一起的情况。连接到一起的情况。连接到一起的情况。连接到一起的情况。12341243A型连接头型连接头B型连接头型连接头图图16-2 USB连接头连接头嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.3 USB物理特性16.
45、3.2 USB16.3.2 USB信号信号(1)(1)差分信号技术差分信号技术特点特点特点特点 传统的传输方式大多使用传统的传输方式大多使用传统的传输方式大多使用传统的传输方式大多使用“ “正信号正信号正信号正信号” ”或者或者或者或者“ “负信号负信号负信号负信号” ”二二二二进制表达机制,这些信号利用单线传输。用不同的信号电平进制表达机制,这些信号利用单线传输。用不同的信号电平进制表达机制,这些信号利用单线传输。用不同的信号电平进制表达机制,这些信号利用单线传输。用不同的信号电平范围来分别表示范围来分别表示范围来分别表示范围来分别表示1 1和和和和0 0,它们之间有一个临界值,如果在数,它
46、们之间有一个临界值,如果在数,它们之间有一个临界值,如果在数,它们之间有一个临界值,如果在数据传输过程中受到中低强度的干扰,高低电平不会突破临界据传输过程中受到中低强度的干扰,高低电平不会突破临界据传输过程中受到中低强度的干扰,高低电平不会突破临界据传输过程中受到中低强度的干扰,高低电平不会突破临界值,那么信号传输可以正常进行。但如果遇到强干扰,高低值,那么信号传输可以正常进行。但如果遇到强干扰,高低值,那么信号传输可以正常进行。但如果遇到强干扰,高低值,那么信号传输可以正常进行。但如果遇到强干扰,高低电平突破临界值,由此造成数据传输出错。差分信号技术最电平突破临界值,由此造成数据传输出错。差
47、分信号技术最电平突破临界值,由此造成数据传输出错。差分信号技术最电平突破临界值,由此造成数据传输出错。差分信号技术最大的特点是:必须使用两条线路才能表达一个比特位,用两大的特点是:必须使用两条线路才能表达一个比特位,用两大的特点是:必须使用两条线路才能表达一个比特位,用两大的特点是:必须使用两条线路才能表达一个比特位,用两条线路传输信号的压差作为判断条线路传输信号的压差作为判断条线路传输信号的压差作为判断条线路传输信号的压差作为判断1 1还是还是还是还是0 0的依据。这种做法的依据。这种做法的依据。这种做法的依据。这种做法的优点是具有极强的抗干扰性。倘若遭受外界强烈干扰,两的优点是具有极强的抗
48、干扰性。倘若遭受外界强烈干扰,两的优点是具有极强的抗干扰性。倘若遭受外界强烈干扰,两的优点是具有极强的抗干扰性。倘若遭受外界强烈干扰,两条线路对应的电平同样会出现大幅度提升或降低的情况,但条线路对应的电平同样会出现大幅度提升或降低的情况,但条线路对应的电平同样会出现大幅度提升或降低的情况,但条线路对应的电平同样会出现大幅度提升或降低的情况,但二者的电平改变方向和幅度几乎相同,电压差值就可始终保二者的电平改变方向和幅度几乎相同,电压差值就可始终保二者的电平改变方向和幅度几乎相同,电压差值就可始终保二者的电平改变方向和幅度几乎相同,电压差值就可始终保持相对稳定,因此数据的准确性并不会因干扰噪声而有
49、所降持相对稳定,因此数据的准确性并不会因干扰噪声而有所降持相对稳定,因此数据的准确性并不会因干扰噪声而有所降持相对稳定,因此数据的准确性并不会因干扰噪声而有所降低。低。低。低。 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践(2)USB通信的格式图16-3 在USB电缆上使用双向不归零编码和差动信号的传输 NRZI编码器电缆段差分驱动器NRZI解码器差分驱动器D+ D-USB的数据包使用反向不归零编码(的数据包使用反向不归零编码(NRZI)。图)。图16-3描述了在描述了在USB电缆段上传输信息的步骤。反向不归零编码由传送信息的电缆段上传输信息的步骤。反向不归
50、零编码由传送信息的USB代理程序完成;然后,被编码的数据通过差分驱动器送到代理程序完成;然后,被编码的数据通过差分驱动器送到USB电缆上;接着,接收器将输入的差分信号进行放大,将其送电缆上;接着,接收器将输入的差分信号进行放大,将其送给解码器。使用该编码和差动信号传输方式可以更好地保证数据给解码器。使用该编码和差动信号传输方式可以更好地保证数据的完整性并减少噪声干扰。的完整性并减少噪声干扰。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践(2)USB通信的格式 图16-4 反向不归零编码 空闲数据反 向 不归零码01101000111010使用反向不归零编码方式
51、可以保证数据传输的完整性,而且不使用反向不归零编码方式可以保证数据传输的完整性,而且不要求传输过程中有独立的时钟信号。反向不归零编码不是一个要求传输过程中有独立的时钟信号。反向不归零编码不是一个新的编码方式。它在许多方面都有应用。图新的编码方式。它在许多方面都有应用。图16-4给出了一个数给出了一个数据流和编码之后的结果。在反向不归零编码时,遇到据流和编码之后的结果。在反向不归零编码时,遇到“0”转换,转换,遇到遇到“1”保持。反向不归零码必须保持与输入数据的同步性,保持。反向不归零码必须保持与输入数据的同步性,以确保数据采样正确。反向不归零码数据流必须在一个数据窗以确保数据采样正确。反向不归
52、零码数据流必须在一个数据窗口被采样,无论前一个位时间是否发生过转换。解码器在每个口被采样,无论前一个位时间是否发生过转换。解码器在每个位时间采样数据以检查是否有转换。位时间采样数据以检查是否有转换。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践(2)USB通信的格式 图图16-5在在USB电缆上使用双向不归零编码和差动信号的传输电缆上使用双向不归零编码和差动信号的传输00011111111011数据数据空闲空闲双向不归零码双向不归零码填充后数填充后数据据填充位填充位 若重复相同的若重复相同的“1”信号一直进入时,就会造成数据长时间无法转换,逐渐的积累,信号一直
53、进入时,就会造成数据长时间无法转换,逐渐的积累,而导致接收器最终丢失同步信号的状况,使得读取的时序会发生严重的错误。因此,在而导致接收器最终丢失同步信号的状况,使得读取的时序会发生严重的错误。因此,在NRZI编码之间,还需执行所谓的位填充的工作。位填充要求数据流中如果有连续的六个编码之间,还需执行所谓的位填充的工作。位填充要求数据流中如果有连续的六个“1”就要强行转换。这样接收器在反向不归零码数据流中最多每七个位就检测到一次跳就要强行转换。这样接收器在反向不归零码数据流中最多每七个位就检测到一次跳转。这样就保证了接收器与输入数据流保持同步。反向不归零码的发送器要把转。这样就保证了接收器与输入数
54、据流保持同步。反向不归零码的发送器要把“0”(填(填充位)插到数据流中。接收器必须被设计成能够在连续的六个充位)插到数据流中。接收器必须被设计成能够在连续的六个“1”之后识别一个自动跳之后识别一个自动跳转,并且立即扔掉这六个转,并且立即扔掉这六个“1”之后的之后的“0”位。位。 图图16-5的第一行是送到接收器的原始数据。注意数据流包括连续的八个的第一行是送到接收器的原始数据。注意数据流包括连续的八个“1”。第二。第二行表示对原始数据进行了位填充,在原始的第六个和第七个行表示对原始数据进行了位填充,在原始的第六个和第七个“1”之间填入了一个之间填入了一个“0”。第七个第七个“1”延时一个位时间
55、让填充位插入。接收器知道连续六个延时一个位时间让填充位插入。接收器知道连续六个“1”之后将是一个填充之后将是一个填充位,所以该位就要被忽略。注意,如果原始数据的第七个位是位,所以该位就要被忽略。注意,如果原始数据的第七个位是“0”,填充位也同样插入,填充位也同样插入,在填充过的数据流中就会有两个连续的在填充过的数据流中就会有两个连续的“0”。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践 16.3 USB物理特性16.3.3 16.3.3 检测设备连接和速度检测设备连接和速度检测设备连接和速度检测设备连接和速度在在在在USBUSB设备连接时,设备连接时,设备连
56、接时,设备连接时,USBUSB系统能自动检测到这个连接,并识别出系统能自动检测到这个连接,并识别出系统能自动检测到这个连接,并识别出系统能自动检测到这个连接,并识别出其采用的数据传输速率。其采用的数据传输速率。其采用的数据传输速率。其采用的数据传输速率。USBUSB采用在采用在采用在采用在D+D+或或或或D-D-线上增加上拉电阻线上增加上拉电阻线上增加上拉电阻线上增加上拉电阻的方法来识别低速和全速设备。的方法来识别低速和全速设备。的方法来识别低速和全速设备。的方法来识别低速和全速设备。USBUSB支持三种类型的传输速率:支持三种类型的传输速率:支持三种类型的传输速率:支持三种类型的传输速率:1
57、.5Mb/s1.5Mb/s的低速传输、的低速传输、的低速传输、的低速传输、12Mb/s12Mb/s的全速传输和的全速传输和的全速传输和的全速传输和480Mb/s480Mb/s的高速的高速的高速的高速传输。如图传输。如图传输。如图传输。如图16-616-6和图和图和图和图16-716-7所示。当主控制器或集线器的下行端所示。当主控制器或集线器的下行端所示。当主控制器或集线器的下行端所示。当主控制器或集线器的下行端口上没有口上没有口上没有口上没有USBUSB设备连接时,其设备连接时,其设备连接时,其设备连接时,其D+D+和和和和D-D-线上的下拉电阻使得这两线上的下拉电阻使得这两线上的下拉电阻使得
58、这两线上的下拉电阻使得这两条数据线的电压都是近地的(条数据线的电压都是近地的(条数据线的电压都是近地的(条数据线的电压都是近地的(0V0V);当全速);当全速);当全速);当全速/ /低速设备连接以后,低速设备连接以后,低速设备连接以后,低速设备连接以后,电流流过由集线器的下拉电阻和设备在电流流过由集线器的下拉电阻和设备在电流流过由集线器的下拉电阻和设备在电流流过由集线器的下拉电阻和设备在D+/D-D+/D-的上拉电阻构成的上拉电阻构成的上拉电阻构成的上拉电阻构成的分压器。由于下拉电阻的阻值是的分压器。由于下拉电阻的阻值是的分压器。由于下拉电阻的阻值是的分压器。由于下拉电阻的阻值是15K15K
59、,上拉电阻的阻值是,上拉电阻的阻值是,上拉电阻的阻值是,上拉电阻的阻值是1.5K1.5K,所以在,所以在,所以在,所以在D+/D-D+/D-线上会出现大小为线上会出现大小为线上会出现大小为线上会出现大小为(Vcc*15/Vcc*15/(15+1.515+1.5)的直流高电平电压。当)的直流高电平电压。当)的直流高电平电压。当)的直流高电平电压。当USBUSB主机探测主机探测主机探测主机探测到到到到D+/D-D+/D-线的电压已经接近高电平,而其它的线保持接地时,线的电压已经接近高电平,而其它的线保持接地时,线的电压已经接近高电平,而其它的线保持接地时,线的电压已经接近高电平,而其它的线保持接地
60、时,它就知道全速它就知道全速它就知道全速它就知道全速/ /低速设备已经连接了。低速设备已经连接了。低速设备已经连接了。低速设备已经连接了。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践 16.3 USB物理特性16.3.3 16.3.3 检测设备连接和速度检测设备连接和速度检测设备连接和速度检测设备连接和速度低速低速低速低速USBUSB设备电缆和电阻的连接设备电缆和电阻的连接设备电缆和电阻的连接设备电缆和电阻的连接 全速全速全速全速USBUSB设备电缆和电阻的连接设备电缆和电阻的连接设备电缆和电阻的连接设备电缆和电阻的连接 USB主机主机USB低速低速设备设备
61、USB数据线数据线+5VD+D-15千欧千欧1.5千欧千欧VccD+D-地地15千欧千欧USB主机主机USB全速全速设备设备USB数据线数据线+5VD+D-15千欧千欧1.5千欧千欧VccD+D-地地15千欧千欧嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践 16.4 USB的通讯协议的通讯协议16.4.1 16.4.1 包包 包(包(包(包(PacketPacket)是)是)是)是USBUSB系统中信息传输的基本单元,所有数据都是系统中信息传输的基本单元,所有数据都是系统中信息传输的基本单元,所有数据都是系统中信息传输的基本单元,所有数据都是经过打包后在总线
62、上传输的。经过打包后在总线上传输的。经过打包后在总线上传输的。经过打包后在总线上传输的。USBUSB包由五部分组成,即同步字段包由五部分组成,即同步字段包由五部分组成,即同步字段包由五部分组成,即同步字段(SYNCSYNC)、包标识符字段()、包标识符字段()、包标识符字段()、包标识符字段(PIDPID)、数据字段、循环冗余校验字段)、数据字段、循环冗余校验字段)、数据字段、循环冗余校验字段)、数据字段、循环冗余校验字段(CRCCRC)和包结尾字段()和包结尾字段()和包结尾字段()和包结尾字段(EOPEOP),包的基本格式如下图:),包的基本格式如下图:),包的基本格式如下图:),包的基本
63、格式如下图:同步字段同步字段同步字段同步字段(SYNCSYNC)PIDPID字段字段字段字段数据字段数据字段数据字段数据字段CRCCRC字段字段字段字段包结尾字段包结尾字段包结尾字段包结尾字段(EOPEOP) 1 1、SYNCSYNC字段字段字段字段: :由由由由8 8位组成,作为每个数据封包的前导,用来产位组成,作为每个数据封包的前导,用来产位组成,作为每个数据封包的前导,用来产位组成,作为每个数据封包的前导,用来产生同步作用,使生同步作用,使生同步作用,使生同步作用,使USBUSB设备与总线的包传输率同步,它的数值固定为设备与总线的包传输率同步,它的数值固定为设备与总线的包传输率同步,它的
64、数值固定为设备与总线的包传输率同步,它的数值固定为0000000100000001。 2 2、PIDPID字段字段字段字段: :用来表示数据封包的类型。包标识符中的校验字段用来表示数据封包的类型。包标识符中的校验字段用来表示数据封包的类型。包标识符中的校验字段用来表示数据封包的类型。包标识符中的校验字段是通过对类型字段的每个位求反码产生的,是通过对类型字段的每个位求反码产生的,是通过对类型字段的每个位求反码产生的,是通过对类型字段的每个位求反码产生的, PIDPID字段如下图所示:字段如下图所示:字段如下图所示:字段如下图所示:PID0PID0PID1PID1PID2PID2PID3PID3P
65、ID0PID0PID1PID1PID2PID2PID3PID3嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践表表表表16-216-2中列出了信息包的类型,包括令牌、数据、中列出了信息包的类型,包括令牌、数据、中列出了信息包的类型,包括令牌、数据、中列出了信息包的类型,包括令牌、数据、握手或特殊四种信息包类型。握手或特殊四种信息包类型。握手或特殊四种信息包类型。握手或特殊四种信息包类型。 封包类型封包类型封包类型封包类型PIDPID名称名称名称名称PIDPID编码编码编码编码意义意义意义意义令牌令牌令牌令牌OUTOUT0001B0001B从主机到设备的数据传输从
66、主机到设备的数据传输从主机到设备的数据传输从主机到设备的数据传输ININ1001B1001B从设备到主机的数据传输从设备到主机的数据传输从设备到主机的数据传输从设备到主机的数据传输SOFSOF0101B0101B帧的起始标记与帧码帧的起始标记与帧码帧的起始标记与帧码帧的起始标记与帧码SETUPSETUP1101B1101B从主机到设备。表示要进行控制传输从主机到设备。表示要进行控制传输从主机到设备。表示要进行控制传输从主机到设备。表示要进行控制传输数据数据数据数据DATA0DATA00011B0011B偶数数据封包偶数数据封包偶数数据封包偶数数据封包DATA1DATA11011B1011B奇数
67、数据封包奇数数据封包奇数数据封包奇数数据封包握手握手握手握手ACKACK0010B0010B接收器收到无错误的数据封包接收器收到无错误的数据封包接收器收到无错误的数据封包接收器收到无错误的数据封包NAKNAK1010B1010B接收器无法接收数据或发射器无法送出数接收器无法接收数据或发射器无法送出数接收器无法接收数据或发射器无法送出数接收器无法接收数据或发射器无法送出数据据据据STALLSTALL1110B1110B端点产生停滞的状况端点产生停滞的状况端点产生停滞的状况端点产生停滞的状况特殊特殊特殊特殊PREPRE1100B1100B使能下游端口的使能下游端口的使能下游端口的使能下游端口的US
68、BUSB总线的数据传输切换总线的数据传输切换总线的数据传输切换总线的数据传输切换到低速的设备到低速的设备到低速的设备到低速的设备表表表表16-2 16-2 各种信息包的类型与规范各种信息包的类型与规范各种信息包的类型与规范各种信息包的类型与规范 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践3 3、数据字段、数据字段、数据字段、数据字段: :是用来携带主机与设备之间要传递的信息,其内容和长是用来携带主机与设备之间要传递的信息,其内容和长是用来携带主机与设备之间要传递的信息,其内容和长是用来携带主机与设备之间要传递的信息,其内容和长度根据包标识符、传输类型的不同
69、而各不相同。在度根据包标识符、传输类型的不同而各不相同。在度根据包标识符、传输类型的不同而各不相同。在度根据包标识符、传输类型的不同而各不相同。在USBUSB包中,数据字段可包中,数据字段可包中,数据字段可包中,数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总是首先传输字节的最低位,最后传输字节的最高位。是首先传输字节的最低位,最后传输字节的最高位。是首先传输字节的最低位,最后传
70、输字节的最高位。是首先传输字节的最低位,最后传输字节的最高位。 (1) (1) 设备地址(设备地址(设备地址(设备地址(ADDRADDR)数据域)数据域)数据域)数据域ADDRADDR数据域由数据域由数据域由数据域由7 7位组成,可用来寻址多达位组成,可用来寻址多达位组成,可用来寻址多达位组成,可用来寻址多达127127个外围设备。个外围设备。个外围设备。个外围设备。(2) (2) 端点(端点(端点(端点(ENDPENDP)数据域)数据域)数据域)数据域ENDPENDP数据域由数据域由数据域由数据域由4 4位组成。通过这位组成。通过这位组成。通过这位组成。通过这4 4个位最多可寻址出个位最多可
71、寻址出个位最多可寻址出个位最多可寻址出3232个端点。这个个端点。这个个端点。这个个端点。这个ENDPENDP数据域仅用在数据域仅用在数据域仅用在数据域仅用在ININ、OUTOUT与与与与SETUPSETUP令牌信息包中。对于慢速设备可支令牌信息包中。对于慢速设备可支令牌信息包中。对于慢速设备可支令牌信息包中。对于慢速设备可支持端点持端点持端点持端点0 0以及端点以及端点以及端点以及端点1 1作为中断传输模式,而全速设备则可以拥有作为中断传输模式,而全速设备则可以拥有作为中断传输模式,而全速设备则可以拥有作为中断传输模式,而全速设备则可以拥有1616个输入端个输入端个输入端个输入端点(点(点(
72、点(ININ)与)与)与)与1616个输出端点(个输出端点(个输出端点(个输出端点(OUTOUT)共)共)共)共3232个端点。个端点。个端点。个端点。(3) (3) 帧序列号帧序列号帧序列号帧序列号当当当当USBUSB令牌包的令牌包的令牌包的令牌包的PIDPID为为为为SOFSOF时,其数据字段必须为时,其数据字段必须为时,其数据字段必须为时,其数据字段必须为1111位的帧序列号。位的帧序列号。位的帧序列号。位的帧序列号。帧序列号由主机产生,且每个数据帧自动加一,最大数值为帧序列号由主机产生,且每个数据帧自动加一,最大数值为帧序列号由主机产生,且每个数据帧自动加一,最大数值为帧序列号由主机产
73、生,且每个数据帧自动加一,最大数值为0x7FF0x7FF。当帧。当帧。当帧。当帧序列号达到最大数时将自动从序列号达到最大数时将自动从序列号达到最大数时将自动从序列号达到最大数时将自动从0 0开始循环。开始循环。开始循环。开始循环。(4) (4) 数据数据数据数据它仅存于它仅存于它仅存于它仅存于DATADATA信息包内,根据不同的传输类型,拥有不同的字节大小,信息包内,根据不同的传输类型,拥有不同的字节大小,信息包内,根据不同的传输类型,拥有不同的字节大小,信息包内,根据不同的传输类型,拥有不同的字节大小,从从从从0 0到到到到10231023字节(实时传输)。字节(实时传输)。字节(实时传输)
74、。字节(实时传输)。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践4 4、循环冗余码、循环冗余码、循环冗余码、循环冗余码CRCCRC字段由不同数目的位所组字段由不同数目的位所组字段由不同数目的位所组字段由不同数目的位所组成。根据不同的信息包类型,成。根据不同的信息包类型,成。根据不同的信息包类型,成。根据不同的信息包类型,CRCCRC数据域由不同数据域由不同数据域由不同数据域由不同数目的位所组成。其中重要的数据信息包采用数目的位所组成。其中重要的数据信息包采用数目的位所组成。其中重要的数据信息包采用数目的位所组成。其中重要的数据信息包采用CRC16CRC16的
75、数据域(的数据域(的数据域(的数据域(1616个位),而其余的信息包类个位),而其余的信息包类个位),而其余的信息包类个位),而其余的信息包类型则采用型则采用型则采用型则采用CRC5CRC5的数据域(的数据域(的数据域(的数据域(5 5个位)。其中的循环个位)。其中的循环个位)。其中的循环个位)。其中的循环冗余码校验冗余码校验冗余码校验冗余码校验CRCCRC,是一种错误检测技术。由于数,是一种错误检测技术。由于数,是一种错误检测技术。由于数,是一种错误检测技术。由于数据在传输时,有时候会发生错误,因此据在传输时,有时候会发生错误,因此据在传输时,有时候会发生错误,因此据在传输时,有时候会发生错
76、误,因此CRCCRC可根可根可根可根据数据算出一个校验值,然后依此判断数据的正据数据算出一个校验值,然后依此判断数据的正据数据算出一个校验值,然后依此判断数据的正据数据算出一个校验值,然后依此判断数据的正确性确性确性确性 5 5、包结尾字段即发送方在包的结尾发出包结、包结尾字段即发送方在包的结尾发出包结、包结尾字段即发送方在包的结尾发出包结、包结尾字段即发送方在包的结尾发出包结尾信号。尾信号。尾信号。尾信号。USBUSB主机根据主机根据主机根据主机根据EOPEOP判断数据包的结束。判断数据包的结束。判断数据包的结束。判断数据包的结束。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践
77、嵌入式技术基础与实践16.4.2信息包格式1 1令牌(令牌(tokentoken)包)包在在在在USBUSB系统中,只有主机才能发出令牌包。令牌包定义了数据传输的类型,它系统中,只有主机才能发出令牌包。令牌包定义了数据传输的类型,它系统中,只有主机才能发出令牌包。令牌包定义了数据传输的类型,它系统中,只有主机才能发出令牌包。令牌包定义了数据传输的类型,它是事务处理的第一阶段。令牌包中较为重要的是是事务处理的第一阶段。令牌包中较为重要的是是事务处理的第一阶段。令牌包中较为重要的是是事务处理的第一阶段。令牌包中较为重要的是SETUPSETUP、ININ和和和和OUTOUT这三个令牌包。这三个令牌包
78、。这三个令牌包。这三个令牌包。它们用来在根集线器和设备端点之间建立数据传输。一个它们用来在根集线器和设备端点之间建立数据传输。一个它们用来在根集线器和设备端点之间建立数据传输。一个它们用来在根集线器和设备端点之间建立数据传输。一个ININ包用来建立一个从设备包用来建立一个从设备包用来建立一个从设备包用来建立一个从设备到根集线器的数据传送,一个到根集线器的数据传送,一个到根集线器的数据传送,一个到根集线器的数据传送,一个OUTOUT包用来建立从根集线器到设备的数据传输。令牌包用来建立从根集线器到设备的数据传输。令牌包用来建立从根集线器到设备的数据传输。令牌包用来建立从根集线器到设备的数据传输。令
79、牌包格式如下:包格式如下:包格式如下:包格式如下:8 8位位位位8 8位位位位7 7位位位位4 4位位位位5 5位位位位SYNCSYNCPIDPIDPIDPIDADDRADDRENDPENDPCRC5CRC52 2数据(数据(datadata)包)包数据封包含有数据封包含有数据封包含有数据封包含有4 4个域:个域:个域:个域:SYNCSYNC、PIDPID、DATADATA与与与与CRC16CRC16。DATADATA数据域的位数据域的位数据域的位数据域的位值是根据值是根据值是根据值是根据USBUSB设备的传输速度及传输类型而定,且须以设备的传输速度及传输类型而定,且须以设备的传输速度及传输类
80、型而定,且须以设备的传输速度及传输类型而定,且须以8 8字节为基本单位。也就字节为基本单位。也就字节为基本单位。也就字节为基本单位。也就是,若传输的数据不足是,若传输的数据不足是,若传输的数据不足是,若传输的数据不足8 8字节,或传输到最后所剩余的也不足字节,或传输到最后所剩余的也不足字节,或传输到最后所剩余的也不足字节,或传输到最后所剩余的也不足8 8字节,仍须传输字节,仍须传输字节,仍须传输字节,仍须传输8 8字节的数据域。格式如下:字节的数据域。格式如下:字节的数据域。格式如下:字节的数据域。格式如下:8 8位位位位8 8位位位位0102301023位位位位1616位位位位SYNCSYN
81、CPIDPIDPIDPIDDATADATACRC16CRC16 3.3. 握手(握手(HandshakeHandshake)包)包握手信息包是最简单的信息包类型。在这个握手信息包中仅包含一个握手信息包是最简单的信息包类型。在这个握手信息包中仅包含一个握手信息包是最简单的信息包类型。在这个握手信息包中仅包含一个握手信息包是最简单的信息包类型。在这个握手信息包中仅包含一个PIDPID数据域而已,它的格式如下所列:数据域而已,它的格式如下所列:数据域而已,它的格式如下所列:数据域而已,它的格式如下所列: 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践在在在在USBU
82、SB上数据信息的一次接收或发送的处理过程称为事上数据信息的一次接收或发送的处理过程称为事上数据信息的一次接收或发送的处理过程称为事上数据信息的一次接收或发送的处理过程称为事务处理(务处理(务处理(务处理(TransactionTransaction)。事务处理的类型包括输入)。事务处理的类型包括输入)。事务处理的类型包括输入)。事务处理的类型包括输入(IN)(IN)事事事事务处理、输出务处理、输出务处理、输出务处理、输出(OUT)(OUT)事务处理、设置事务处理、设置事务处理、设置事务处理、设置(SETUP)(SETUP)事务处理和事务处理和事务处理和事务处理和帧开始、帧结尾等类型。在输出帧开
83、始、帧结尾等类型。在输出帧开始、帧结尾等类型。在输出帧开始、帧结尾等类型。在输出(OUT)(OUT)事务处理和设置事务处理和设置事务处理和设置事务处理和设置(SETUP)(SETUP)事务处理中,紧接着事务处理中,紧接着事务处理中,紧接着事务处理中,紧接着SETUPSETUP和和和和OUTOUT包后的是包后的是包后的是包后的是DATADATA包,包,包,包,DATA0DATA0和和和和DATA1DATA1包是交替地发送的,在包是交替地发送的,在包是交替地发送的,在包是交替地发送的,在DATADATA包后面,设备将回应一个握手信号,如果设备可以接收数据,包后面,设备将回应一个握手信号,如果设备可
84、以接收数据,包后面,设备将回应一个握手信号,如果设备可以接收数据,包后面,设备将回应一个握手信号,如果设备可以接收数据,就回应就回应就回应就回应ACKACK包,如果设备忙,就回应包,如果设备忙,就回应包,如果设备忙,就回应包,如果设备忙,就回应NAKNAK包,如果设备出包,如果设备出包,如果设备出包,如果设备出错,则回应错,则回应错,则回应错,则回应STALLSTALL包;在包;在包;在包;在ININ事务中,事务中,事务中,事务中,ININ包后面是设备发来包后面是设备发来包后面是设备发来包后面是设备发来的的的的DATADATA包或包或包或包或NAKNAK包或包或包或包或STALLSTALL包,
85、若设备忙或出错,就发包,若设备忙或出错,就发包,若设备忙或出错,就发包,若设备忙或出错,就发NAKNAK包或包或包或包或STALLSTALL包给主机,若设备数据准备好发送,则发包给主机,若设备数据准备好发送,则发包给主机,若设备数据准备好发送,则发包给主机,若设备数据准备好发送,则发DATADATA包,包,包,包,DATA0DATA0和和和和DATA1DATA1包也是交替地发送的,紧接着包也是交替地发送的,紧接着包也是交替地发送的,紧接着包也是交替地发送的,紧接着DATADATA包后面是主机发给设备的握手包,包后面是主机发给设备的握手包,包后面是主机发给设备的握手包,包后面是主机发给设备的握手
86、包,ACKACK表示主机可以表示主机可以表示主机可以表示主机可以接收数据,接收数据,接收数据,接收数据,NAKNAK包代表主机忙,包代表主机忙,包代表主机忙,包代表主机忙,STALLSTALL包代表主机出错。包代表主机出错。包代表主机出错。包代表主机出错。 16.4.3事务嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践 1 1输入(输入(ININ)事务处理)事务处理输入事务处理表示输入事务处理表示输入事务处理表示输入事务处理表示USBUSB主机从总线上的某个主机从总线上的某个主机从总线上的某个主机从总线上的某个USBUSB设备接收一个数据设备接收一个数据设备接
87、收一个数据设备接收一个数据包的过程。包的过程。包的过程。包的过程。正常的输入事务处理正常的输入事务处理正常的输入事务处理正常的输入事务处理设备忙时的输入事务处理设备忙时的输入事务处理设备忙时的输入事务处理设备忙时的输入事务处理 设备出错时的输入事务处理设备出错时的输入事务处理设备出错时的输入事务处理设备出错时的输入事务处理16.4.3事务嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践 正常的输出事务处理正常的输出事务处理正常的输出事务处理正常的输出事务处理2 2输出(输出(OUTOUT)事务处理)事务处理设备忙时的输出事务处理设备忙时的输出事务处理设备忙时的输
88、出事务处理设备忙时的输出事务处理设备出错时的输入事务处理设备出错时的输入事务处理设备出错时的输入事务处理设备出错时的输入事务处理嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践 正常的设置事务处理正常的设置事务处理正常的设置事务处理正常的设置事务处理 3 3设置(设置(SETUPSETUP)事务处理)事务处理设备忙时的设置事务处理设备忙时的设置事务处理设备忙时的设置事务处理设备忙时的设置事务处理设备出错时的设置事务处理设备出错时的设置事务处理设备出错时的设置事务处理设备出错时的设置事务处理嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础
89、与实践在在在在USBUSB的传输中,制定了的传输中,制定了的传输中,制定了的传输中,制定了4 4种传输类型:控制传输、中断传输、批量传输以及种传输类型:控制传输、中断传输、批量传输以及种传输类型:控制传输、中断传输、批量传输以及种传输类型:控制传输、中断传输、批量传输以及等时传输。控制传输类型分为等时传输。控制传输类型分为等时传输。控制传输类型分为等时传输。控制传输类型分为2 23 3个阶段:设置阶段、数据阶段(无数据控制个阶段:设置阶段、数据阶段(无数据控制个阶段:设置阶段、数据阶段(无数据控制个阶段:设置阶段、数据阶段(无数据控制没有此阶段)以及状态阶段。根据数据阶段的数据传输的方向,控制
90、传输又可没有此阶段)以及状态阶段。根据数据阶段的数据传输的方向,控制传输又可没有此阶段)以及状态阶段。根据数据阶段的数据传输的方向,控制传输又可没有此阶段)以及状态阶段。根据数据阶段的数据传输的方向,控制传输又可分为分为分为分为3 3种类型:控制读取(读取种类型:控制读取(读取种类型:控制读取(读取种类型:控制读取(读取USBUSB描述符)、控制写入(配置描述符)、控制写入(配置描述符)、控制写入(配置描述符)、控制写入(配置USBUSB设备)以设备)以设备)以设备)以及无数据控制。及无数据控制。及无数据控制。及无数据控制。 1 1控制传输控制传输控制传输控制传输控制传输是控制传输是控制传输是
91、控制传输是USBUSB传输中最重要的传输。它包含传输中最重要的传输。它包含传输中最重要的传输。它包含传输中最重要的传输。它包含3 3种类型:控制读取、控制写入种类型:控制读取、控制写入种类型:控制读取、控制写入种类型:控制读取、控制写入以及无数据控制。这以及无数据控制。这以及无数据控制。这以及无数据控制。这3 3种控制传输类型又分为种控制传输类型又分为种控制传输类型又分为种控制传输类型又分为2 23 3个阶段:设置阶段、数据阶个阶段:设置阶段、数据阶个阶段:设置阶段、数据阶个阶段:设置阶段、数据阶段(无数据控制没有此阶段)以及状态阶段。段(无数据控制没有此阶段)以及状态阶段。段(无数据控制没有
92、此阶段)以及状态阶段。段(无数据控制没有此阶段)以及状态阶段。阶段一:设置阶段阶段一:设置阶段阶段一:设置阶段阶段一:设置阶段主机从主机从主机从主机从USBUSB设备获取配置信息,并设置设备的配置值。设备获取配置信息,并设置设备的配置值。设备获取配置信息,并设置设备的配置值。设备获取配置信息,并设置设备的配置值。设置阶段的数据交换包含了设置阶段的数据交换包含了设置阶段的数据交换包含了设置阶段的数据交换包含了SETUPSETUP令牌封包、紧随其后的令牌封包、紧随其后的令牌封包、紧随其后的令牌封包、紧随其后的DATA0DATA0数据封包以数据封包以数据封包以数据封包以及及及及ACKACK握手封包。
93、它的作用是执行一个设置(概念含糊)的数据交换,并定义握手封包。它的作用是执行一个设置(概念含糊)的数据交换,并定义握手封包。它的作用是执行一个设置(概念含糊)的数据交换,并定义握手封包。它的作用是执行一个设置(概念含糊)的数据交换,并定义此控制传输的内容。此控制传输的内容。此控制传输的内容。此控制传输的内容。 16.4.4 USB传输类型嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践 数据传输阶段用来传输主机与设备之间的数据。控制读取是将数据从设备数据传输阶段用来传输主机与设备之间的数据。控制读取是将数据从设备数据传输阶段用来传输主机与设备之间的数据。控制读取
94、是将数据从设备数据传输阶段用来传输主机与设备之间的数据。控制读取是将数据从设备读到主机上,读取的数据读到主机上,读取的数据读到主机上,读取的数据读到主机上,读取的数据USBUSB设备描述符。该过程如图设备描述符。该过程如图设备描述符。该过程如图设备描述符。该过程如图16-816-8所示。对每一个所示。对每一个所示。对每一个所示。对每一个数据信息包而言,首先,主机会发送一个数据信息包而言,首先,主机会发送一个数据信息包而言,首先,主机会发送一个数据信息包而言,首先,主机会发送一个ININ令牌信息包,表示要读数据进来。令牌信息包,表示要读数据进来。令牌信息包,表示要读数据进来。令牌信息包,表示要读
95、数据进来。然后,设备将数据通过然后,设备将数据通过然后,设备将数据通过然后,设备将数据通过DATA1DATA1数据信息包回传给主机。最后,主机将以下列数据信息包回传给主机。最后,主机将以下列数据信息包回传给主机。最后,主机将以下列数据信息包回传给主机。最后,主机将以下列的方式加以响应:当数据已经正确接收时,主机送出的方式加以响应:当数据已经正确接收时,主机送出的方式加以响应:当数据已经正确接收时,主机送出的方式加以响应:当数据已经正确接收时,主机送出ACKACK令牌信息包;当主机令牌信息包;当主机令牌信息包;当主机令牌信息包;当主机正在忙碌时,发出正在忙碌时,发出正在忙碌时,发出正在忙碌时,发
96、出NAKNAK握手信息包;当发生了错误时,主机发出握手信息包;当发生了错误时,主机发出握手信息包;当发生了错误时,主机发出握手信息包;当发生了错误时,主机发出STALLSTALL握手握手握手握手信息包。信息包。信息包。信息包。 控制写入则是将数据从主机传到设备上,所传的数据即为对控制写入则是将数据从主机传到设备上,所传的数据即为对控制写入则是将数据从主机传到设备上,所传的数据即为对控制写入则是将数据从主机传到设备上,所传的数据即为对USBUSB设备的设备的设备的设备的配置信息,该过程如图配置信息,该过程如图配置信息,该过程如图配置信息,该过程如图16-916-9所示。对每一个数据信息包而言,主
97、机将会送出所示。对每一个数据信息包而言,主机将会送出所示。对每一个数据信息包而言,主机将会送出所示。对每一个数据信息包而言,主机将会送出一个一个一个一个OUTOUT令牌信息包,表示数据要送出去。紧接着,主机将数据通过令牌信息包,表示数据要送出去。紧接着,主机将数据通过令牌信息包,表示数据要送出去。紧接着,主机将数据通过令牌信息包,表示数据要送出去。紧接着,主机将数据通过DATA0DATA0数据信息包传递至设备。最后,设备将以下列方式加以响应:当数据已经正确数据信息包传递至设备。最后,设备将以下列方式加以响应:当数据已经正确数据信息包传递至设备。最后,设备将以下列方式加以响应:当数据已经正确数据
98、信息包传递至设备。最后,设备将以下列方式加以响应:当数据已经正确接收时,设备送出接收时,设备送出接收时,设备送出接收时,设备送出ACKACK令牌信息包;当设备正在忙碌时,设备发出令牌信息包;当设备正在忙碌时,设备发出令牌信息包;当设备正在忙碌时,设备发出令牌信息包;当设备正在忙碌时,设备发出NAKNAK握手握手握手握手信息包;当发生了错误时,设备发出信息包;当发生了错误时,设备发出信息包;当发生了错误时,设备发出信息包;当发生了错误时,设备发出STALLSTALL握手信息包。握手信息包。握手信息包。握手信息包。阶段二:数据传输阶段阶段二:数据传输阶段阶段二:数据传输阶段阶段二:数据传输阶段主机
99、主机(PC)(PC)USBUSB设备设备1. IN1. IN令牌封包令牌封包2. DATA12. DATA1数据封包数据封包3. ACK3. ACK握手封包握手封包图图16-816-8控制读取的控制读取的ININ数据交换的过程示意图数据交换的过程示意图主机主机(PC)(PC)USBUSB设备设备1.OUT1.OUT令牌封包令牌封包2. DATA12. DATA1数据封包数据封包3. ACK3. ACK握手封包握手封包图图16-916-9控制写入的控制写入的OUTOUT数据交换的过程示意图数据交换的过程示意图嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践状态阶段
100、用来表示整个传输的过程已完全结束。状态阶段用来表示整个传输的过程已完全结束。状态阶段用来表示整个传输的过程已完全结束。状态阶段用来表示整个传输的过程已完全结束。状态阶段传输的方向必须与数据阶段的方向相反,即原来是状态阶段传输的方向必须与数据阶段的方向相反,即原来是状态阶段传输的方向必须与数据阶段的方向相反,即原来是状态阶段传输的方向必须与数据阶段的方向相反,即原来是ININ令令令令牌封包,这个阶段应为牌封包,这个阶段应为牌封包,这个阶段应为牌封包,这个阶段应为OUTOUT令牌封包;反之,原来是令牌封包;反之,原来是令牌封包;反之,原来是令牌封包;反之,原来是OUTOUT令牌封包,这令牌封包,这
101、令牌封包,这令牌封包,这个阶段应为个阶段应为个阶段应为个阶段应为ININ令牌封包。对于控制读取而言,主机会送出令牌封包。对于控制读取而言,主机会送出令牌封包。对于控制读取而言,主机会送出令牌封包。对于控制读取而言,主机会送出OUTOUT令牌封令牌封令牌封令牌封包,其后再跟着包,其后再跟着包,其后再跟着包,其后再跟着0 0长度的长度的长度的长度的DATA1DATA1封包。而此时,设备也会做出相对应的封包。而此时,设备也会做出相对应的封包。而此时,设备也会做出相对应的封包。而此时,设备也会做出相对应的动作,送动作,送动作,送动作,送ACKACK握手封包、握手封包、握手封包、握手封包、NAKNAK握
102、手封包或握手封包或握手封包或握手封包或STALLSTALL握手封包。相对地对于握手封包。相对地对于握手封包。相对地对于握手封包。相对地对于控制写入传输,主机会送出控制写入传输,主机会送出控制写入传输,主机会送出控制写入传输,主机会送出ININ令牌封包,然后设备送出表示完成状态阶令牌封包,然后设备送出表示完成状态阶令牌封包,然后设备送出表示完成状态阶令牌封包,然后设备送出表示完成状态阶段的段的段的段的0 0长度的长度的长度的长度的DATA1DATA1封包,主机再做出相对应的动作:送封包,主机再做出相对应的动作:送封包,主机再做出相对应的动作:送封包,主机再做出相对应的动作:送ACKACK握手封包
103、、握手封包、握手封包、握手封包、NAKNAK握手封包或握手封包或握手封包或握手封包或STALLSTALL握手封包。握手封包。握手封包。握手封包。阶段三:状态阶段阶段三:状态阶段阶段三:状态阶段阶段三:状态阶段嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践2 2实时传输实时传输实时传输实时传输实时传输适用于必须以固定速率抵达或在指定时刻抵实时传输适用于必须以固定速率抵达或在指定时刻抵实时传输适用于必须以固定速率抵达或在指定时刻抵实时传输适用于必须以固定速率抵达或在指定时刻抵达,可以容忍偶尔错误的数据上。实时传输一般用于麦达,可以容忍偶尔错误的数据上。实时传输一般
104、用于麦达,可以容忍偶尔错误的数据上。实时传输一般用于麦达,可以容忍偶尔错误的数据上。实时传输一般用于麦克风、喇叭等设备。克风、喇叭等设备。克风、喇叭等设备。克风、喇叭等设备。实时传输只需令牌与数据两个信息包阶段,没有握手实时传输只需令牌与数据两个信息包阶段,没有握手实时传输只需令牌与数据两个信息包阶段,没有握手实时传输只需令牌与数据两个信息包阶段,没有握手包,故数据传错时不会重传。包,故数据传错时不会重传。包,故数据传错时不会重传。包,故数据传错时不会重传。3 3批量传输批量传输批量传输批量传输用于传输大量数据,要求传输不能出错,但对时间没有用于传输大量数据,要求传输不能出错,但对时间没有用于
105、传输大量数据,要求传输不能出错,但对时间没有用于传输大量数据,要求传输不能出错,但对时间没有要求,适用于打印机、存储设备等。要求,适用于打印机、存储设备等。要求,适用于打印机、存储设备等。要求,适用于打印机、存储设备等。4 4中断传输中断传输中断传输中断传输中断传输方式总是用于对设备的查询,以确定是否有数中断传输方式总是用于对设备的查询,以确定是否有数中断传输方式总是用于对设备的查询,以确定是否有数中断传输方式总是用于对设备的查询,以确定是否有数据需要传输。因此中断传输的方向总是从据需要传输。因此中断传输的方向总是从据需要传输。因此中断传输的方向总是从据需要传输。因此中断传输的方向总是从USB
106、USB设备到主设备到主设备到主设备到主机。机。机。机。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.4.5设备列举1描述符描述符 USBUSB描述符就好像是描述符就好像是描述符就好像是描述符就好像是USBUSB外围设备的外围设备的外围设备的外围设备的“ “身身身身份证份证份证份证” ”一样,详细地记录着外围设备相关的一一样,详细地记录着外围设备相关的一一样,详细地记录着外围设备相关的一一样,详细地记录着外围设备相关的一切信息。为了描述不同的数据,就需以不同类切信息。为了描述不同的数据,就需以不同类切信息。为了描述不同的数据,就需以不同类切信息。为了描述不
107、同的数据,就需以不同类型的型的型的型的USBUSB描述符来加以描述,它共有以下几种描述符来加以描述,它共有以下几种描述符来加以描述,它共有以下几种描述符来加以描述,它共有以下几种类型:设备描述符、配置描述符、接口描述符类型:设备描述符、配置描述符、接口描述符类型:设备描述符、配置描述符、接口描述符类型:设备描述符、配置描述符、接口描述符和端点描述符,这几个描述符是必须具有的,和端点描述符,这几个描述符是必须具有的,和端点描述符,这几个描述符是必须具有的,和端点描述符,这几个描述符是必须具有的,下面将结合实例详细介绍;其他的描述符,例下面将结合实例详细介绍;其他的描述符,例下面将结合实例详细介绍
108、;其他的描述符,例下面将结合实例详细介绍;其他的描述符,例如,字符串描述符、数种不同的群组描述符以如,字符串描述符、数种不同的群组描述符以如,字符串描述符、数种不同的群组描述符以如,字符串描述符、数种不同的群组描述符以及报告描述符则可以根据不同的设备进行选择。及报告描述符则可以根据不同的设备进行选择。及报告描述符则可以根据不同的设备进行选择。及报告描述符则可以根据不同的设备进行选择。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.4.5设备列举(1)设备描述符)设备描述符嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.
109、4.5设备列举(1)设备描述符)设备描述符嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.4.5设备列举(2)配置描述符)配置描述符嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.4.5设备列举(3)接口描述符)接口描述符嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.4.5设备列举(4)端点描述符)端点描述符嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.4.5设备列举(4)端点描述符)端点描述符嵌入式技术基础与实践嵌入式技术基础与实践嵌入式
110、技术基础与实践嵌入式技术基础与实践2 USB设备请求设备请求 位移量位移量位移量位移量字段值字段值字段值字段值大小大小大小大小( (字节字节字节字节) )描述描述描述描述0 0BmRequesBmRequest Typet Type1 1D7-D7-数据传输方向:数据传输方向:数据传输方向:数据传输方向:0 0主机至设备,主机至设备,主机至设备,主机至设备,1 1设备至主机设备至主机设备至主机设备至主机D6:5-D6:5-类型:类型:类型:类型:0 0标准,标准,标准,标准,1 1群组,群组,群组,群组,2 2供应商供应商供应商供应商 3 3保留保留保留保留D4:0-D4:0-接收端:接收端:
111、接收端:接收端:0 0设备,设备,设备,设备,1 1接口,接口,接口,接口,2 2端点,端点,端点,端点, 3 3其他,其他,其他,其他,431431保留保留保留保留1 1bRequestbRequest1 1特定请求特定请求特定请求特定请求2 2wValuewValue2 2传递一个参数给设备传递一个参数给设备传递一个参数给设备传递一个参数给设备 4 4wIndexwIndex2 2指定一个接口或端点指定一个接口或端点指定一个接口或端点指定一个接口或端点 6 6wLengthwLength2 2如果有数据阶段,该域表示所要传输的字节大小如果有数据阶段,该域表示所要传输的字节大小如果有数据阶段
112、,该域表示所要传输的字节大小如果有数据阶段,该域表示所要传输的字节大小1.1.清除请求清除请求清除请求清除请求(Clear Feature) 2.(Clear Feature) 2.获得描述符获得描述符获得描述符获得描述符(Get Descriptor)(Get Descriptor) 3.3.设置地址设置地址设置地址设置地址(Set Address) (Set Address) 4.4.设置状态设置状态设置状态设置状态(Set Configuration)(Set Configuration)几个主要的设备请求几个主要的设备请求几个主要的设备请求几个主要的设备请求嵌入式技术基础与实践嵌入式技
113、术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践2 USB设备请求设备请求 下面结合实例分别介绍几个主要的设备请求。下面结合实例分别介绍几个主要的设备请求。下面结合实例分别介绍几个主要的设备请求。下面结合实例分别介绍几个主要的设备请求。(1) (1) 清除特性清除特性清除特性清除特性( (Clear Feature)Clear Feature)该请求是用来取消一个特性,其格式如下:该请求是用来取消一个特性,其格式如下:该请求是用来取消一个特性,其格式如下:该请求是用来取消一个特性,其格式如下:bmRequestTypebRequestwValuewIndexwLengthData00000
114、000B(0端点端点)00000001B(1端点端点)00000010B(2端点端点)CLEAR_FEATUR(01H)特特性性选择选择0接口端点接口端点0无无该请求中的该请求中的wValue表示特性选择器,它对应的值为:表示特性选择器,它对应的值为:0端点,端点,1设设备。当某个特点不允许取消,或该特性根本不存在,或者是指向一个根备。当某个特点不允许取消,或该特性根本不存在,或者是指向一个根本不存在的接口或端点时,该请求将会导致设备请求失败。如果端点被本不存在的接口或端点时,该请求将会导致设备请求失败。如果端点被固件设为停止状态,主机软件固件设为停止状态,主机软件(总线驱动程序总线驱动程序)
115、也可以发送一个值为也可以发送一个值为0的的CLEAR_FEATURE命令清除该端点的停止状态,本实例中就是这样使用命令清除该端点的停止状态,本实例中就是这样使用该请求的。该请求的。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践2 USB设备请求设备请求 (2) (2) 取得描述符取得描述符取得描述符取得描述符(Get Descriptor)(Get Descriptor)该请求可以取得该请求可以取得该请求可以取得该请求可以取得USBUSB设备中存在的特定的描述符,其格式如下:设备中存在的特定的描述符,其格式如下:设备中存在的特定的描述符,其格式如下:设备中存在
116、的特定的描述符,其格式如下:该请求中的该请求中的wValue的高字节表示要取的描述符类型,低字节表示描述符的索引的高字节表示要取的描述符类型,低字节表示描述符的索引值,描述的类型有:值,描述的类型有:1表示设备描述符,表示设备描述符,2表示配置描述符,表示配置描述符,3表示字符串描述符,表示字符串描述符,4表示接口描述符,表示接口描述符,5表示端点描述符。表示端点描述符。wIndex的值为的值为0或语言或语言ID;当要取的描;当要取的描述符是字符串描述符时,该域的值为语言述符是字符串描述符时,该域的值为语言ID;当为其他的描述符时,该域为;当为其他的描述符时,该域为0。wLength表示要返回
117、的数据长度,如果表示要返回的数据长度,如果SETUP阶段的地址使用的是预设地址阶段的地址使用的是预设地址0(ENDP字段为字段为0),这时的),这时的wLength值会大于实际的描述的值。这是为什么值会大于实际的描述的值。这是为什么呢?原因是用户以预设的地址呢?原因是用户以预设的地址0来取得设备描述符时,不管设多少字节,用户最来取得设备描述符时,不管设多少字节,用户最多只取其前多只取其前8字节,即在控制传输过程只有一次数据阶段。但是,如果用户以新字节,即在控制传输过程只有一次数据阶段。但是,如果用户以新的地址(的地址(ENDP字段不为字段不为0)来取得设备描述符时,这时)来取得设备描述符时,这
118、时wLength的值就要注意的值就要注意了。了。bmRequestTypebRequestwValuewIndexwLengthData10000000BGET_DESCRIPTOR(06H)描述符类型与描述符指针描述符类型与描述符指针0或语言或语言ID描述符的长描述符的长度度各个描述各个描述符符嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践2 USB设备请求设备请求 (3) (3) 设置地址设置地址设置地址设置地址(Set Address)(Set Address)该请求给该请求给该请求给该请求给USBUSB设备设置地址,从而可以对该设备设置地址,从而可以对
119、该设备设置地址,从而可以对该设备设置地址,从而可以对该USBUSB设备进行进一步的访问。其设备进行进一步的访问。其设备进行进一步的访问。其设备进行进一步的访问。其格式如下:格式如下:格式如下:格式如下:该请求与其他的请求有一个重要的不同点,该请求下,该请求与其他的请求有一个重要的不同点,该请求下,USB设备一直不改变它的设备一直不改变它的地址,直到该请求的状态阶段被成功地完成,而其他请求的操作都是在状态阶段地址,直到该请求的状态阶段被成功地完成,而其他请求的操作都是在状态阶段之前完成,可以阅读本实例加深对该点的理解。若特定的设备地址大于之前完成,可以阅读本实例加深对该点的理解。若特定的设备地址
120、大于127,或,或者者wIndex 或或wLength为非为非0值,那么该请求不执行。值,那么该请求不执行。bmRequestTypebRequestwValuewIndexwLengthData00000000BSET_ADDRESS(05H)设备地址设备地址00无无嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践2 USB设备请求设备请求 (4) (4) 设置配置设置配置设置配置设置配置(Set Configuration)(Set Configuration)该请求对设备进行设置。其格式如下:该请求对设备进行设置。其格式如下:该请求对设备进行设置。其格式如
121、下:该请求对设备进行设置。其格式如下: bmRequestTypebRequestwValuewIndexwLengthData00000000B(0端点端点)00000001B(1端点端点)00000010B(2端点端点)CLEAR_FEATUR(01H)特特性性选择选择0接口端点接口端点0无无该请求中的该请求中的wValue域的低字节表示设置的值,该值必须为域的低字节表示设置的值,该值必须为0或者与配置描述符或者与配置描述符中的配置值相匹配。如果设置值等于中的配置值相匹配。如果设置值等于0,表示设备在地址状态。如果,表示设备在地址状态。如果wIndex 或或 wLength为非为非0值,那
122、么该请求不执行。值,那么该请求不执行。 嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践3 设备列举设备列举可以简单地概括为这样的一个过程:主机通过设备列举可以简单地概括为这样的一个过程:主机通过设备列举可以简单地概括为这样的一个过程:主机通过设备列举可以简单地概括为这样的一个过程:主机通过USBUSB设备请求来取得设备描述符并对该设备进行配置。该过设备请求来取得设备描述符并对该设备进行配置。该过设备请求来取得设备描述符并对该设备进行配置。该过设备请求来取得设备描述符并对该设备进行配置。该过程可以简化为如下程可以简化为如下程可以简化为如下程可以简化为如下5 5个
123、步骤:个步骤:个步骤:个步骤:第一步,使用预设的地址第一步,使用预设的地址第一步,使用预设的地址第一步,使用预设的地址0 0取得设备描述符。取得设备描述符。取得设备描述符。取得设备描述符。第二步,设置设备的新地址。第二步,设置设备的新地址。第二步,设置设备的新地址。第二步,设置设备的新地址。第三步,使用新地址取得设备描述符。第三步,使用新地址取得设备描述符。第三步,使用新地址取得设备描述符。第三步,使用新地址取得设备描述符。第四步,取得配置描述符。第四步,取得配置描述符。第四步,取得配置描述符。第四步,取得配置描述符。第五步,设置配置描述符。第五步,设置配置描述符。第五步,设置配置描述符。第五
124、步,设置配置描述符。设备列举使用的是控制传输。上述的设备列举使用的是控制传输。上述的设备列举使用的是控制传输。上述的设备列举使用的是控制传输。上述的5 5个步骤必须符合个步骤必须符合个步骤必须符合个步骤必须符合控制传输的基本架构,第一步、第三步和第四步使用的是控控制传输的基本架构,第一步、第三步和第四步使用的是控控制传输的基本架构,第一步、第三步和第四步使用的是控控制传输的基本架构,第一步、第三步和第四步使用的是控制读取,第二步和第五步使用的是无数据控制。制读取,第二步和第五步使用的是无数据控制。制读取,第二步和第五步使用的是无数据控制。制读取,第二步和第五步使用的是无数据控制。嵌入式技术基础
125、与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.5 JB8 USB模块的编程方法16.5.1 MC68HC908JB816.5.1 MC68HC908JB8简介简介1 1MC68HC908JB8 MC68HC908JB8 单片机的性能概述单片机的性能概述单片机的性能概述单片机的性能概述3MHz3MHz内部总线频率。内部总线频率。内部总线频率。内部总线频率。6464字节字节字节字节I/OI/O寄存器区。寄存器区。寄存器区。寄存器区。256256字节的片内字节的片内字节的片内字节的片内RAMRAM。81928192字节的片内字节的片内字节的片内字节的片内FlashFlash
126、存储器,具有在线编程能力和存储器,具有在线编程能力和存储器,具有在线编程能力和存储器,具有在线编程能力和保密功能。保密功能。保密功能。保密功能。976976字节监控字节监控字节监控字节监控ROMROM。1616字节用户定义矢量区。字节用户定义矢量区。字节用户定义矢量区。字节用户定义矢量区。2 2个个个个1616位双通道定时器接口模块,每个通道可选择为输位双通道定时器接口模块,每个通道可选择为输位双通道定时器接口模块,每个通道可选择为输位双通道定时器接口模块,每个通道可选择为输入捕捉、输出比较和脉宽调制输出。入捕捉、输出比较和脉宽调制输出。入捕捉、输出比较和脉宽调制输出。入捕捉、输出比较和脉宽调
127、制输出。内置内置内置内置USBUSB模块,遵循模块,遵循模块,遵循模块,遵循USB1.1USB1.1协议。协议。协议。协议。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.5 JB8 USB模块的编程方法16.5.1 MC68HC908JB816.5.1 MC68HC908JB8简介简介2 2引脚功能引脚功能引脚功能引脚功能JB8JB8具有具有具有具有2020、2828、4444三种封装形式,下面以三种封装形式,下面以三种封装形式,下面以三种封装形式,下面以4444引脚封装的引脚封装的引脚封装的引脚封装的JB8JB8为例,介绍其引为例,介绍其引为例,介绍其
128、引为例,介绍其引脚功能。脚功能。脚功能。脚功能。电源类引脚电源类引脚电源类引脚电源类引脚VDDVDD、VSS(2VSS(2脚、脚、脚、脚、4242脚脚脚脚) ):电源供给端;:电源供给端;:电源供给端;:电源供给端;VREG(1VREG(1脚脚脚脚) ):为:为:为:为3.3V3.3V输出,其主要用于输出,其主要用于输出,其主要用于输出,其主要用于USBUSB数据驱动的电压调制;数据驱动的电压调制;数据驱动的电压调制;数据驱动的电压调制;控制类引脚控制类引脚控制类引脚控制类引脚(36(36脚脚脚脚):):外部低有效复位输入或输出脚,有内部上拉电阻;外部低有效复位输入或输出脚,有内部上拉电阻;外
129、部低有效复位输入或输出脚,有内部上拉电阻;外部低有效复位输入或输出脚,有内部上拉电阻;(18(18脚脚脚脚):):外部中断输入脚,有内部上拉电阻;外部中断输入脚,有内部上拉电阻;外部中断输入脚,有内部上拉电阻;外部中断输入脚,有内部上拉电阻;I/OI/O类引脚类引脚类引脚类引脚PTA7/KBA7PTA7/KBA7PTA0/KBA0 (22PTA0/KBA0 (222525、32323535脚脚脚脚) ):8 8位通用双向位通用双向位通用双向位通用双向I/OI/O口;口;口;口;PTB7PTB7PTB0 (37PTB0 (374141、3 35 5脚脚脚脚) ):8 8位通用双向位通用双向位通用
130、双向位通用双向I/OI/O口;口;口;口;PTC7PTC7PTC0 (31PTC0 (312828、17171414脚脚脚脚) ):8 8位通用双向位通用双向位通用双向位通用双向I/OI/O口;口;口;口;PTD7PTD7PTD0 (19PTD0 (192121、10106 6脚脚脚脚) ):8 8位通用双向位通用双向位通用双向位通用双向I/OI/O口;口;口;口;PTE4/D-PTE4/D-、PTE3/D+ (13PTE3/D+ (13、1212脚脚脚脚) ):2 2位通用双向位通用双向位通用双向位通用双向I/OI/O口;口;口;口;D-D-、D+D+用于用于用于用于USBUSB模模模模块;
131、块;块;块;PTE4/D-PTE4/D-还可编程对还可编程对还可编程对还可编程对IRQIRQ中断进行触发;中断进行触发;中断进行触发;中断进行触发;PTE2/TCH1 PTE2/TCH1 、PTE1/TCH0 PTE1/TCH0 、PTE0/TCLK (26PTE0/TCLK (26、1111、2727脚脚脚脚) ):3 3位通用双向位通用双向位通用双向位通用双向I/OI/O口;口;口;口;TCH1TCH1、TCH0TCH0、TCLKTCLK用于定时器模块用于定时器模块用于定时器模块用于定时器模块TIMTIM;其它其它其它其它 OSC1OSC1、OSC2 (43OSC2 (43、4444脚脚脚
132、脚) ):片内振荡器引脚。:片内振荡器引脚。:片内振荡器引脚。:片内振荡器引脚。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践JB8具有具有20、28、44三三种封装形式,不同封装种封装形式,不同封装只是引脚数量和形式有只是引脚数量和形式有所区别,其它方面是一所区别,其它方面是一致的,致的,JB8单片机的封装单片机的封装见图见图16-10所示,其中所示,其中a,b,c分别给出了分别给出了28,20,44三种封装形式的三种封装形式的管脚图。管脚图。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践3 3JB8JB8存储器组织存储器组
133、织存储器组织存储器组织 CPU08CPU08可寻址可寻址可寻址可寻址64K64K地址空地址空地址空地址空间,所以它的地址范围间,所以它的地址范围间,所以它的地址范围间,所以它的地址范围是是是是$0000$0000$FFFF$FFFF,在,在,在,在这这这这$0000$0000$FFFF$FFFF的寻的寻的寻的寻址范围内,分成多个不址范围内,分成多个不址范围内,分成多个不址范围内,分成多个不同区段,每个区段的作同区段,每个区段的作同区段,每个区段的作同区段,每个区段的作用不同。用不同。用不同。用不同。MC68HC908JB8MC68HC908JB8单片单片单片单片机的存储器组织及地址机的存储器组
134、织及地址机的存储器组织及地址机的存储器组织及地址分配见图分配见图分配见图分配见图16-1116-11。$0000$003F$0040$013F$0140$DBFF$DC00$FBFF$FC00$FDFF$FE00$FE0F$FE10$FEDF$FFE0$FFEF$FFF0$FFFF64字节的字节的I/O寄存器区寄存器区256字节的字节的RAM区区56000字节未定义区字节未定义区8192字节字节Flash存储器区存储器区512字节监视字节监视ROM区区1控制及状态寄存器区控制及状态寄存器区464字节监视字节监视ROM区区216字节字节Flash向量区向量区16字节保留区字节保留区图16-11
135、JB8存储映像图 16.5.1 MC68HC908JB8简介嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.5.2 USB16.5.2 USB功能模块功能模块功能模块功能模块 USBUSB功能模块可以内嵌在功能模块可以内嵌在功能模块可以内嵌在功能模块可以内嵌在芯片中,也可以外扩。芯片中,也可以外扩。芯片中,也可以外扩。芯片中,也可以外扩。MC68HC908JB8MC68HC908JB8使用了内嵌使用了内嵌使用了内嵌使用了内嵌的的的的USBUSB功能模块,如右图所示。功能模块,如右图所示。功能模块,如右图所示。功能模块,如右图所示。(1 1) USBUSB收
136、发器:收发器:收发器:收发器:USBUSB的的的的D+D+和和和和D-D-数据提供了接口。数据提供了接口。数据提供了接口。数据提供了接口。(2 2)USBUSB控制逻辑控制逻辑控制逻辑控制逻辑 :处理:处理:处理:处理CPUCPU和收发器之间的数据移动。和收发器之间的数据移动。和收发器之间的数据移动。和收发器之间的数据移动。(3 3)USBUSB寄存器:寄存器:寄存器:寄存器:USBUSB寄存器是用来控制和监控寄存器是用来控制和监控寄存器是用来控制和监控寄存器是用来控制和监控USBUSB操作。操作。操作。操作。 (4 4)USBUSB复位信号复位信号复位信号复位信号: :(5 5)USBUSB
137、悬挂悬挂悬挂悬挂(6 6)USBUSB低速设备低速设备低速设备低速设备USB控制控制逻辑逻辑收收 发发 器器USB寄存器寄存器D+D-USB接口接口CPU总线总线USB功能模块图功能模块图嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器USBUSB寄存器是用来控制和监视寄存器是用来控制和监视寄存器是用来控制和监视寄存器是用来控制和监视USBUSB操作的,操作的,操作的,操作的,MC68HC908JB8MC68HC908JB8中中中中USBUSB寄存器有如下几种:地址寄存器(寄存器有如下几种:
138、地址寄存器(寄存器有如下几种:地址寄存器(寄存器有如下几种:地址寄存器(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数据寄存器数据寄存
139、器数据寄存器数据寄存器0-70-7(UE1D0-UE1D7UE1D0-UE1D7)和端点)和端点)和端点)和端点2 2数数数数据寄存器据寄存器据寄存器据寄存器0-70-7(UE2D0-UE2D7UE2D0-UE2D7)。下面分别介绍这些寄存器。)。下面分别介绍这些寄存器。)。下面分别介绍这些寄存器。)。下面分别介绍这些寄存器。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器1 1)USBUSB地址寄存器(地址寄存器(地址寄存器(地址寄存器(UADDRUADDR)UADDRUADDR的地址:的
140、地址:的地址:的地址:$0038$0038,定义如下:,定义如下:,定义如下:,定义如下: D7 D7 USBEN USBEN位:位:位:位:USBUSB模块允许位。模块允许位。模块允许位。模块允许位。USBEN=1USBEN=1,允许,允许,允许,允许USBUSB模块,并且模块,并且模块,并且模块,并且PTE4PTE4中断不允许;中断不允许;中断不允许;中断不允许;USBEN=0USBEN=0,不允许,不允许,不允许,不允许USBUSB模块,包括模块,包括模块,包括模块,包括USBUSB中断、复位以及中断、复位以及中断、复位以及中断、复位以及复位中断都不允许,并且复位中断都不允许,并且复位中
141、断都不允许,并且复位中断都不允许,并且PTE4/D-PTE4/D-和和和和PTE3/D+PTE3/D+用作高电流开漏输入输出口用作高电流开漏输入输出口用作高电流开漏输入输出口用作高电流开漏输入输出口PTE4PTE4和和和和PTE3PTE3。可读写位。可读写位。可读写位。可读写位。 D6D6D0 D0 UADD6 UADD6UADD0UADD0:USBUSB模块的地址。都是可读写位。模块的地址。都是可读写位。模块的地址。都是可读写位。模块的地址。都是可读写位。数据位数据位D7D6D5D4D3D2D1D0定义定义USBENUADD6UADD5UADD4UADD3UADD2UADD1UADD0复位复
142、位00000000嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器2 2)USBUSB中断寄存器中断寄存器中断寄存器中断寄存器0 0(UIR0UIR0)UIR0UIR0的地址:的地址:的地址:的地址:$0039$0039,定义如下:,定义如下:,定义如下:,定义如下: D7 D7 EOPIE EOPIE位:位:位:位:EOPEOP检测中断允许位。可读写位,检测中断允许位。可读写位,检测中断允许位。可读写位,检测中断允许位。可读写位,EOPIE=1EOPIE=1,如果,如果,如果,如果EOPE
143、OP被检测到,能产生一被检测到,能产生一被检测到,能产生一被检测到,能产生一个个个个CPUCPU中断请求;中断请求;中断请求;中断请求;EOPIE=0EOPIE=0,如果,如果,如果,如果EOPEOP被检测到,不能产生一个被检测到,不能产生一个被检测到,不能产生一个被检测到,不能产生一个CPUCPU中断请求。中断请求。中断请求。中断请求。 D6 D6 SUSPND SUSPND位:位:位:位:USBUSB挂起位。可读写位,如果挂起位。可读写位,如果挂起位。可读写位,如果挂起位。可读写位,如果USBUSB总线上连续总线上连续总线上连续总线上连续3ms3ms处于闲置状态,则该位处于闲置状态,则该位
144、处于闲置状态,则该位处于闲置状态,则该位将会被软件置位。置该位可以将收发器处于节能模式。在置该位之前,将会被软件置位。置该位可以将收发器处于节能模式。在置该位之前,将会被软件置位。置该位可以将收发器处于节能模式。在置该位之前,将会被软件置位。置该位可以将收发器处于节能模式。在置该位之前,RESUMFRESUMF标志位必须清零;标志位必须清零;标志位必须清零;标志位必须清零;在在在在RESUMFRESUMF置位后,软件必须清掉该位。置位后,软件必须清掉该位。置位后,软件必须清掉该位。置位后,软件必须清掉该位。 D5 D5 TXD2IE TXD2IE位:端点位:端点位:端点位:端点2 2输出中断允
145、许位。可读写位,输出中断允许位。可读写位,输出中断允许位。可读写位,输出中断允许位。可读写位,TXD2IE=1TXD2IE=1,输出端点,输出端点,输出端点,输出端点2 2能产生一个能产生一个能产生一个能产生一个CPUCPU中断请求;中断请求;中断请求;中断请求;TXD2IE=0TXD2IE=0,输出端点,输出端点,输出端点,输出端点2 2不能产生一个不能产生一个不能产生一个不能产生一个CPUCPU中断请求。中断请求。中断请求。中断请求。 D4 D4 RXD2IE RXD2IE位:端点位:端点位:端点位:端点2 2接收中断允许位。可读写位,接收中断允许位。可读写位,接收中断允许位。可读写位,接
146、收中断允许位。可读写位,RXD2IE=1RXD2IE=1,输入端点,输入端点,输入端点,输入端点2 2能产生一个能产生一个能产生一个能产生一个CPUCPU中断请求;中断请求;中断请求;中断请求;RXD2IE =0RXD2IE =0,接收端点,接收端点,接收端点,接收端点2 2不能产生一个不能产生一个不能产生一个不能产生一个CPUCPU中断请求。中断请求。中断请求。中断请求。 D3 D3 TXD1IE TXD1IE位:端点位:端点位:端点位:端点1 1输出中断允许位。可读写位,输出中断允许位。可读写位,输出中断允许位。可读写位,输出中断允许位。可读写位,TXD1IE=1TXD1IE=1,输出端点
147、,输出端点,输出端点,输出端点1 1能产生一个能产生一个能产生一个能产生一个CPUCPU中断请求;中断请求;中断请求;中断请求;TXD1IE=0TXD1IE=0,输出端点,输出端点,输出端点,输出端点1 1不能产生一个不能产生一个不能产生一个不能产生一个CPUCPU中断请求。中断请求。中断请求。中断请求。 D1 D1 TXD0IE TXD0IE位:端点位:端点位:端点位:端点0 0输出中断允许位。可读写位,输出中断允许位。可读写位,输出中断允许位。可读写位,输出中断允许位。可读写位,TXD0IE=1TXD0IE=1,输出端点,输出端点,输出端点,输出端点0 0能产生一个能产生一个能产生一个能产
148、生一个CPUCPU中断请求;中断请求;中断请求;中断请求;TXD0IE=0TXD0IE=0,输出端点,输出端点,输出端点,输出端点0 0不能产生一个不能产生一个不能产生一个不能产生一个CPUCPU中断请求。中断请求。中断请求。中断请求。 D0 D0 RXD0IE RXD0IE位:端点位:端点位:端点位:端点0 0接收中断允许位。可读写位,接收中断允许位。可读写位,接收中断允许位。可读写位,接收中断允许位。可读写位,RXD0IE=1RXD0IE=1,输入端点,输入端点,输入端点,输入端点0 0能产生一个能产生一个能产生一个能产生一个CPUCPU中断请求;中断请求;中断请求;中断请求;RXD0IE
149、 =0RXD0IE =0,接收端点,接收端点,接收端点,接收端点0 0不能产生一个不能产生一个不能产生一个不能产生一个CPUCPU中断请求。中断请求。中断请求。中断请求。数据位数据位D7D6D5D4D3D2D1D0定义定义EOPIESUSPNDTXD2IERXD2IETXD1IE未定义未定义TXD0IERXD0IE复位复位00000000嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器3 3)USBUSB中断寄存器中断寄存器中断寄存器中断寄存器1 1(UIR1UIR1)UIR1UIR1的地址
150、:的地址:的地址:的地址:$003A$003A,定义如下:,定义如下:,定义如下:,定义如下: 该寄存器所有的位均为只读位。该寄存器所有的位均为只读位。该寄存器所有的位均为只读位。该寄存器所有的位均为只读位。 D7 D7 EOPF EOPF位:位:位:位:EOPEOP检测标志位。检测标志位。检测标志位。检测标志位。EOPF=1EOPF=1,EOPEOP被检测到;被检测到;被检测到;被检测到;EOPF=0EOPF=0,EOPEOP没有没有没有没有被检测到。被检测到。被检测到。被检测到。 D6 D6 RSTF RSTF位:位:位:位:USBUSB复位标志位。在复位标志位。在复位标志位。在复位标志位
151、。在D+D+和和和和D-D-上,当一个合法的复位信号状态被检测上,当一个合法的复位信号状态被检测上,当一个合法的复位信号状态被检测上,当一个合法的复位信号状态被检测到,该位被置到,该位被置到,该位被置到,该位被置1 1。 D5 D5 TXD2F TXD2F位:端点位:端点位:端点位:端点2 2输出标志位。当存放在端点输出标志位。当存放在端点输出标志位。当存放在端点输出标志位。当存放在端点2 2输出缓冲区中的数据被送出,并输出缓冲区中的数据被送出,并输出缓冲区中的数据被送出,并输出缓冲区中的数据被送出,并且接收到一个从主机发送的且接收到一个从主机发送的且接收到一个从主机发送的且接收到一个从主机发
152、送的ACKACK握手包,该位被置握手包,该位被置握手包,该位被置握手包,该位被置1 1。 D4 D4 RXD2F RXD2F位:端点位:端点位:端点位:端点2 2数据接收标志位。当数据接收标志位。当数据接收标志位。当数据接收标志位。当USBUSB模块接收到了一个数据包,并返回模块接收到了一个数据包,并返回模块接收到了一个数据包,并返回模块接收到了一个数据包,并返回一个一个一个一个ACKACK握手包后,该位被置握手包后,该位被置握手包后,该位被置握手包后,该位被置1 1。 D3 D3 TXD1F TXD1F位:端点位:端点位:端点位:端点1 1输出标志位。当存放在端点输出标志位。当存放在端点输出
153、标志位。当存放在端点输出标志位。当存放在端点1 1输出缓冲区中的数据被送出,并输出缓冲区中的数据被送出,并输出缓冲区中的数据被送出,并输出缓冲区中的数据被送出,并且一个从主机发送的且一个从主机发送的且一个从主机发送的且一个从主机发送的ACKACK握手包被接收到,该位被置握手包被接收到,该位被置握手包被接收到,该位被置握手包被接收到,该位被置1 1。 D2 D2 RESUMF RESUMF位:唤醒标志位。当位:唤醒标志位。当位:唤醒标志位。当位:唤醒标志位。当SUSPNDSUSPND位置位置位置位置1 1,并且,并且,并且,并且USBUSB总线被激活,该位被总线被激活,该位被总线被激活,该位被总
154、线被激活,该位被置置置置1 1。 D1 D1 TXD0F TXD0F位:端点位:端点位:端点位:端点0 0输出标志位。当存放在端点输出标志位。当存放在端点输出标志位。当存放在端点输出标志位。当存放在端点0 0输出缓冲区中的数据被送出,并输出缓冲区中的数据被送出,并输出缓冲区中的数据被送出,并输出缓冲区中的数据被送出,并且一个从主机发送的且一个从主机发送的且一个从主机发送的且一个从主机发送的ACKACK握手包被接收到,该位被置握手包被接收到,该位被置握手包被接收到,该位被置握手包被接收到,该位被置1 1。 D0 D0 RXD0F RXD0F位:端点位:端点位:端点位:端点0 0数据接收标志位。当
155、数据接收标志位。当数据接收标志位。当数据接收标志位。当USBUSB模块接收到了一个数据包,并返回模块接收到了一个数据包,并返回模块接收到了一个数据包,并返回模块接收到了一个数据包,并返回一个一个一个一个ACKACK握手包后,该位被置握手包后,该位被置握手包后,该位被置握手包后,该位被置1 1。数据位数据位D7D6D5D4D3D2D1D0定义定义EOPFRSTFTXD2FRXD2FTXD1FRESUMFTXD0FRXD0F复位复位00000000嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器
156、4 4)USBUSB中断寄存器中断寄存器中断寄存器中断寄存器2 2(UIR2UIR2) UIR2UIR2的地址:的地址:的地址:的地址:$001B$001B,定义如下:,定义如下:,定义如下:,定义如下: 该寄存器所有的位均为只写位。该寄存器所有的位均为只写位。该寄存器所有的位均为只写位。该寄存器所有的位均为只写位。 D7 D7 EOPFR EOPFR位:位:位:位:EOPEOP标志位复位。写标志位复位。写标志位复位。写标志位复位。写“ “1 1” ”到该位将清到该位将清到该位将清到该位将清EOPFEOPF位,写位,写位,写位,写“ “0 0” ”到该位不产生任何影到该位不产生任何影到该位不产
157、生任何影到该位不产生任何影响。复位将清该位。响。复位将清该位。响。复位将清该位。响。复位将清该位。 D6 D6 RSTFR RSTFR位:清复位指示器位。写位:清复位指示器位。写位:清复位指示器位。写位:清复位指示器位。写“ “1 1” ”到该位将清到该位将清到该位将清到该位将清RSTFRSTF位,写位,写位,写位,写“ “0 0” ”到该位不产生任何影到该位不产生任何影到该位不产生任何影到该位不产生任何影响。复位将清该位。响。复位将清该位。响。复位将清该位。响。复位将清该位。 D5 D5 TXD2FR TXD2FR位:端点位:端点位:端点位:端点2 2输出标志位复位。写输出标志位复位。写输出
158、标志位复位。写输出标志位复位。写“ “1 1” ”到该位将清到该位将清到该位将清到该位将清TXD2FTXD2F位,写位,写位,写位,写“ “0 0” ”到该位不产到该位不产到该位不产到该位不产生任何影响。复位将清该位。生任何影响。复位将清该位。生任何影响。复位将清该位。生任何影响。复位将清该位。 D4 D4 RXD2FR RXD2FR位:端点位:端点位:端点位:端点2 2数据接收标志位复位。写数据接收标志位复位。写数据接收标志位复位。写数据接收标志位复位。写“ “1 1” ”到该位将清到该位将清到该位将清到该位将清RXD2FRXD2F位,写位,写位,写位,写“ “0 0” ”到该位到该位到该位
159、到该位不产生任何影响。复位将清该位。不产生任何影响。复位将清该位。不产生任何影响。复位将清该位。不产生任何影响。复位将清该位。 D3 D3 TXD1FR TXD1FR位:端点位:端点位:端点位:端点1 1输出标志位复位。写输出标志位复位。写输出标志位复位。写输出标志位复位。写“ “1 1” ”到该位将清到该位将清到该位将清到该位将清TXD1FTXD1F位,写位,写位,写位,写“ “0 0” ”到该位不产到该位不产到该位不产到该位不产生任何影响。复位将清该位。生任何影响。复位将清该位。生任何影响。复位将清该位。生任何影响。复位将清该位。 D2 D2 RESUMFR RESUMFR位:唤醒标志位复
160、位。写位:唤醒标志位复位。写位:唤醒标志位复位。写位:唤醒标志位复位。写“ “1 1” ”到该位将清到该位将清到该位将清到该位将清RESUMFRESUMF位,写位,写位,写位,写“ “0 0” ”到该位不产生到该位不产生到该位不产生到该位不产生任何影响。复位将清该位。任何影响。复位将清该位。任何影响。复位将清该位。任何影响。复位将清该位。 D1 D1 TXD0FR TXD0FR位:端点位:端点位:端点位:端点0 0输出标志位复位。写输出标志位复位。写输出标志位复位。写输出标志位复位。写“ “1 1” ”到该位将清到该位将清到该位将清到该位将清TXD0FTXD0F位,写位,写位,写位,写“ “0
161、 0” ”到该位不产到该位不产到该位不产到该位不产生任何影响。复位将清该位。生任何影响。复位将清该位。生任何影响。复位将清该位。生任何影响。复位将清该位。 D0 D0 RXD0FR RXD0FR位:端点位:端点位:端点位:端点0 0数据接收标志位复位。写数据接收标志位复位。写数据接收标志位复位。写数据接收标志位复位。写“ “1 1” ”到该位将清到该位将清到该位将清到该位将清RXD0FRXD0F位,写位,写位,写位,写“ “0 0” ”到该位到该位到该位到该位不产生任何影响。复位将清该位。不产生任何影响。复位将清该位。不产生任何影响。复位将清该位。不产生任何影响。复位将清该位。数据位数据位D7
162、D6D5D4D3D2D1D0定义定义EOPFRRSTFRTXD2FRRXD2FRTXD1FRRESUMFRTXD0FRRXD0FR复位复位00000000嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器5 5)USBUSB控制寄存器控制寄存器控制寄存器控制寄存器0 0(UCR0UCR0)UCR0UCR0的地址:的地址:的地址:的地址:$003B$003B,定义如下:,定义如下:,定义如下:,定义如下: D7 D7 T0SEQ T0SEQ位:端点位:端点位:端点位:端点0 0输出序列位。该位为
163、可读可写位,它决定端点输出序列位。该位为可读可写位,它决定端点输出序列位。该位为可读可写位,它决定端点输出序列位。该位为可读可写位,它决定端点0 0的下一个的下一个的下一个的下一个ININ事务发何种事务发何种事务发何种事务发何种类型的数据包(类型的数据包(类型的数据包(类型的数据包(DATA0DATA0或者或者或者或者DATA1DATA1)。)。)。)。TOSEQTOSEQ1 1,表示端点,表示端点,表示端点,表示端点0 0下一个发送的是下一个发送的是下一个发送的是下一个发送的是DATA1DATA1包,包,包,包,TOSEQ=0TOSEQ=0,表示端点,表示端点,表示端点,表示端点0 0下一个
164、发送的是下一个发送的是下一个发送的是下一个发送的是DATA0DATA0包。复位将清除该位。包。复位将清除该位。包。复位将清除该位。包。复位将清除该位。 D5 D5 TX0E TX0E位:端点位:端点位:端点位:端点0 0输出允许位。该位为可读可写位,当输出允许位。该位为可读可写位,当输出允许位。该位为可读可写位,当输出允许位。该位为可读可写位,当USBUSB主控制器向端点主控制器向端点主控制器向端点主控制器向端点0 0发送一个发送一个发送一个发送一个ININ事事事事务时,该位可以允许发送。当数据准备好发送后,软件应该将该位置务时,该位可以允许发送。当数据准备好发送后,软件应该将该位置务时,该位
165、可以允许发送。当数据准备好发送后,软件应该将该位置务时,该位可以允许发送。当数据准备好发送后,软件应该将该位置“ “1 1” ”,当端点,当端点,当端点,当端点0 0没有数据被没有数据被没有数据被没有数据被发送时,该位必须被清发送时,该位必须被清发送时,该位必须被清发送时,该位必须被清“ “0 0” ”。如果该位是。如果该位是。如果该位是。如果该位是“ “0 0” ”,或者,或者,或者,或者TXD0FTXD0F位为位为位为位为“ “1 1” ”,USBUSB设备将对端点设备将对端点设备将对端点设备将对端点0 0的的的的任何一个任何一个任何一个任何一个ININ事务返回一个事务返回一个事务返回一个
166、事务返回一个NAKNAK握手包。复位将清除该位。握手包。复位将清除该位。握手包。复位将清除该位。握手包。复位将清除该位。TX0E=1,TX0E=1,表示数据准备好,可以发送,表示数据准备好,可以发送,表示数据准备好,可以发送,表示数据准备好,可以发送,TX0ETX0E0 0,表示数据没准备好,以,表示数据没准备好,以,表示数据没准备好,以,表示数据没准备好,以NAKNAK包作为回应。包作为回应。包作为回应。包作为回应。 D4 D4 RX0E RX0E位:端点位:端点位:端点位:端点0 0接收允许位。该位为可读可写位,当接收允许位。该位为可读可写位,当接收允许位。该位为可读可写位,当接收允许位。
167、该位为可读可写位,当USBUSB主控制器向端点主控制器向端点主控制器向端点主控制器向端点0 0发送一个发送一个发送一个发送一个OUTOUT事务时,该位可以允许接收。当准备好接收数据后,软件应该将该位置事务时,该位可以允许接收。当准备好接收数据后,软件应该将该位置事务时,该位可以允许接收。当准备好接收数据后,软件应该将该位置事务时,该位可以允许接收。当准备好接收数据后,软件应该将该位置“ “1 1” ”,当没有数据被接收,当没有数据被接收,当没有数据被接收,当没有数据被接收时,该位必须被清时,该位必须被清时,该位必须被清时,该位必须被清“ “0 0” ”。如果该位是。如果该位是。如果该位是。如果
168、该位是“ “0 0” ”,或者,或者,或者,或者RXD0FRXD0F位为位为位为位为“ “1 1” ”,USBUSB设备将对端点设备将对端点设备将对端点设备将对端点0 0的任何的任何的任何的任何一个一个一个一个OUTOUT事务返回一个事务返回一个事务返回一个事务返回一个NAKNAK握手包,但是对握手包,但是对握手包,但是对握手包,但是对SETUPSETUP事务将不作反应。复位将清除该位。事务将不作反应。复位将清除该位。事务将不作反应。复位将清除该位。事务将不作反应。复位将清除该位。RX0E=1,RX0E=1,表示可以接收数据,表示可以接收数据,表示可以接收数据,表示可以接收数据, RX0ERX
169、0E0 0,表示不可以接收数据,以,表示不可以接收数据,以,表示不可以接收数据,以,表示不可以接收数据,以NAKNAK包作为回应。包作为回应。包作为回应。包作为回应。 D3D3D0 D0 TP0SIZ3 TP0SIZ3TP0SIZ0TP0SIZ0位:端点位:端点位:端点位:端点0 0输出数据包大小。这些位为可读可写位,这几位存输出数据包大小。这些位为可读可写位,这几位存输出数据包大小。这些位为可读可写位,这几位存输出数据包大小。这些位为可读可写位,这几位存储的是端点储的是端点储的是端点储的是端点0 0下一个下一个下一个下一个ININ事务发送数据的个数。复位将清除这几位。事务发送数据的个数。复位
170、将清除这几位。事务发送数据的个数。复位将清除这几位。事务发送数据的个数。复位将清除这几位。数据位D7D6D5D4D3D2D1D0定义T0SEQ未定义TX0ERX0ETP0SIZ3TP0SIZ2TP0SIZ1TP0SIZ0复位00000000嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器6 6)USBUSB控制寄存器控制寄存器控制寄存器控制寄存器1 1(UCR1UCR1)UCR1UCR1的地址:的地址:的地址:的地址:$003C$003C,定义如下:,定义如下:,定义如下:,定义如下: D7
171、 D7 T1SEQ T1SEQ位:端点位:端点位:端点位:端点1 1输出序列位。该位为可读可写位,它决定端点输出序列位。该位为可读可写位,它决定端点输出序列位。该位为可读可写位,它决定端点输出序列位。该位为可读可写位,它决定端点1 1的下一个的下一个的下一个的下一个ININ事务发何种事务发何种事务发何种事务发何种类型的数据包(类型的数据包(类型的数据包(类型的数据包(DATA0DATA0或者或者或者或者DATA1DATA1)。)。)。)。T1SEQT1SEQ1 1,表示端点,表示端点,表示端点,表示端点1 1下一个发送的是下一个发送的是下一个发送的是下一个发送的是DATA1DATA1包,包,包
172、,包,T1SEQ=0T1SEQ=0,表示端点,表示端点,表示端点,表示端点1 1下一个发送的是下一个发送的是下一个发送的是下一个发送的是DATA0DATA0包。复位将清除该位。包。复位将清除该位。包。复位将清除该位。包。复位将清除该位。 D6 D6 STALL1 STALL1位:端点位:端点位:端点位:端点1 1强制发强制发强制发强制发STALLSTALL位。该位为可读可写位,当位。该位为可读可写位,当位。该位为可读可写位,当位。该位为可读可写位,当USBUSB主控制器发送一个主控制器发送一个主控制器发送一个主控制器发送一个ININ事事事事务或务或务或务或OUTOUT事务时,该位将使端点事务时
173、,该位将使端点事务时,该位将使端点事务时,该位将使端点1 1发送一个发送一个发送一个发送一个STALLSTALL握手包。复位将清除该位。握手包。复位将清除该位。握手包。复位将清除该位。握手包。复位将清除该位。STALL1STALL11 1,表示,表示,表示,表示发送发送发送发送STALLSTALL握手包。握手包。握手包。握手包。STALL=0STALL=0,默认状态。,默认状态。,默认状态。,默认状态。 D5 D5 TX1E TX1E位:端点位:端点位:端点位:端点1 1输出允许位。该位为可读可写位,如果输出允许位。该位为可读可写位,如果输出允许位。该位为可读可写位,如果输出允许位。该位为可读
174、可写位,如果UCR3UCR3寄存器中的寄存器中的寄存器中的寄存器中的ENABLE1ENABLE1位位位位(端点(端点(端点(端点1 1使能位)被置使能位)被置使能位)被置使能位)被置1 1,当,当,当,当USBUSB主控制器向端点主控制器向端点主控制器向端点主控制器向端点1 1发送一个发送一个发送一个发送一个ININ事务时,该位可以允许发送。当数事务时,该位可以允许发送。当数事务时,该位可以允许发送。当数事务时,该位可以允许发送。当数据准备好发送后,软件应该将该位置据准备好发送后,软件应该将该位置据准备好发送后,软件应该将该位置据准备好发送后,软件应该将该位置“ “1 1” ”,当端点,当端点
175、,当端点,当端点1 1没有数据被发送时,该位必须被清没有数据被发送时,该位必须被清没有数据被发送时,该位必须被清没有数据被发送时,该位必须被清“ “0 0” ”。如。如。如。如果该位是果该位是果该位是果该位是“ “0 0” ”,或者,或者,或者,或者TXD1FTXD1F位为位为位为位为“ “1 1” ”,USBUSB设备将对端点设备将对端点设备将对端点设备将对端点1 1的任何一个的任何一个的任何一个的任何一个ININ事务返回一个事务返回一个事务返回一个事务返回一个NAKNAK握握握握手包。复位将清除该位。手包。复位将清除该位。手包。复位将清除该位。手包。复位将清除该位。TX1E=1,TX1E=
176、1,表示数据准备好,可以发送,表示数据准备好,可以发送,表示数据准备好,可以发送,表示数据准备好,可以发送,TX1ETX1E0 0,表示数据没准备好,表示数据没准备好,表示数据没准备好,表示数据没准备好,以以以以NAKNAK包作为回应。包作为回应。包作为回应。包作为回应。 D4 D4 FRESUM FRESUM位:强制唤醒位。位:强制唤醒位。位:强制唤醒位。位:强制唤醒位。 D3D3D0 D0 TP1SIZ3 TP1SIZ3TP1SIZ0TP1SIZ0位:端点位:端点位:端点位:端点1 1输出数据包大小。这些位为可读可写位,这几位存输出数据包大小。这些位为可读可写位,这几位存输出数据包大小。这
177、些位为可读可写位,这几位存输出数据包大小。这些位为可读可写位,这几位存储的是端点储的是端点储的是端点储的是端点1 1下一个下一个下一个下一个ININ事务发送数据的个数。复位将清除这几位。事务发送数据的个数。复位将清除这几位。事务发送数据的个数。复位将清除这几位。事务发送数据的个数。复位将清除这几位。数据位数据位D7D6D5D4D3D2D1D0定义定义T1SEQSTALL1TX1EFRESUMTP1SIZ3TP1SIZ2TP1SIZ1TP1SIZ0复位复位00000000嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 US
178、B寄存器寄存器寄存器寄存器7 7)USBUSB控制寄存器控制寄存器控制寄存器控制寄存器2 2(UCR2UCR2)UCR2UCR2的地址:的地址:的地址:的地址:$0019$0019,定义如下:,定义如下:,定义如下:,定义如下: D7 D7 T2SEQ T2SEQ位:端点位:端点位:端点位:端点2 2输出序列位。该位为可读可写位,它决定端点输出序列位。该位为可读可写位,它决定端点输出序列位。该位为可读可写位,它决定端点输出序列位。该位为可读可写位,它决定端点2 2的下一个的下一个的下一个的下一个ININ事务发何种事务发何种事务发何种事务发何种类型的数据包(类型的数据包(类型的数据包(类型的数据
179、包(DATA0DATA0或者或者或者或者DATA1DATA1)。)。)。)。T2SEQT2SEQ1 1,表示端点,表示端点,表示端点,表示端点2 2下一个发送的是下一个发送的是下一个发送的是下一个发送的是DATA1DATA1包,包,包,包,T2SEQ=0T2SEQ=0,表示端点,表示端点,表示端点,表示端点2 2下一个发送的是下一个发送的是下一个发送的是下一个发送的是DATA0DATA0包。复位将清除该位。包。复位将清除该位。包。复位将清除该位。包。复位将清除该位。 D6 D6 STALL2 STALL2位:端点位:端点位:端点位:端点2 2强制发强制发强制发强制发STALLSTALL位。该位
180、为可读可写位,当位。该位为可读可写位,当位。该位为可读可写位,当位。该位为可读可写位,当USBUSB主控制器发送一个主控制器发送一个主控制器发送一个主控制器发送一个ININ事事事事务或务或务或务或OUTOUT事务时,该位将使端点事务时,该位将使端点事务时,该位将使端点事务时,该位将使端点2 2发送一个发送一个发送一个发送一个STALLSTALL握手包。复位将清除该位。握手包。复位将清除该位。握手包。复位将清除该位。握手包。复位将清除该位。STALL1STALL11 1,表示,表示,表示,表示发送发送发送发送STALLSTALL握手包。握手包。握手包。握手包。STALL=0STALL=0,默认状
181、态。,默认状态。,默认状态。,默认状态。 D5 D5 TX2E TX2E位:端点位:端点位:端点位:端点2 2输出允许位。该位为可读可写位,如果输出允许位。该位为可读可写位,如果输出允许位。该位为可读可写位,如果输出允许位。该位为可读可写位,如果UCR3UCR3寄存器中的寄存器中的寄存器中的寄存器中的ENABLE2ENABLE2位位位位(端点(端点(端点(端点2 2使能位)被置位,当使能位)被置位,当使能位)被置位,当使能位)被置位,当USBUSB主控制器向端点主控制器向端点主控制器向端点主控制器向端点2 2发送一个发送一个发送一个发送一个ININ事务时,该位可以允许发送。当数事务时,该位可以
182、允许发送。当数事务时,该位可以允许发送。当数事务时,该位可以允许发送。当数据准备好发送后,软件应该将该位置据准备好发送后,软件应该将该位置据准备好发送后,软件应该将该位置据准备好发送后,软件应该将该位置“ “1 1” ”,当端点,当端点,当端点,当端点2 2没有数据被发送时,该位必须被清没有数据被发送时,该位必须被清没有数据被发送时,该位必须被清没有数据被发送时,该位必须被清“ “0 0” ”。如。如。如。如果该位是果该位是果该位是果该位是“ “0 0” ”,或者,或者,或者,或者TXD2FTXD2F位为位为位为位为“ “1 1” ”,USBUSB设备将对端点设备将对端点设备将对端点设备将对端
183、点2 2的任何一个的任何一个的任何一个的任何一个ININ事务返回一个事务返回一个事务返回一个事务返回一个NAKNAK握握握握手包。复位将清除该位。手包。复位将清除该位。手包。复位将清除该位。手包。复位将清除该位。TX2E=1,TX2E=1,表示数据准备好,可以发送,表示数据准备好,可以发送,表示数据准备好,可以发送,表示数据准备好,可以发送,TX2ETX2E0 0,表示数据没准备好,表示数据没准备好,表示数据没准备好,表示数据没准备好,以以以以NAKNAK包作为回应。包作为回应。包作为回应。包作为回应。 D4 D4 RX2E RX2E位:端点位:端点位:端点位:端点2 2接收允许位。端点接收允
184、许位。端点接收允许位。端点接收允许位。端点2 2接收允许位。该位为可读可写位,当接收允许位。该位为可读可写位,当接收允许位。该位为可读可写位,当接收允许位。该位为可读可写位,当USBUSB主控制器向主控制器向主控制器向主控制器向端点端点端点端点2 2发送一个发送一个发送一个发送一个OUTOUT事务时,该位可以允许接收。当准备好接收数据后,软件应该将该位置事务时,该位可以允许接收。当准备好接收数据后,软件应该将该位置事务时,该位可以允许接收。当准备好接收数据后,软件应该将该位置事务时,该位可以允许接收。当准备好接收数据后,软件应该将该位置“ “1 1” ”,当没有数据被接收时,该位必须被清,当没
185、有数据被接收时,该位必须被清,当没有数据被接收时,该位必须被清,当没有数据被接收时,该位必须被清“ “0 0” ”。如果该位是。如果该位是。如果该位是。如果该位是“ “0 0” ”,或者,或者,或者,或者RXD2FRXD2F位为位为位为位为“ “1 1” ”,USBUSB设设设设备将对端点备将对端点备将对端点备将对端点2 2的任何一个的任何一个的任何一个的任何一个OUTOUT事务返回一个事务返回一个事务返回一个事务返回一个NAKNAK握手包。复位将清除该位。握手包。复位将清除该位。握手包。复位将清除该位。握手包。复位将清除该位。RX2E=1,RX2E=1,表示可以接表示可以接表示可以接表示可以
186、接收数据,收数据,收数据,收数据, RX2ERX2E0 0,表示不接收数据,以,表示不接收数据,以,表示不接收数据,以,表示不接收数据,以NAKNAK包作为回应。包作为回应。包作为回应。包作为回应。 D3D3:0 0 TP2SIZ3 TP2SIZ3:00位:端点位:端点位:端点位:端点2 2输出数据包大小。这些位为可读可写位,这几位存储的是输出数据包大小。这些位为可读可写位,这几位存储的是输出数据包大小。这些位为可读可写位,这几位存储的是输出数据包大小。这些位为可读可写位,这几位存储的是端点端点端点端点2 2下一个下一个下一个下一个ININ事务发送数据的个数。复位将清除这几位。事务发送数据的个
187、数。复位将清除这几位。事务发送数据的个数。复位将清除这几位。事务发送数据的个数。复位将清除这几位。数据位数据位D7D6D5D4D3D2D1D0定义定义T2SEQSTALL2TX2ERX2ETP2SIZ3TP2SIZ2TP2SIZ1TP2SIZ0复位复位00000000嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器8 8)USBUSB控制寄存器控制寄存器控制寄存器控制寄存器3 3(UCR3UCR3)UCR3UCR3的地址:的地址:的地址:的地址:$001A$001A,定义如下:,定义如下:,
188、定义如下:,定义如下: D7 D7 TX1ST TX1ST位:端点位:端点位:端点位:端点0 0传输起始标志。该位为传输起始标志。该位为传输起始标志。该位为传输起始标志。该位为1 1,表示,表示,表示,表示ININ传输包发生在传输包发生在传输包发生在传输包发生在SETUP/OUTSETUP/OUT包之前;为包之前;为包之前;为包之前;为0 0,表示,表示,表示,表示ININ传输包发生在传输包发生在传输包发生在传输包发生在SETUP/OUTSETUP/OUT包之后。包之后。包之后。包之后。 该位该位该位该位为只读位。为只读位。为只读位。为只读位。 D6 D6 TX1STR TX1STR位:写位:
189、写位:写位:写1 1到该位将清除到该位将清除到该位将清除到该位将清除TX1STTX1ST位,写位,写位,写位,写0 0不产生影响。不产生影响。不产生影响。不产生影响。 D5 D5 OSTALL0 OSTALL0位:端点位:端点位:端点位:端点0 0的的的的OUTOUT包包包包STALLSTALL位。该位为位。该位为位。该位为位。该位为1 1,表示发送,表示发送,表示发送,表示发送STALLSTALL握手信号,握手信号,握手信号,握手信号,0 0为默认值。为默认值。为默认值。为默认值。 D4 D4 ISTALL0 ISTALL0位:端点位:端点位:端点位:端点0 0的的的的ININ包包包包STA
190、LLSTALL位。该位为位。该位为位。该位为位。该位为1 1,表示发送,表示发送,表示发送,表示发送STALLSTALL握握握握手信号,手信号,手信号,手信号,0 0为默认值。为默认值。为默认值。为默认值。 D2 D2 PULLEN PULLEN位:上拉允许位。该位为位:上拉允许位。该位为位:上拉允许位。该位为位:上拉允许位。该位为1 1,表示,表示,表示,表示D-D-脚有内部上拉,脚有内部上拉,脚有内部上拉,脚有内部上拉,0 0表示表示表示表示D-D-脚没接内部上拉。脚没接内部上拉。脚没接内部上拉。脚没接内部上拉。 D1 D1 ENABLE2 ENABLE2位:端点位:端点位:端点位:端点2
191、 2允许位。允许位。允许位。允许位。1 1为允许,为允许,为允许,为允许,0 0为不允许。为不允许。为不允许。为不允许。 D0 D0 ENABLE1 ENABLE1位:端点位:端点位:端点位:端点1 1允许位。允许位。允许位。允许位。1 1为允许,为允许,为允许,为允许,0 0为不允许。为不允许。为不允许。为不允许。数据位数据位D7D6D5D4D3D2D1D0定义定义TX1STTX1STROSTALL0ISTALL0未定义未定义PULLENENABLE2ENABLE1复位复位00000000嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB
192、16. 5. 3 USB寄存器寄存器寄存器寄存器9 9)USBUSB控制寄存器控制寄存器控制寄存器控制寄存器4 4(UCR4UCR4)UCR4UCR4的地址:的地址:的地址:的地址:$001B$001B,定义如下:,定义如下:,定义如下:,定义如下: D2 D2 FUSBO FUSBO位:该位若为位:该位若为位:该位若为位:该位若为1 1,表示使能,表示使能,表示使能,表示使能USBUSB输出缓冲;该位若为输出缓冲;该位若为输出缓冲;该位若为输出缓冲;该位若为0 0,表示,表示,表示,表示USBUSB模块处于默认操作状态。模块处于默认操作状态。模块处于默认操作状态。模块处于默认操作状态。 D1
193、 D1 FDP FDP位:该位若为位:该位若为位:该位若为位:该位若为1 1,表示,表示,表示,表示D+D+处于输出高电平状态;该位若为处于输出高电平状态;该位若为处于输出高电平状态;该位若为处于输出高电平状态;该位若为0 0,表,表,表,表示示示示D+D+处于输出低电平状态。处于输出低电平状态。处于输出低电平状态。处于输出低电平状态。 D0 D0 FDM FDM位:该位若为位:该位若为位:该位若为位:该位若为1 1,表示,表示,表示,表示D-D-处于输出高电平状态;该位若为处于输出高电平状态;该位若为处于输出高电平状态;该位若为处于输出高电平状态;该位若为0 0,表示,表示,表示,表示D-D
194、-处于输出低电平状态。处于输出低电平状态。处于输出低电平状态。处于输出低电平状态。数据位数据位D7D6D5D4D3D2D1D0定义定义未定义未定义未定义未定义未定义未定义未定义未定义未定义未定义FUSBOFDPFDM复位复位00000000嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器1010)USBUSB状态寄存器状态寄存器状态寄存器状态寄存器0 0(USR0USR0) USR0USR0的地址:的地址:的地址:的地址:$003E$003E,定义如下:,定义如下:,定义如下:,定义如下:
195、D7 D7 R0SEQ R0SEQ位:端点位:端点位:端点位:端点0 0接收序列位。为接收序列位。为接收序列位。为接收序列位。为1 1,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点2 2接收的是接收的是接收的是接收的是DATA1DATA1;为;为;为;为0 0,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点2 2接收的是接收的是接收的是接收的是DATA0DATA0。 D6 D6 SETUP SETUP位:位:位:位:SETUPSETUP包检测位。为包检测位。为包检测位。为包检测位。为1 1,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点0 0接
196、收的是一个接收的是一个接收的是一个接收的是一个SETUPSETUP包;为包;为包;为包;为0 0,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点0 0接收的不是接收的不是接收的不是接收的不是SETUPSETUP包。包。包。包。 D3D3D0 D0 RP0SIZ3 RP0SIZ3RP0SIZ 0RP0SIZ 0位:端点位:端点位:端点位:端点0 0接收数据包大小。接收数据包大小。接收数据包大小。接收数据包大小。数据位数据位D7D6D5D4D3D2D1D0定义定义R0SEQSETUP未定义未定义未定义未定义RP0SIZ3RP0SIZ2RP0SIZ1RP0SIZ0复位复位000000
197、00嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器1111)USBUSB状态寄存器状态寄存器状态寄存器状态寄存器1 1(USR1USR1)USR1USR1的地址:的地址:的地址:的地址:$003E$003E,定义如下:,定义如下:,定义如下:,定义如下: D7 D7 R2SEQ R2SEQ位:端点位:端点位:端点位:端点2 2接收序列位。为接收序列位。为接收序列位。为接收序列位。为1 1,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点2 2接收的是接收的是接收的是接收的是D
198、ATA1DATA1;为;为;为;为0 0,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点2 2接收的是接收的是接收的是接收的是DATA0DATA0。 D6 D6 TXACK TXACK位:位:位:位:ACKACK包传输位。为包传输位。为包传输位。为包传输位。为1 1,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点0 0发送的是一个发送的是一个发送的是一个发送的是一个ACKACK包;为包;为包;为包;为0 0,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点0 0发送的不是发送的不是发送的不是发送的不是ACKACK包。包。包。包。 D5 D5 TXA
199、NK TXANK位:位:位:位:NAKNAK包传输位。为包传输位。为包传输位。为包传输位。为1 1,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点0 0发送的是一个发送的是一个发送的是一个发送的是一个NAKNAK包;为包;为包;为包;为0 0,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点0 0发送的不是发送的不是发送的不是发送的不是NAKNAK包。包。包。包。 D4 D4 TXSTL TXSTL位:位:位:位:STALLSTALL包传输位。为包传输位。为包传输位。为包传输位。为1 1,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点0 0发送的是
200、一个发送的是一个发送的是一个发送的是一个STALLSTALL包;为包;为包;为包;为0 0,表示上一次端点,表示上一次端点,表示上一次端点,表示上一次端点0 0发送的不是发送的不是发送的不是发送的不是STALLSTALL包。包。包。包。 D3D3D0 D0 RP2SIZ3 RP2SIZ3RP2SIZ 0RP2SIZ 0位:端点位:端点位:端点位:端点2 2接收数据包大小。接收数据包大小。接收数据包大小。接收数据包大小。数据位数据位D7D6D5D4D3D2D1D0定义定义R2SEQTXACKTXANKTXSTLRP2SIZ3RP2SIZ2RP2SIZ1RP2SIZ0复位复位00000000嵌入式
201、技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16. 5. 3 USB16. 5. 3 USB寄存器寄存器寄存器寄存器 12) USB12) USB端点端点端点端点0 0数据寄存器(数据寄存器(数据寄存器(数据寄存器(UE0D0-UE0D7UE0D0-UE0D7) UE1D0-UE1D7UE1D0-UE1D7的地址是从的地址是从的地址是从的地址是从$0020-$0027$0020-$0027。可读可写。可读可写。可读可写。可读可写。 13) USB13) USB端点端点端点端点1 1数据寄存器(数据寄存器(数据寄存器(数据寄存器(UE1D0-UE1D7UE1D0-U
202、E1D7) UE1D0-UE1D7UE1D0-UE1D7的地址是从的地址是从的地址是从的地址是从$0028-$002F$0028-$002F。只写。只写。只写。只写。 14) USB14) USB端点端点端点端点2 2数据寄存器(数据寄存器(数据寄存器(数据寄存器(UE2D0-UE2D7UE2D0-UE2D7) UE1D0-UE1D7UE1D0-UE1D7的地址是从的地址是从的地址是从的地址是从$0030-$0037$0030-$0037。可读可写。可读可写。可读可写。可读可写。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.16.5 5. .4 4 US
203、B USB中断中断中断中断USBUSB模块中断有三种类型:模块中断有三种类型:模块中断有三种类型:模块中断有三种类型: 当接收或发送事务完成时,产生事务结束中断;当接收或发送事务完成时,产生事务结束中断;当接收或发送事务完成时,产生事务结束中断;当接收或发送事务完成时,产生事务结束中断; 当当当当USBUSB总线悬挂后被激活时,产生唤醒中断;总线悬挂后被激活时,产生唤醒中断;总线悬挂后被激活时,产生唤醒中断;总线悬挂后被激活时,产生唤醒中断; 当检测到一个低速的包结束信号时,产生结束中断。当检测到一个低速的包结束信号时,产生结束中断。当检测到一个低速的包结束信号时,产生结束中断。当检测到一个低
204、速的包结束信号时,产生结束中断。所有的中断共享同一个中断向量,由中断程序区分产所有的中断共享同一个中断向量,由中断程序区分产所有的中断共享同一个中断向量,由中断程序区分产所有的中断共享同一个中断向量,由中断程序区分产生的是什么中断。生的是什么中断。生的是什么中断。生的是什么中断。嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.16.5 5. .5 JB85 JB8 USB USB1.11.1通信通信通信通信编程编程编程编程USBUSB中断处理流程图中断处理流程图中断处理流程图中断处理流程图端点端点0接收数接收数据产生的中断据产生的中断USB初始化初始化开始
205、开始YSETUP事务事务?NN端点端点0接收数接收数据产生的中断据产生的中断YN复位产生的中断?复位产生的中断?调用处理端点调用处理端点0OUT事务处理事务处理YN退出中断退出中断调用处理端点调用处理端点0IN事务处理事务处理调用调用SETUP事事务处理务处理Y嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践USBUSB中断服务程序中断服务程序中断服务程序中断服务程序端点端点端点端点1 1和端点和端点和端点和端点2 2利用查询方式发送和接收数据的编程方利用查询方式发送和接收数据的编程方利用查询方式发送和接收数据的编程方利用查询方式发送和接收数据的编程方法,包括:
206、法,包括:法,包括:法,包括:USBUSB初始化、发送字节和接收字节。初始化、发送字节和接收字节。初始化、发送字节和接收字节。初始化、发送字节和接收字节。 (1 1)USBUSB初始化初始化初始化初始化(2 2)发送数据子程序)发送数据子程序)发送数据子程序)发送数据子程序(3 3)接收数据子程序)接收数据子程序)接收数据子程序)接收数据子程序嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践端点端点端点端点1 1发送、接受数据的流程图发送、接受数据的流程图发送、接受数据的流程图发送、接受数据的流程图Y查询方式接收数据查询方式接收数据UIR1 的的BM_RXD2F
207、位为位为1禁止端点禁止端点2输入(将输入(将UCR2 的的BM_RX2E位置位置0)清清RXD2F位(将位(将UIR2 的的 BM_RXD2FR位置位置0)从端点从端点2的接收缓冲区中读取数据的接收缓冲区中读取数据允许端点允许端点2输入(将输入(将UCR2 的的BM_RX2E位置位置1)N开始开始查询方式发送数据查询方式发送数据UIR1 的的BM_TXD1F位为位为1禁止端点禁止端点1输出(将输出(将UCR1 的的BM_TX1E位置位置0)清清TXD1F位(将位(将UIR2 的的 BM_TXD1FR位置位置0)向端点向端点1的数据缓冲区中写入数据的数据缓冲区中写入数据设置发送数据的个数和设置发
208、送数据的个数和TES1Q位位,允许端点允许端点1输出输出(将(将UCR2 的的BM_RX2E位置位置1)开始开始NY嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践USBUSB中断服务程序中断服务程序中断服务程序中断服务程序(1 1)USBUSB初始化初始化初始化初始化嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践USBUSB中断服务程序中断服务程序中断服务程序中断服务程序(2 2)发送数据子程序)发送数据子程序)发送数据子程序)发送数据子程序嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践USB
209、USB中断服务程序中断服务程序中断服务程序中断服务程序(2 2)发送数据子程序)发送数据子程序)发送数据子程序)发送数据子程序嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践USBUSB中断服务程序中断服务程序中断服务程序中断服务程序(3 3)接收数据子程序)接收数据子程序)接收数据子程序)接收数据子程序嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.6 PC机方USB1.1编程实例16.6.1 PC16.6.1 PC机方机方机方机方USB1.1USB1.1编程步骤编程步骤编程步骤编程步骤1 1选择并安装合适的选择并安装合适
210、的选择并安装合适的选择并安装合适的USB1.1USB1.1驱动程序驱动程序驱动程序驱动程序2 2选择一种高级语言,参照驱动程序的相关文档进行编选择一种高级语言,参照驱动程序的相关文档进行编选择一种高级语言,参照驱动程序的相关文档进行编选择一种高级语言,参照驱动程序的相关文档进行编程程程程 (1) (1) 为新建的工程添加为新建的工程添加为新建的工程添加为新建的工程添加USBIOCOM 1.0 Type USBIOCOM 1.0 Type LibraryLibrary (2) (2) 编写响应编写响应编写响应编写响应USBUSB设备的程序设备的程序设备的程序设备的程序 (3) (3) 取得描述符
211、,初始化取得描述符,初始化取得描述符,初始化取得描述符,初始化USBUSB设备并建立连接设备并建立连接设备并建立连接设备并建立连接 (4) (4) 进行进行进行进行USBUSB收发通信收发通信收发通信收发通信嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践16.6 PC机方USB1.1编程实例16.6.2 PC16.6.2 PC机方机方机方机方USB1.1 VBUSB1.1 VB编程实例编程实例编程实例编程实例嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践嵌入式技术基础与实践开始不是是捕捉到WM_DEVICECHANGE消息判断USB设备类型USB存储设备其他类型USB设备JB8 USB设备取得描述符根据描述符判断是否为SU-USB-TEST设备发送握手信号$FE和将要发送的字节数N给USB设备发送N个字节的数据给USB设备接收USB设备回发的N个字节数据,并显示USB测试程序PC机方VB程序流程图