我正在编写固件以将FPGA连接到Mat-Lab以进行数据采集和控制。到目前为止的设置是FPGA(DE2-115) - > ISP 1362 - > PC(Windows)。我正在使用通用的“USB View”程序来查看设备描述符。
我撞墙了。 USB主机重置我的设备,然后发送一个8字节的“获取描述符”请求。我用18字节填充IN EP并验证它。大约20?几微秒后,ISP1362标记一个中断,IN EP的状态是空的(发送数据,对吧?)。然后在几微秒之后,OUT EP中存在零长度数据包。然后我清除OUT EP。在大约220微秒后,主机再次重置我的设备。这个零长度数据包是什么意思?
总结:接收总线复位,接收获取描述符,发送描述,接收空包,接收总线复位。
另外,是否有一个程序可以让我看一下这个原始数据的交互?我想看看主机(PC)看到了什么。
bLength = 8'h12 ;
bDescriptorType = 8'h01 ;
bcdUSB = 16'h0200 ;
bDeviceClass = 8'h00 ;
bDeviceSubClass = 8'h00 ;
bDeviceProtocol = 8'h00 ;
bMaxPacketSize0 = 8'h40 ;
idVendor = 16'h067B ;
idProduct = 16'h2303 ;
bcdDevice = 16'h0400 ;
iManufacturer = 8'h01 ;
iProduct = 8'h02 ;
iSerialNumber = 8'h00 ;
bNumConfigs = 8'h01 ;
答案 0 :(得分:0)
您所看到的是在状态阶段从主机返回的握手(即零长度数据包)。
发送18字节描述符后,主机会向您的设备发送ACK。该ACK在状态寄存器中产生一个中断,您可以读取并清除该中断。数据阶段结束,状态阶段开始。主机发送OUT令牌和空数据包(ZLP)以确认成功接收到该数据。您的设备发回ACK。这结束了状态阶段。
在此网站上查看控制转移: http://www.beyondlogic.org/usbnutshell/usb4.shtml
请注意控件传输如何具有以下格式:SETUP - >数据 - >状态。仔细阅读“大图”部分,其中每个阶段分解为单个数据包。