USB介绍与应用_第1页
USB介绍与应用_第2页
USB介绍与应用_第3页
USB介绍与应用_第4页
USB介绍与应用_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、USB介绍与应用1 USB介绍1.USB概述USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。USB接口支持设备的即插即用和热插拔功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。USB协议有两种:USB1.1和USB2.0。USB2.0和USB1.1完全兼容。USB1.1支持的数据传输率为12Mbps和1.5Mbps(用于慢速外设),USB2.0支持的数据传速率可达480Mbps。在普通用户看来,USB系统就是外设通过一根USB电缆和PC机

2、连接起来。通常把外设称为USB设备,把其所连接的PC机称为USB主机。将指向USB主机的数据传输方向称为上行通信,把指向USB设备的数据传输方向称为下行通信。USB网络采用阶梯式星形拓扑结构,如图1.1。一个USB网络中只能有一个主机。主机内设置了一个根集线器,提供了主机上的初始附属点。图1.12.USB系统介绍 USB的所有数据通信(不论是上行通信还是下行通信)都由USB主机启动,所以USB主机在整个数据传输过程中占据着主导地位。在USB系统中只允许有一个主机。从开发人员的角度看,USB主机可分为三个不同的功能模块:客户软件、USB系统软件和USB总线接口。 (1) 客户软件(2) USB系

3、统软件(3) USB总线接口(1) 客户软件 客户软件负责和USB设备的功能单元进行通信,以实现其特定功能。一般由开发人员自行开发。客户软件不能直接访问USB设备,其与USB设备功能单元的通信必须经过USB系统软件和USB总线接口模块才能实现。客户软件一般包括USB设备驱动程序和界面应用程序两部分。 USB设备驱动程序负责和USB系统软件进行通信。通常,它向USB总线驱动程序发出I/O请求包(IRP)以启动一次USB数据传输。此外,根据数据传输的方向,它还应提供一个或空或满的数据缓冲区以存储这些数据。界面应用程序负责和USB设备驱动程序进行通信,以控制USB设备。它是最上层的软件,只能看到向U

4、SB设备发送的原始数据和从USB设备接收的最终数据。(2) USB系统软件USB系统软件负责和USB逻辑设备进行配置通信,并管理客户软件启动的数据传输。USB逻辑设备是程序员与USB设备打交道的部分。USB系统软件一般包括USB总线驱动程序和USB主控制器驱动程序这两部分。(3) USB总线接口USB总线接口包括主控制器和根集线器两部分。根集线器为USB系统提供连接起点,用于给USB系统提供一个或多个连接点(端口)。主控制器负责完成主机和USB设备之间数据的实际传输,包括对传输的数据进行串行编解码、差错控制等。3.USB设备介绍一个USB设备由三个功能模块组成:USB总线接口、USB逻辑设备和

5、功能单元。这里的USB总线接口指的是USB设备中的串行接口引擎(SIE);USB逻辑设备被USB系统软件看作是一个端点的集合;功能单元被客户软件看作是一个接口的集合。SIE、端点和接口都是USB设备的组成单元。为了更好地描述USB设备的特征,USB提出了设备架构的概念。从这个角度来看,可以认为USB设备是由一些配置、接口和端点组成的,即一个USB设备可以含有一个或多个配置,在每个配置中可含有一个或多个接口,在每个接口中可含有若干个端点。其中,配置和接口是对USB设备功能的抽象,实际的数据传输由端点来完成。在使用USB设备前,必须指明其采用的配置和接口。这个步骤一般是在设备接入主机时设备进行自举

6、时完成的,我们在后面会进一步介绍。USB设备使用各种描述符来说明其设备架构,包括设备描述符、配置描述符、接口描述符、端点描述符以及字符串描述符,它们通常被保存在USB设备的固件程序中。4.USB接口USB使用一根屏蔽的4线电缆与网络上的设备进行互联。数据传输通过一个差分双绞线进行,这两根线分别标为D+和D-,另外两根线是Vcc和Ground,其中Vcc向USB设备供电。使用USB电源的设备称为总线供电设备,而使用自己外部电源的设备叫做自供电设备。为了避免混淆,USB电缆中的线都用不同的颜色标记,如表1.4.1所示。引脚编号信号名称缆线颜色1Vcc红2Data-(D-)白3Data+(D+)绿4

7、Ground黑 表1.4.1在 USB 主机上,D-和 D+都是接了 15K 的电阻到低的,所以在没有设备接入的时候,D+、D-均是低电平。而在 USB 设备中,如果是高速设备,则会在 D+上接一个 1.5K 的电阻到 VCC,而如果是低速设备,则会在 D-上接一个 1.5K 的电阻到 VCC。这样当设备接入主机的时候,主机就可以判断是否有设备接入,并能判断设备是高速设备还是低速设备。从一个设备连回到主机,称为上行连接;从主机到设备的连接,称为下行连接。为了防止回环情况的发生,上行和下行端口使用不同的连接器所以USB在电缆和设备的连接中分别采用了两种类型的连接头,即图1.4.2所示的A型连接头

8、和B型连接头。每个连接头内的电线号与图1.4.2的引脚编号是一致的。A型连接头,用于上行连接,即在主机或集线器上有一个A型插座,而在连接到主机或集线器的电缆的一端是A型插头。在USB设备上有B型插座,而B型插头在从主机或集线器接出的下行电缆的一端。采用这种连接方式,可以确保USB设备、主机/集线器和USB电缆始终以正确的方式连接,而不出现电缆接入方式出错,或直接将两个USB设备连接到一起的情况。图1.4.2 USB连接头5.USB信号(1)差分信号技术特点传统的传输方式大多使用“正信号”或者“负信号”二进制表达机制,这些信号利用单线传输。用不同的信号电平范围来分别表示1和0,它们之间有一个临界

9、值,如果在数据传输过程中受到中低强度的干扰,高低电平不会突破临界值,那么信号传输可以正常进行。但如果遇到强干扰,高低电平突破临界值,由此造成数据传输出错。差分信号技术最大的特点是:必须使用两条线路才能表达一个比特位,用两条线路传输信号的压差作为判断1还是0的依据。这种做法的优点是具有极强的抗干扰性。倘若遭受外界强烈干扰,两条线路对应的电平同样会出现大幅度提升或降低的情况,但二者的电平改变方向和幅度几乎相同,电压差值就可始终保持相对稳定,因此数据的准确性并不会因干扰噪声而有所降低。 (2) 通信格式 USB的数据包使用反向不归零编码(NRZI)。图1.5.1描述了在USB电缆段上传输信息的步骤。

10、反向不归零编码由传送信息的USB代理程序完成;然后,被编码的数据通过差分驱动器送到USB电缆上;接着,接收器将输入的差分信号进行放大,将其送给解码器。使用该编码和差动信号传输方式可以更好地保证数据的完整性并减少噪声干扰。图1.5.2(3) 通信方式 无论如何都是主机发送命令,有三种情况:1.主机用来向设备发送控制命令;2.主机用来从设备读取数据;3.主机用来向设备发送数据。USB协议定义了四种传输类型:控制传输(Control Transfers): 非周期性,突发.特性:每个USB设备都必须有控制端点,支持控制传输来进行命令和状态的传输。USB主机驱动将通过控制传输与USB设备的控制端点通信

11、,完成USB设备的枚举和配置 .方向:控制传输是双向的传输,必须有IN和OUT两个方向上的特定端点号的控制端点来完成两个方向上的控制传输大容量数据传输(Bulk Transfers): 非周期性,突发.特性: 大容量数据传输适用于那些需要大数据量传输,但是对实时性,对延迟性和带宽没有严格要求的应用。大容量传输可以占用任意可用的数据带宽。.方向: 大容量传输是单向的,可以用单向的大容量传输端点来实现某个方向的大容量传输。同步传输(Isochronous Transfers): 周期性.特性: 同步传输用于传输那些需要保证带宽,并且不能忍受延迟的信息。整个带宽都将用于保证同步传输的数据完整,并且不

12、支持出错重传。.方向:同步传输总是单向的,可以使用单向的同步端点来实现某个方向上的同步传输。中断传输(Interrupt Transfers): 周期性,低频率.特性:中断传输用于那些频率不高,但对周期有一定要求的数据传输。具有保证的带宽,并能在下个周期对先前错误的传输进行重传。.方向:中断传输总是单向的,可以用单向的中断端点来实现某个方向上的中断传输。2 USB实验以战舰精英STM32为例,通过USB接口实现数据的发送和接收,通过中断传输。主函数 int main(void) led_Init();delay_init();NVIC_PriorityGroupConfig(NVIC_Prio

13、rityGroup_2); chuankou_Init();while(1); 中断函数:void USART1_IRQHandler(void) u8 res; if(USART_GetITStatus(USART1,USART_IT_RXNE) res= USART_ReceiveData(USART1); PE5=!PE5; USART_SendData(USART1,res); PB5=!PB5;初始化LED函数void led_Init(void)GPIO_InitTypeDef a;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE

14、);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);a.GPIO_Mode=GPIO_Mode_Out_PP;a.GPIO_Pin=GPIO_Pin_5;a.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB, &a);GPIO_SetBits(GPIOB,GPIO_Pin_5);a.GPIO_Mode=GPIO_Mode_Out_PP;a.GPIO_Pin=GPIO_Pin_5;a.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOE, &a);GPIO_SetBit

15、s(GPIOE,GPIO_Pin_5);初始化串口函数void chuankou_Init(void) GPIO_InitTypeDef a; USART_InitTypeDef b; NVIC_InitTypeDef c; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); a.GPIO_Mode=GPIO_Mode_AF_PP;a.GPIO_Pin=GPIO_Pin_9;a.GPIO_Speed=GPIO_Speed_10MHz;

16、 GPIO_Init(GPIOA,&a); a.GPIO_Mode=GPIO_Mode_IN_FLOATING;a.GPIO_Pin=GPIO_Pin_10;a.GPIO_Speed=GPIO_Speed_10MHz; GPIO_Init(GPIOA,&a);b.USART_BaudRate=;b.USART_HardwareFlowControl=USART_HardwareFlowControl_None;b.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;b.USART_Parity=USART_Parity_No;b.USART_StopBits=USART_StopBits_1 ;b.USART_WordLength=USART_WordLeng

温馨提示

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

评论

0/150

提交评论