打印

【科星】STM32F107开发板USB篇-从USB的操作

[复制链接]
3619|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ren0zhe|  楼主 | 2013-11-14 17:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     科星STM32F107开发板USB篇-从USB的操作

                                                                                                                                   工程文件名称《科星F107开发板USB应用篇之host读U盘》
                                                                                                                                   工程文件名称《科星F107开发板USB应用篇之从设备例程》
                                                                                                                                                                                  编译器IAR5.40 MDK4.22

       USB这一节,我们主要讲一下我们实现的一些功能,具体的USB的知识,请大家搜索网上的相关资料,因为USB接口协议是标准的协议,对于所有的 USB都是一致的,并且想要把USB写清楚也不是一篇笔记能够做到的。建议大家使用USB的最好买本书来学习。
      《电脑圈圈》的书,如果学USB,作者以为应该买本看看。总之USB需要理解才会做的更好,作者也不是很懂。现在只能在工程上更改,这里只能给大家录入一点以后大家学习参考的知识,绝大部分是摘抄,请原作者见谅。

       14.1 硬件小知识:USB通用串行总线规范是以Intel为主,并由康柏、微软、IBM、DEC及日本NEO等共同制定的串行接口规格。USB2.0规范向下兼容USB1.1,数据的传输率达120~240Mbps,为大数据量高速实时传输提供了强有力的通信方式,支持宽带数字摄像设备及下一代扫描仪、打印机及存储设备。
一个USB系统可以从三个方面加以描述:USB互连、USB从端口和USB主端口。
1. USB互连
USB互连是指一个USB主端口(USB Host)与USB从端口相连并和其通信的方式,它包括以下几方面。
·总线的拓扑结构:USB主端口和USB从端口的连接模式。
·数据流模型:描述了数据在系统中通过USB从产生方到使用方的流动方式。
·任务规划:USB提供多个从端口共享的连接,对USB从端口必须进行规划以分配带宽。
USB的总线拓扑结构如图所示,它是一个星型结构,集线器(Hub)位于每个星型结构的中心,USB协议规定最多允许5级集线器进行级连。这种集线器级连的方式使得外设的扩展很容易。
数据流模式对于USB设备很关键。USB协议支持以单向或双向的方式,在USB主端口和一个USB设备之间交换功能数据和控制信息。USB的数据传输是在主端口和一个USB从端口上的特定端点之间进行的,一个给定的USB从端口支持多个数据传输端点。USB主端口将分别处理一个USB从端口的任一端点与其他端点上的通信,这种主端口和一个USB从端口之间的联系称为管道。

       在USB技术的体系结构中有基本的数据传送类型,任一给定的管道都必须能够支持其中的一种传输方式。2.USB从端口
USB从端口包括USB集线器和功能设备(FunctiON)两大类。它们都必须有标准的USB接口,理解USB协议,支持标准的USB操作(如配置、复位等)。它们的描述信息也必须具有USB协议定义的标准格式。集线器为USB总线提供扩展和连接;功能设备是具有一定特殊应用功能的设备,它能发送数据到主机,也可以接收来自主机的数据和控制信息。
3.USB主端口
USB主机是USB系统的核心,在一个USB系统中只有一个主端口主端口的USB接口称为USB控制器,通过它主机和外围USB设备进行通信。在主机中还集成了一个根集线器(Root Hub),用于直接与外设相连或与一般USB Hub级连。主机所具有的功能包括:
·检测USB设备的插入和拔出。
·管理主机与设备之间的数据流。
·对设备进行必要的控制。
·收集各种状态信息。
·对插入的设备供电。
stm32f107 103系类内部集成了USB控制器,可以接出USB Host端口,用于系统调试。
对于初学者市场上有一本《电脑圈圈》的书 特别不错 例程很多 建议开发usb设备的工程师看一下
Usb优势:
USB具有很多优点,例如即插即用,容易使用,方便携带,传输速度快,可扩展性强,标准统一,价格便宜等等。目前流行的USB设备有移动硬盘,数码相机,MP3,U盘,USB鼠标、键盘、游戏杆,USB MIDI键盘,USB摄相头,USB打印机,USB扫描仪,USB声卡,USB话筒,USB网卡,USB显示器,USB电话,具有USB口的各种仪表仪器等等,只要是能跟电脑打交道的,就基本上可以通过USB来实现,足见USB功能的强大。
Usb操作:
Usb最重要的是枚举 这里我们摘录 电脑圈圈 的学习笔记和大家分享:
USB主机在检测到USB设备插入后,就要对设备进行枚举了。为什么要枚举呢?枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB的枚举过程,只要枚举成功了,那么就已经成功大半了。 在说枚举之前,先大概说一下USB的一种传输模式——控制传输。这种传输在USB中是非常重要的,它要保证数据的正确性,在设备的枚举过程中都是使用控制传输。控制传输分为三个过程:①建立过程。②可选的数据过程。③状态过程。建立(Setup)过程都是由USB主机发起,它开始于一个Setup令牌包,后面紧跟一个DATA0包。如果是控制输入传输,那么数据过程就是输入数据;如果是控制输出传输,那么数据过程是输出数据。如果在设置过程中,指定了数据长度为0,则没有数据过程。数据过程之后是状态过程。状态过程刚好与数据过程的数据传输方向相反:如果是控制输入传输,则状态过程是一个输出数据包;如果是控制输出传输,则状态过程是一个输入数据包。状态阶段用来确认所有的数据都已经正确传输。 好了,下面我们来看看枚举的详细过程。 首先,USB主机检测到USB设备插入后,就会先对设备复位。设备复位后,USB主机就会对地址为0的设备发送获取设备描述符的标准请求。所有的USB设备在总线复位后其地址都为0,这样主机就可以跟那些刚刚插入的设备通过地址0通信。主机在建立阶段发出获取设备描述符的输入请求,设备收到该请求后,在数据过程将设备描述符返回给主机。主机在成功获取到一个数据包的设备描述符后并且确认没有什么错误后(注意:有些USB设备的端点0大小不足18字节(但至少具有8字节),而标准的设备描述有18字节,在这种情况下,USB设备只能暂时按最大包将部分设备描述符返回,而主机在成功获取到前面一部分描述符后,就不会再请求剩下的设备描述符部分,而是进入设置地址阶段),就会返回一个0长度的状态数据包给设备。 然后主机再对设备复位一下,接下来就会进入到设置地址阶段。这时USB主机发出一个设置地址的请求(建立过程,设置地址无数据过程),地址包含在建立包中,具体的地址USB主机会负责管理,它会分配一个唯一的地址给新的设备。USB设备在收到地址后,返回0长度的状态包,主机收到0长度的状态包之后,会返回一个ACK给设备。设备在收到这个ACK之后,就可以启用新的地址了。这样设备就分配到了一个唯一的设备地址,以后主机就通过它来进行访问该设备。 然后主机再次获取设备描述符,这次跟第一次可能有点不一样,这次需要获取完全部的18个字节的设备描述符。当然,如果你的端点0缓冲大于18字节的话,那就跟第一次的情形一样了。 接下来,主机就会获取配置描述符。配置描述符总共为9字节。主机在获取到配置描述符后,根据里面的配置集合总长度,再获取配置集合。配置集合包括配置描述符,接口描述符,端点描符等等。 如果有字符串描述符的话,还要获取字符串描述符。另外HID设备还有HID描述符等。使用BUS HOUND以及通过串口返回信息,很容易看到具体的过程。总之是主机请求什么,你的程序就响应什么。


请打开工程里面的 科星F107开发板USB应用篇之从设备例程\Project\Custom_HID
具体USB什么枚举,初始化之类的就不讲了,请参看数据手册,403页 如果说也是COPY数据手册。
我们这里简单说说原函数文件主要做了什么:


14.科星F107开发板USB篇-从USB的操作.pdf (453.08 KB)


沙发
putron09| | 2014-5-21 19:45 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:科星F107&F407开发板官网  http://corxstm32.taobao.com/      QQ交流群: 144728423

12

主题

255

帖子

5

粉丝