随笔分类 - USB相关
摘要:又被坑了,总算解决了,要睡了长话短说。首先,着重强调 Device Class GUID, Device Interface Class GUID, Interface GUID是有区别的,另外奉上两篇MSDN文章: http://msdn.microsoft.com/en-us/library/windows/hardware/ff553412(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/hardware/ff553428(v=vs.85).aspx Device Class GUID 是INF文件...
阅读全文
摘要:#include <stm32f10x_lib.h>
#include "usbreg.h"
#include "usbcore.h"
#include "usbuser.h"
#include "usbcfg.h"
#include "usb.h"
#include "usb_hw.h"
#include "usbdesc.h"
#include "hid.h"
#include "hiduser.h"
阅读全文
摘要:#include <stm32f10x_lib.h>
#include <stm32f10x_map.h>
#include "usbreg.h"
#include "usbuser.h"
#include "usbcore.h"
#include "usb_hw.h"
#define _DEBUG_
#include "debug.h" #define USB_EP_NUM 4 /*端点缓冲区的开始地址 *因为每个缓冲块都需要一个端点描术表 *而所有的端点描述表放在,U
阅读全文
摘要:最近在使用STM32的USB模块开发个项目,还以为挺简单,结果搞了快两天才把USB的包缓冲区的访问搞定,在此做个小总结吧。 STM32的USB模块包缓冲区有512B,但是在STM32的参考手册中的存储器映像中却表明0x40006000-0x400063ff,整整多了512B,怎么会这样呢,同时在尝试着编程时也遇到了一个问题:在usb_core.c文件的Setup0_Process(void)这个函数中,有这么一段:uint16_t offset = 1;if (pInformation->ControlState != PAUSE){ pInformation->USBbmRequ
阅读全文
摘要:搞了这么久USB了,还是不知道DATA0,DATA1的最大包长,以及端点描述符中的最大包长与68013的端点缓冲区有什么关系,经过二小时的奋斗得出如下结论: 1.DATA0或DATA1实际上就是一个端点描述符中的最大包长。换句话说,68013发一次数据包就是一个DATA0或 DATA12.微帧是用来作为传输时间基准的。在每个微帧间可以传一到多次DATA0/DATA1,但是根据DATA0/DATA1(也就是68013一次发送的数据的长度)的大小,每个微帧之间可以传送DATA数据包的个数也不同,DATA0/DATA1越大,每个微帧之间能传输的DATA的数据包的个数越少。3.在...
阅读全文
摘要:今天看CY7C68013开发手册时,突然想起,在USB接口描述符中有一个bAlternateSetting字段一直没用过,花了一上午时间也没找到相关资料!就在快中午时突然看到一句话:“bAlternateSetting用于在同一个接口中的多个描述符中进行切换".一下子感觉抓住要点了。经过百度及查阅USB specification2.0得出如下结论: 在USB协议中同一个配置中的不同接口不能共用端点。 同一个接口可以有多个接口描述符,用bAlternateSetting来识别. 同一个接口的不同接口描述符,可以拥有相同的端点。 同一个接口中的不同描述符可以像其他接口描述符...
阅读全文
摘要:USB协议的第9章讲到USB可见设备状态[Universal Serial Bus Specification, Section 9.1.1, Pg 239],分为连接(Attached),上电(Powered),默认(Default),地址(Address),配置(Configured)和挂起(Suspended)6个状态。所谓可见,即USB系统和主机可见的状态,其他状态属于USB设备内部而不可见。其中有关电源的,大致可分下面三类:1. 连接状态(Attached):设备连接,但未提供电源。2. 上电状态(Powered):设备被复位(Reset),或者说处于地址、配置状态。(参见USB..
阅读全文
摘要:USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机(Host)报告。在系统启动时,主机轮询它的根hub(Root Hub)的状态看是否有设备(包括子hub和子hub上的设备)连接。USB总线拓扑结构见下图(最顶端为主机的Root Hub):USB总线拓扑结构(USB Bus Topology)一旦获悉有新设备连接上来,主机就会发送一系列的请求(Resqusts)给设备所挂载到的hub,再由hub建立起一条连接主机(Host)和设备(Device)之间的通信通道。然后主机以控制传输(Control...
阅读全文
摘要:我们知道USB2.0向下兼容USB1.x,即高速2.0的hub能支持所有的速度类型的设备,而USB1.x的hub不能支持高速设备(High Speed Device)。因此,如果高速设备挂到USB1.x的hub上,那该设备只能工作在全速模式下。不管是hub还是设备(device),对于速度的区分是非常重要的,否则,后续的通信根本无法进行。全速和低速识别 根据规范,全速(Full Speed)和低速(Low Speed)很好区分,因为在设备端有一个1.5k的上拉电阻,当设备插入hub或上电(固定线缆的USB设备)时,有上拉电阻的那根数据线就会被拉高,hub根据D+/D-上的电平判断所挂...
阅读全文
摘要:折腾了好几天,终于把双机联调给弄成功了,把参数与步骤放在这里,希望对与我一样的人有点帮助!1.首先,安装windbg,并把它的快捷方式发送到桌面上并把中的内容改为:D:/WinDDK/7600.16385.1/Debuggers/windbg.exe -b -k com:pipe,port=//./pipe/com_1,resets=0然后点file->symbols file path,打开如下对话框在里面输入上“srv*c:/symbols*http://msdl.microsoft.com/download/symbols;自已的工程路径”(以分号隔开);2.然后点file->
阅读全文

浙公网安备 33010602011771号