学习笔记基于LMS的USB程序开发笔记第一部分.doc

上传人:b****2 文档编号:1261361 上传时间:2022-10-19 格式:DOC 页数:20 大小:468KB
下载 相关 举报
学习笔记基于LMS的USB程序开发笔记第一部分.doc_第1页
第1页 / 共20页
学习笔记基于LMS的USB程序开发笔记第一部分.doc_第2页
第2页 / 共20页
学习笔记基于LMS的USB程序开发笔记第一部分.doc_第3页
第3页 / 共20页
学习笔记基于LMS的USB程序开发笔记第一部分.doc_第4页
第4页 / 共20页
学习笔记基于LMS的USB程序开发笔记第一部分.doc_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

学习笔记基于LMS的USB程序开发笔记第一部分.doc

《学习笔记基于LMS的USB程序开发笔记第一部分.doc》由会员分享,可在线阅读,更多相关《学习笔记基于LMS的USB程序开发笔记第一部分.doc(20页珍藏版)》请在冰豆网上搜索。

学习笔记基于LMS的USB程序开发笔记第一部分.doc

USB开发指南之基于LM3Sxxx的USB程序开发笔记

基于LM3Sxxx的USB开发笔记

-Triton.zhang

2011-08-30

【摘要】

TI收购LM后继承了LM一系列的cortex-M3的产品,从而弥补了了TI在MCU市场一个空白。

从产品规划来讲,LM的产品还是不错的,特别是带CAN、USB、和集成MAC+PHY的ETH接口,这些外设为开发者提供了一个更方便的连接器解决方案。

本文就通过LM3SXXX的USB应用笔记给大家介绍一个完整的USB系统是如何开发出来的。

LM3Sxxx的几大系列中,其中F3xxx,F5xxx和最新的F9xxx系列都带有USB接口,有的是只支持Device,有的支持HOST+Device,部分芯片支持OTG功能,具体要看数据手册,本文的所有试验都基于TI最新的功能最全的LM3S9B96的评估板。

如果想更详细了解USB应用的朋友可以参看TI的相关文档和USB的协议。

本文中的所有程序都是本人编写,请配合该程序进行学习。

本文提及到的参考资料,请参见后面的参考资料列表,如果是刚刚接触USB,或者LM3Sxxx的同学可以先下载这些资料。

本开发笔记分为三大章节,第一章介绍USB的基础知识,如果对USB协议已经熟悉的同学,可以跳过本章。

第二章介绍如何在LM3SXXX芯片上开发USB程序,第三章介绍如何在PC上开发USB的驱动程序。

希望通过本笔记的学习,能够帮助大家尽快的学会如何进行USB的设计开发。

目录

基于LM3Sxxx的USB开发笔记 1

目录 2

第一章USB开发的必备知识 3

USB系统介绍 3

USB的连接模型 3

USB的拓扑结构 4

USB的电气特性 6

USB总线协议 6

USB数据流分类 7

USB的带宽 7

USB设备的插入检测机制 7

USB的识别过程 8

USB的请求命令 8

USB的描述符 10

USB设备的枚举过程 18

第一章USB开发的必备知识

USB系统介绍

USB是通用串行总线(UniversalSerialBus)的简写。

USB协议先后经历过USB1.0,USB1.1,USB2.0和USB3.0。

由于目前市面上的MCU大多只支持USB2.0,所以本文主要介绍USB2.0的特性。

USB是主从模式的总线结构,设备与设备之间,主机与主机之间是不能互连的,为了解决这个问题,扩大USB的使用范围,在USB2.0之后,出现了USBOTG(onthego)。

USBOTG的做法是同一个设备,在不同的应用场合下可以在主机和从机之间自由切换。

在USB1.0和USB1.1版本中,只支持1.5Mbps的低速模式(lowspeed)和12Mbps的全速模式(Fullspeed)。

在USB2.0中,又加入了480M的高速模式(Highspeed)。

USB的连接模型

USB是一种主从结构的总线,主机叫做host,从机叫做device(也就是我们平时讲的设备)。

一个完整的USB系统主要由三个部分组成:

uUSB的连接器

USB的连接是指USB设备与主机之间进行连接和通信的操作,主要包括以下几个方面:

-总线的拓扑结构:

USB设备与主机之间的各种连接方式

-内部层次关系:

根据性能叠置,USB的任务被分配到系统的每一个层次

-数据流模式:

描述了数据在提供中通过USB从发起端到接收端的流动方式

-USB的调度:

USB提供了一个共享的连接,对可疑使用的连接进行调度以支持同步数据传输

uUSB的主机

在任何USB系统中,只有一个USB的主机,USB和主机系统的接口叫做主机控制器。

主机控制器由硬件,固件和软件综合实现。

uUSB的设备

USB的设备包含两大类:

-网络集线设备:

为USB系统提供更多的连接点

-功能设备:

为USB系统提供具体功能

USB的数据交换只能发生在主机和从机之间,主机和主机,从机和从机之间是不能进行数据交换的。

为了再物理上区分主机和从机,使用不同的插头和插座,这样我们就能轻松的通过连接线来判断出USB系统中,谁处于主机模式,谁处于从机模式。

最早的USB标准中,USB接头只有4根线,USB2.0之后,定义了MiniUSB接口,增加了一个ID线,主要用在OTG的设备上用来标识本设备ID。

标准的USB接口有A型和B型,每一个类型又分为插头和插座。

如下图所示:

USB系统中,所有的数据传输都是由主机主动发起的,从机值是被动地负责应答。

在USBOTG应用中,一个设备可以在从机和主机之间切换,从而实现了设备间的连接,大大地增加了USB的使用范围。

但即使OTG的应用也还是属于主从模式,两个设备之间一个作为主机,一个作为从机。

USB的拓扑结构

USB的拓扑结构为金字塔型。

USB系统由一个USB主控制器出发,下面接USB的集线器,USB集线器将一个USB接口扩展为多个USB接口,多个USB接口又可通过集线器扩展更多的接口。

USB协议中对集线器的层数有限制,USB1.1规定USB的集线器层数最多是4层,USB2.0规定最多为6层。

图1.USB的拓扑结构

USB主控制器通过7位地址对挂接在总线上的设备进行寻址,理论上一个主控制器上最多可以接128个设备,但实际应用中接不了这么多。

在PC机上,一般有一个(或多个)USB集线器,它叫根集线器,直接连接在USB的主控制器上。

打开电脑的设备管理器,我们可以看到USB的主控制器和根集线器。

如下图所示:

图2.PC机上的USB控制器和集线器

USB的电气特性

标准的USB使用4根线:

5V电源线(Vbus),差分数据线负(D-),差分数据线正(D+),地(Gnd)。

在USBOTG中,又增加了一种mini接口,使用的是5根线,比标准的USB多了一根身份识别(ID)线。

如下图所示:

USB使用的是差分传输模式,有两根数据先,分别是D-和D+。

在USB低速和全速模式中,采用的是电压传输模式,在高速模式下,则是电流传输模式。

为了避免长时间出现全0或全1的信号,在发送数据前,要经过位填充处理。

然后将数据串行化,发送到数据总线上,由两根数据线的差分值来表示0和1。

在接收端恰恰相反,接收端采样数据总线,将数据并行话,然后去白化处理(即去掉填充位),在解析数据。

在USB协议中规定,设备可以通过USB总线供电,在未配置之前,设备可以从VBUS上获取100mA的电流,配置之后,最多可以从VBUS上获取500mA的电流。

关于USB的的电气特性有如下几点需要注意:

-电缆中包括VBUS、GND二条线,向设备提供电源;

-VBUS使用+5V电源。

USB对电缆长度要求很宽,最长可为几米;

-为了保证足够的输入电压和终端阻抗,重要的终端设备应位于电缆的尾部;

-低速模式需要更少的EMI保护;

-两种模式可在用同一USB总线传输的情况下自动地动态切换。

-过多的低速模式的使用将降低总线的利用率;

USB总线协议

USB总线属于轮询方式的总线,始终由主机控制端口初始化所有的数据传输。

每一个USB总线执行动作最多传送三个数据包。

按照传输前制定好的原则,在每次传送开始时,主机控制器发送一个描述传输操作的种类、方向,USB设备地址和终端号的USB数据包,这个数据包通常称为标志包(tokenpacket)。

USB设备从数据包中取出属于自己的数据。

数据传输方向不是从主机到设备就是从设备到主机。

在传输开始时,由标志包来标识数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。

接收端也要相应发送一个握手的数据包表明是否传送成功。

发送端和接收端之间的USB数据传输,在主机和设备的端口之间可视为一个管道(PIPE)。

USB存在两种类型的管道:

-数据流管道

数据流管道的数据没有USB协议规定的结构。

管道与数据宽、传输服务类型、端口特性(如缓冲区大小)有关。

数据流管道在USB设备初始化设置完成就存在了。

-消息管道:

消息通道是USB协议中特殊的一个管道,也成为控制管道。

设备上电启动后,该管道就存在,为设备的设置、查询状态和输入控制信息提供了一个入口。

USB数据流分类

在USB主机和设备通道之间的数据传输,我们叫做数据流,USB的结构包含四个基本的数据流传输类型:

-控制数据传送

在设备连接时用来对设备进行设置,还可对指定设备进行控制,如通道控制;

-批量数据传送

大批量产生并使用的数据,在传输约束下,具有很广的动态范围;通常用在打印机和扫描仪等有大量数据需求的传输。

-中断数据的传送

用来描述或匹配人的感觉或对特征反应的回馈;中断数据传输是针对少量数据的传输需求,数据延迟时间也是有限范围内的。

-同步数据的传送

由预先确定的传送延迟来填满预定的USB带宽;同步数据的建立、传输和使用时时连续且实时的,同步数据时以稳定的速率发送和接收实时信息,同步数据要使接受者与发送者保持相同的时间安排,出了传输速率,同步数据对延迟非常敏感。

对于任何指定的USB设备而言,一个通道只能支持上述一种方式的数据流传输。

USB的带宽

USB的带宽分配给各个通道,当一个通道建立后,USB主机就分配给它一定的带宽,USB设备需要提供一些数据缓冲区,若USB提供了更多的带宽,则需要更多的缓冲区。

USB的体系要保证缓冲引导的硬件的延迟限定在几毫秒内。

USB设备的插入检测机制

当USB设备插上主机时,主机是如何检测到设备插入的呢?

首先,在每个USB的集线器下游端口D+和D-上,分别接了一个15K欧姆的下拉电阻到地。

当集线器的端口悬空时,D+和D-被这两个下拉电阻拉到地,同为低电平。

在低速USB的设备上,DD-被接上1.5K欧姆的上拉电阻,在全速和高速USB设备上,D+被接上一个1.5K欧姆的上拉电阻。

当设备插入集线器是,由于1.5k欧姆的上拉和下拉电阻分压,就将D+或D-其中的一条线拉高了。

集线器检测到这个状态后,就上报USB主控制器,检测到设备的插入。

通过对D+,D-电平的识别可以判断出是低速设备还是高速或全速的设备。

高速和全速的设备需要主机和从机进一步数据交换后才能确定。

USB的识别过程

当USB主机检测到USB设备插入后,主机就通过一系列的动作来对设备进行枚举配置(配置是属于枚举的一个态,态表示暂时的状态),这些态如下:

-接入态(Attached)

设备接入主机后,主机通过检测信号线上的电平变化来发现设备的接入;

-供电态(Powered)

就是给设备供电,分为设备接入时的默认供电值,配置阶段后的供电值(按数据中要求的最大值,可通过编程设置)

-缺省态(Default)

USB在被配置之前,通过缺省地址0与主机进行通信

-地址态(Address)

经过了配置,USB设备被复位后,就可以按主机分配给它的唯一地址来与主机通信,这种状态就是地址态;

-配置态(Configured)

通过各种标准的USB请求命令来获取设备的各种信息,并对设备的某此信息进行改变或设置。

-挂起态(Suspended)

总线供电设备在3ms内没有总线操作,即USB总线处于空闲状态的话,该设备就要自动进入挂起状态,在进入挂起状态后,总的电流功耗不超过280UA。

USB的请求命令

控制传输过程中,初始化设置USB的设备时会涉及到USB的请求命令。

标准的USB设备请求命令总共有11个,每个命令由8个字节(5个字段)组成,具有相同的数据结构。

数据结构如下图所示:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1