原创 USB学习笔记1

2009-1-4 14:51 3185 0 1 分类: 通信

USB设备作为一个完整的硬件设备,是由硬件和固件两部分组成的。其中固件包括有关系统配置和CPU的一些设置模块、USB协议栈模块等几部分。


USB设备在硬件上要由USB的芯片来实现。这个芯片的作用有:管理和实现USB的物理层差模信号;提供给连接的接口;电源管理;以寄存器的形式提供各种端点;提供各种配置和存储寄存器。因此,固件就是以这些硬件资源为基础来实现USB的功能。一般的USB 芯片都会提供几个标准的端点,每个端点都支持单一的总线传输方式,其中端点0必须支持控制传输。管理和使用这些端点,就需要通过相应的控制寄存器、状态寄存器、中断寄存器和数据寄存器来实现。合理有效地使用这些寄存器,是编好USB 协议栈的关键。


简而言之,USB的协议栈以设备端点的使用和管理作为基础和核心。而在端点的这些寄存器中,对中断寄存器的管理尤为重要,而且编写USB的中断服务程序是整个设备端USB固件编写的主要内容。


中断服务程序的功能主要是处理USB发送和接收的不同通信信息;从端点0获得主机的控制信息,或是向端点0发送设备的描述信息;以及向其他端点发送完整的数据。能够触发USB中断的条件很多,一般可分为一下几类:


        1.接收缓冲区满;


        2.发送缓冲区空;


        3.设备SETUP令牌传输;


        4.输出OUT令牌传输;


        5.输入IN令牌传输;


        6.主机发送唤醒RESUME信号;


        7.主机发送包结束EOP信号。


中断服务程序的任务就是分辨这些触发条件,然后转入相应的处理程序中。整个中断的处理过程可分为3个步骤:


        1.通过访问USB芯片的寄存器了解中断触发的原因,以及其他相关信息。


        2.根据确定的中断触发原因,转入相应的处理程序。


        3.根据协议处理的结果,控制USB芯片完成相应的通信任务。


步骤1和3与芯片本身的硬件结构直接相关,需要根据芯片的相关规定来确定,而步骤2最复杂,但这个过程与芯片的硬件没有直接联系,各种USB设备的步骤2都有共同的地方,可以参考编写。


以下为一个比较精简的USB设备固件流程图。


pdf


 


 


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户50611 2009-1-4 00:29

相关推荐阅读
用户180229 2009-12-07 17:23
VC++ 中error C2275 解析
今天群上一人遇到问题:在正确的程序中增加KdPrint()调用以输出调试信息,如下://////////////////////////////////////////////////////////...
用户180229 2009-12-04 15:57
Protel 快捷键大全
Protel 99 se快捷键大全<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />e...
用户180229 2009-12-04 10:12
PCB没焊好使我折腾了一整天
最近做了一块PCI视频采集卡,把PCI桥芯片的最小系统焊好之后,迫不及待地插在电脑上,可是却没有出现我期望的那个“发现新硬件”的提示,一下子心都凉了,犹如当头被泼了一瓢冷水!打开“设备管理器”,里面当...
用户180229 2009-12-03 21:34
去除电脑桌面图标蓝底的方法
1. 我的电脑属性--高级--性能--设置--让WIN选择最佳设置--确定(或者自定义--在桌面上为图标标签使用阴影勾选后确定) 2. 桌面右键--排列图标--去除勾选在桌面上锁定WEB项目 3. 桌...
用户180229 2009-12-03 21:22
工程常用计算公式
 ...
用户180229 2009-12-03 16:06
0欧姆电阻的作用
 1.在电路中没有任何功能,只是在PCB上为了调试方便或兼容设计等原因。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:of...
EE直播间
更多
我要评论
1
0
关闭 站长推荐上一条 /3 下一条