手里有个比较早的时候买的100M的逻辑分析仪,参数在当时是比较高的了, 在3/6/9/16 通道时分别可达100/50/32/16MHz的采样率,用的USB2.0高速接口。是国内一家厂商山寨的Saleae Logic16。可惜后面自动升级固件之后,不能使用了。也不能浪费,拆开来分析分析,学习下吧。
常见的JTAG的盒子,直接用一字螺丝刀撬开即可。
可以看到PCB
使用UsbTreeView.exe可以查看设备的枚举信息,使用的是厂商自定义设备协议
枚举内容如下
=========================== USB Port1 ===========================
Connection Status : 0x01 (Device is connected)
Port Chain : 2-1
Properties : 0x01
IsUserConnectable : yes
PortIsDebugCapable : no
PortHasMultiCompanions : no
PortConnectorIsTypeC : no
ConnectionIndex : 0x01 (Port 1)
CompanionIndex : 0
CompanionHubSymLnk : USB#ROOT_HUB30#4&302b2024&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
CompanionPortNumber : 0x0D (Port 13)
-> CompanionPortChain : 2-13
========================== Summary =========================
Vendor ID : 0x21A9 (Saleae LLC)
Product ID : 0x1001
USB Version : 2.0
Port maximum Speed : High-Speed (Companion Port 2-13 supports SuperSpeed)
Device maximum Speed : High-Speed
Device Connection Speed : High-Speed
Self powered : no
Demanded Current : 100 mA
Used Endpoints : 1
======================== USB Device ========================
+++++++++++++++++ Device Information ++++++++++++++++++
Device Description : Saleae Logic16 USB Logic Analyzer
Device Path 1 : \\?\USB#VID_21A9&PID_1001#5&244f8fa8&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Device Path 2 : \\?\USB#VID_21A9&PID_1001#5&244f8fa8&0&1#{dee824ef-729b-4a0e-9c14-b7117d33a817} (GUID_DEVINTERFACE_WINUSB)
Device Path 3 : \\?\USB#VID_21A9&PID_1001#5&244f8fa8&0&1#{a6782bce-4376-4de2-8096-70aa9e8fed19}
Device Path 4 : \\?\USB#VID_21A9&PID_1001#5&244f8fa8&0&1#{d509886e-3aa5-11df-861e-86b356d89593}
Kernel Name : \Device\USBPDO-7
Device ID : USB\VID_21A9&PID_1001\5&244F8FA8&0&1
Hardware IDs : USB\VID_21A9&PID_1001&REV_0000 USB\VID_21A9&PID_1001
Driver KeyName : {36fc9e60-c465-11cf-8056-444553540000}\0036 (GUID_DEVCLASS_USB)
Driver : \SystemRoot\System32\drivers\WinUsb.sys (Version: 10.0.22621.608 Date: 2022-10-03)
Driver Inf : C:\WINDOWS\inf\oem36.inf
Legacy BusType : PNPBus
Class : USB
Class GUID : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
Service : WinUSB
Enumerator : USB
Location Info : Port_#0001.Hub_#0002
Location IDs : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1), ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS01)
Container ID : {21622f66-2b81-11ee-9f00-e20af6a8ada3}
Manufacturer Info : Saleae LLC
Capabilities : 0x04 (Removable)
Status : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code : 0
Address : 1
Power State : D0 (supported: D0, D3, wake from D0)
+++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags
GlobalDisableSerNumGen : REG_BINARY 00
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\21A910010000
osvc : REG_BINARY 00 00
---------------- Connection Information ---------------
Connection Index : 0x01 (Port 1)
Connection Status : 0x01 (DeviceConnected)
Current Config Value : 0x01 (Configuration 1)
Device Address : 0x0D (13)
Is Hub : 0x00 (no)
Device Bus Speed : 0x02 (High-Speed)
Number Of Open Pipes : 0x00 (0 pipes to data endpoints)
Data (HexDump) : 01 00 00 00 12 01 00 02 FF FF FF 40 A9 21 01 10 ...........@.!..
00 00 00 00 00 01 01 02 00 0D 00 00 00 00 00 01 ................
00 00 00 ...
--------------- Connection Information V2 -------------
Connection Index : 0x01 (1)
Length : 0x10 (16 bytes)
SupportedUsbProtocols : 0x03
Usb110 : 1 (yes, port supports USB 1.1)
Usb200 : 1 (yes, port supports USB 2.0)
Usb300 : 0 (no, port not supports USB 3.0) -> but Companion Port 2-13 does
ReservedMBZ : 0x00
Flags : 0x00
DevIsOpAtSsOrHigher : 0 (Device is not operating at SuperSpeed or higher)
DevIsSsCapOrHigher : 0 (Device is not SuperSpeed capable or higher)
DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
DevIsSsPlusCapOrHigher : 0 (Device is not SuperSpeedPlus capable or higher)
ReservedMBZ : 0x00
Data (HexDump) : 01 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00 ................
---------------------- Device Descriptor ----------------------
bLength : 0x12 (18 bytes)
bDescriptorType : 0x01 (Device Descriptor)
bcdUSB : 0x200 (USB Version 2.0)
bDeviceClass : 0xFF (Vendor Specific)
bDeviceSubClass : 0xFF
bDeviceProtocol : 0xFF
bMaxPacketSize0 : 0x40 (64 bytes)
idVendor : 0x21A9 (Saleae LLC)
idProduct : 0x1001
bcdDevice : 0x0000
iManufacturer : 0x00 (No String Descriptor)
iProduct : 0x00 (No String Descriptor)
iSerialNumber : 0x00 (No String Descriptor)
bNumConfigurations : 0x01 (1 Configuration)
Data (HexDump) : 12 01 00 02 FF FF FF 40 A9 21 01 10 00 00 00 00 .......@.!......
00 01 ..
------------------ Configuration Descriptor -------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x00AB (171 bytes)
bNumInterfaces : 0x01 (1 Interface)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0x80
D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x00 (no)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0x32 (100 mA)
Data (HexDump) : 09 02 AB 00 01 01 00 80 32 09 04 00 00 00 FF FF ........2.......
FF 00 09 04 00 01 06 FF FF FF 00 07 05 01 02 00 ................
02 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00 ................
07 05 04 02 00 02 00 07 05 86 02 00 02 00 07 05 ................
88 02 00 02 00 09 04 00 02 06 FF FF FF 00 07 05 ................
01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03 ..@......@......
00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02 ................
01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF ................
00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 .....@......@...
05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 ................
01 00 02 01 07 05 88 02 00 02 00 ...........
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x00
bNumEndpoints : 0x00 (Default Control Pipe only)
bInterfaceClass : 0xFF (Vendor Specific)
bInterfaceSubClass : 0xFF
bInterfaceProtocol : 0xFF
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 00 00 FF FF FF 00 .........
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x01
bNumEndpoints : 0x06 (6 Endpoints)
bInterfaceClass : 0xFF (Vendor Specific)
bInterfaceSubClass : 0xFF
bInterfaceProtocol : 0xFF
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 01 06 FF FF FF 00 .........
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x01 (Direction=OUT EndpointID=1)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0200 (max 512 bytes)
bInterval : 0x00 (never NAKs)
Data (HexDump) : 07 05 01 02 00 02 00 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0200 (max 512 bytes)
bInterval : 0x00 (never NAKs)
Data (HexDump) : 07 05 81 02 00 02 00 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x02 (Direction=OUT EndpointID=2)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0200 (max 512 bytes)
bInterval : 0x00 (never NAKs)
Data (HexDump) : 07 05 02 02 00 02 00 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x04 (Direction=OUT EndpointID=4)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0200 (max 512 bytes)
bInterval : 0x00 (never NAKs)
Data (HexDump) : 07 05 04 02 00 02 00 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x86 (Direction=IN EndpointID=6)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0200 (max 512 bytes)
bInterval : 0x00 (never NAKs)
Data (HexDump) : 07 05 86 02 00 02 00 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x88 (Direction=IN EndpointID=8)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0200 (max 512 bytes)
bInterval : 0x00 (never NAKs)
Data (HexDump) : 07 05 88 02 00 02 00 .......
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x02
bNumEndpoints : 0x06 (6 Endpoints)
bInterfaceClass : 0xFF (Vendor Specific)
bInterfaceSubClass : 0xFF
bInterfaceProtocol : 0xFF
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 02 06 FF FF FF 00 .........
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x01 (Direction=OUT EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040
Bits 15..13 : 0x00 (reserved, must be zero)
Bits 12..11 : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
Bits 10..0 : 0x40 (64 bytes per packet)
bInterval : 0x01 (1 microframe -> 0.125 ms)
Data (HexDump) : 07 05 01 03 40 00 01 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040
Bits 15..13 : 0x00 (reserved, must be zero)
Bits 12..11 : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
Bits 10..0 : 0x40 (64 bytes per packet)
bInterval : 0x01 (1 microframe -> 0.125 ms)
Data (HexDump) : 07 05 81 03 40 00 01 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x02 (Direction=OUT EndpointID=2)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0200
Bits 15..13 : 0x00 (reserved, must be zero)
Bits 12..11 : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
Bits 10..0 : 0x200 (512 bytes per packet)
bInterval : 0x01 (1 microframe -> 0.125 ms)
Data (HexDump) : 07 05 02 03 00 02 01 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x04 (Direction=OUT EndpointID=4)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0200 (max 512 bytes)
bInterval : 0x00 (never NAKs)
Data (HexDump) : 07 05 04 02 00 02 00 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x86 (Direction=IN EndpointID=6)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0200
Bits 15..13 : 0x00 (reserved, must be zero)
Bits 12..11 : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
Bits 10..0 : 0x200 (512 bytes per packet)
bInterval : 0x01 (1 microframe -> 0.125 ms)
Data (HexDump) : 07 05 86 03 00 02 01 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x88 (Direction=IN EndpointID=8)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0200 (max 512 bytes)
bInterval : 0x00 (never NAKs)
Data (HexDump) : 07 05 88 02 00 02 00 .......
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x03
bNumEndpoints : 0x06 (6 Endpoints)
bInterfaceClass : 0xFF (Vendor Specific)
bInterfaceSubClass : 0xFF
bInterfaceProtocol : 0xFF
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 03 06 FF FF FF 00 .........
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x01 (Direction=OUT EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040
Bits 15..13 : 0x00 (reserved, must be zero)
Bits 12..11 : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
Bits 10..0 : 0x40 (64 bytes per packet)
bInterval : 0x01 (1 microframe -> 0.125 ms)
Data (HexDump) : 07 05 01 03 40 00 01 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040
Bits 15..13 : 0x00 (reserved, must be zero)
Bits 12..11 : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
Bits 10..0 : 0x40 (64 bytes per packet)
bInterval : 0x01 (1 microframe -> 0.125 ms)
Data (HexDump) : 07 05 81 03 40 00 01 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x02 (Direction=OUT EndpointID=2)
bmAttributes : 0x01 (TransferType=Isochronous SyncType=None EndpointType=Data)
wMaxPacketSize : 0x0200
Bits 15..13 : 0x00 (reserved, must be zero)
Bits 12..11 : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
Bits 10..0 : 0x200 (512 bytes per packet)
bInterval : 0x01 (1 microframe -> 0.125 ms)
Data (HexDump) : 07 05 02 01 00 02 01 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x04 (Direction=OUT EndpointID=4)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0200 (max 512 bytes)
bInterval : 0x00 (never NAKs)
Data (HexDump) : 07 05 04 02 00 02 00 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x86 (Direction=IN EndpointID=6)
bmAttributes : 0x01 (TransferType=Isochronous SyncType=None EndpointType=Data)
wMaxPacketSize : 0x0200
Bits 15..13 : 0x00 (reserved, must be zero)
Bits 12..11 : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
Bits 10..0 : 0x200 (512 bytes per packet)
bInterval : 0x01 (1 microframe -> 0.125 ms)
Data (HexDump) : 07 05 86 01 00 02 01 .......
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x88 (Direction=IN EndpointID=8)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0200 (max 512 bytes)
bInterval : 0x00 (never NAKs)
Data (HexDump) : 07 05 88 02 00 02 00 .......
--------- Device Qualifier Descriptor (for Full-Speed) --------
bLength : 0x0A (10 bytes)
bDescriptorType : 0x06 (Device_qualifier Descriptor)
bcdUSB : 0x200 (USB Version 2.00)
bDeviceClass : 0xFF (Vendor Specific)
bDeviceSubClass : 0xFF
bDeviceProtocol : 0xFF
bMaxPacketSize0 : 0x40 (64 Bytes)
bNumConfigurations : 0x01 (1 other-speed configuration)
bReserved : 0x00
Data (HexDump) : 0A 06 00 02 FF FF FF 40 01 00 .......@..
------------ Other Speed Configuration Descriptor -------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x07 (Other_speed_configuration Descriptor)
wTotalLength : 0x00AB (171 bytes)
bNumInterfaces : 0x01 (1 Interface)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0x80
D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x00 (no)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0x32 (100 mA)
Data (HexDump) : 09 07 AB 00 01 01 00 80 32 09 04 00 00 00 FF FF ........2.......
FF 00 09 04 00 01 06 FF FF FF 00 07 05 01 02 40 ...............@
00 00 07 05 81 02 40 00 00 07 05 02 02 40 00 00 ......@......@..
07 05 04 02 40 00 00 07 05 86 02 40 00 00 07 05 ....@......@....
88 02 40 00 00 09 04 00 02 06 FF FF FF 00 07 05 ..@.............
01 03 40 00 0A 07 05 81 03 40 00 0A 07 05 02 03 ..@......@......
40 00 0A 07 05 04 02 40 00 00 07 05 86 03 40 00 @......@......@.
0A 07 05 88 02 40 00 00 09 04 00 03 06 FF FF FF .....@..........
00 07 05 01 03 40 00 0A 07 05 81 03 40 00 0A 07 .....@......@...
05 02 01 40 00 01 07 05 04 02 40 00 00 07 05 86 ...@......@.....
01 40 00 01 07 05 88 02 40 00 00 .@......@..
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x00
bNumEndpoints : 0x00 (Default Control Pipe only)
bInterfaceClass : 0xFF (Vendor Specific)
bInterfaceSubClass : 0xFF
bInterfaceProtocol : 0xFF
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 00 00 FF FF FF 00 .........
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x01
bNumEndpoints : 0x06 (6 Endpoints)
bInterfaceClass : 0xFF (Vendor Specific)
bInterfaceSubClass : 0xFF
bInterfaceProtocol : 0xFF
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 01 06 FF FF FF 00 .........
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x01 (Direction=OUT EndpointID=1)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 01 02 40 00 00 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 81 02 40 00 00 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x02 (Direction=OUT EndpointID=2)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 02 02 40 00 00 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x04 (Direction=OUT EndpointID=4)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 04 02 40 00 00 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x86 (Direction=IN EndpointID=6)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 86 02 40 00 00 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x88 (Direction=IN EndpointID=8)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 88 02 40 00 00 ....@..
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x02
bNumEndpoints : 0x06 (6 Endpoints)
bInterfaceClass : 0xFF (Vendor Specific)
bInterfaceSubClass : 0xFF
bInterfaceProtocol : 0xFF
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 02 06 FF FF FF 00 .........
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x01 (Direction=OUT EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x0A (10 ms)
Data (HexDump) : 07 05 01 03 40 00 0A ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x0A (10 ms)
Data (HexDump) : 07 05 81 03 40 00 0A ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x02 (Direction=OUT EndpointID=2)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x0A (10 ms)
Data (HexDump) : 07 05 02 03 40 00 0A ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x04 (Direction=OUT EndpointID=4)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 04 02 40 00 00 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x86 (Direction=IN EndpointID=6)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x0A (10 ms)
Data (HexDump) : 07 05 86 03 40 00 0A ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x88 (Direction=IN EndpointID=8)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 88 02 40 00 00 ....@..
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x03
bNumEndpoints : 0x06 (6 Endpoints)
bInterfaceClass : 0xFF (Vendor Specific)
bInterfaceSubClass : 0xFF
bInterfaceProtocol : 0xFF
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 03 06 FF FF FF 00 .........
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x01 (Direction=OUT EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x0A (10 ms)
Data (HexDump) : 07 05 01 03 40 00 0A ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x0A (10 ms)
Data (HexDump) : 07 05 81 03 40 00 0A ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x02 (Direction=OUT EndpointID=2)
bmAttributes : 0x01 (TransferType=Isochronous SyncType=None EndpointType=Data)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 02 01 40 00 01 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x04 (Direction=OUT EndpointID=4)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 04 02 40 00 00 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x86 (Direction=IN EndpointID=6)
bmAttributes : 0x01 (TransferType=Isochronous SyncType=None EndpointType=Data)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 86 01 40 00 01 ....@..
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x88 (Direction=IN EndpointID=8)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 88 02 40 00 00 ....@..
-------------------- String Descriptors -------------------
none
复制代码根据枚举信息画出如下拓扑结构
使用了3各接口对应不同的传输方式,每种使用了6各端点。接口0:0没有端点。
用的Xilinx(现在属于AMD) 的Spartan-3A XC3S200A, 拥有200K 门逻辑
用的Altera (现在属于Intel)的EPM3032A, 600 门逻辑, 32 宏单元.
其中J3是EPM3032A的JTAG调试口,定义如下
1 | 2 | 3 | 4 | 5 | 6 |
TMS | TDI | TCK | TDO | GND | 3.3V |
EPM3032A的引脚使用如下
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
JTAG TDI | I/O (FX2 PA7) | I/O (FX2 PA6) | GND | I/O (FX2 PA5) | I/O (FX2 PA4) | JTAG TMS | I/O (FX2 PA3) | VCC | I/O (FX2 PA2) | GND |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
I/O (FX2 PA1) | I/O (FX2 PA0) | I/O (FPGA PROG_B) | I/O (FPGA 94, IO_L05N_0) | GND | VCC | I/O (FPGA 85, IO_L03P_0) | I/O (FX2 CTL2) | I/O (FX2 CTL1) | I/O (FX2 CTL0) | I/O (FPGA 51, DIN/MISO) |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
I/O (NC?) | GND | I/O (FPGA 97, IP0) | JTAG TCK | I/O (FPGA 53, CCLK) | I/O (NC?) | VCC | GND | I/O (FPGA 3, IO_L01P_3) | JTAG TDO | I/O (NC?) |
34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
I/O (NC?) | I/O (NC?) | GND | I/O (NC?) | I/O (NC?) | I/O (NC?) | I/O (NC?) | VCC | I/O (NC?) | I/O (NC?) | I/O (NC?) |
用的Cypress (现在属于英飞凌)的CY7C68013A-56PVXC (FX2LP) ,该芯片有个很牛逼的功能,就是直接将引脚的信号通过USB包发送出去,完全不需要额外的控制器参与,这也是很多低成本的逻辑分析仪的方案,无需其他的FPGA,CPLD和MCU,就一片该芯片即可。
用的Atmel(现在属于Microchip)的24LC02BI,支持400K的速度,工业级,2Kbit的容量。
EEPROM接到CY7C68013A用于配置USB通讯。
地址为A0-A2都是0所以IIC地址为0x50
W2的跳线帽用于配置WP写保护。
用的AMS的 AMS1117-3.3,这是最常用的3.3V电源芯片了。
用的AMS的 AMS1117-1.2
at88sc0104没有焊接
使用的24MHz无源晶体
使用了CPLD和FPGA做IO处理。
Saleae的逻辑分析仪当年确实很火,主要是性价比高,上位机做的很好,出了很多山寨的板子。尤其这个100M的型号,当时是热门型号,通过拆解可以看到使用了CPLD+FPGA+USB接口IC的方案,硬件设计没有什么特殊的,核心技术在嵌入式软件和上位机,这也是国产仪器的一个弱点,不过现在国产的也有很多性价比比较高的逻分,示波器等仪器,这方面也做的越来越好了。