USB FPGA固件ISP1362:枚举,清空OUT数据包

时间:2013-07-17 22:52:19

标签: usb enumeration fpga firmware

我正在编写固件以将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        ;

1 个答案:

答案 0 :(得分:0)

您所看到的是在状态阶段从主机返回的握手(即零长度数据包)。

发送18字节描述符后,主机会向您的设备发送ACK。该ACK在状态寄存器中产生一个中断,您可以读取并清除该中断。数据阶段结束,状态阶段开始。主机发送OUT令牌和空数据包(ZLP)以确认成功接收到该数据。您的设备发回ACK。这结束了状态阶段。

在此网站上查看控制转移: http://www.beyondlogic.org/usbnutshell/usb4.shtml

请注意控件传输如何具有以下格式:SETUP - >数据 - >状态。仔细阅读“大图”部分,其中每个阶段分解为单个数据包。