1

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

1 回答 1

0

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

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

看看这个网站上的控制转移: http ://www.beyondlogic.org/usbnutshell/usb4.shtml

请注意控制传输如何具有以下格式:SETUP -> DATA -> STATUS。仔细阅读“大局”部分,其中每个阶段都分解为单独的数据包。

于 2018-04-06T19:07:16.517 回答