I spent 2300 silver dollars on a HD-USB12 protocol analyzer (painful…). But it is quite useful, and it will be much easier to do USB firmware development in the future.
Without further ado, let's first illustrate the USB enumeration process.
1. Reset the bus and send a GET_DESCRIPTOR command packet to the default address 0 to request a device description.
1) Index [4 - 5]: indicates that the USB is plugged in and the bus is reset
2) Index [7 - 8]: indicates that the host sends a GET_DESCRIPTOR instruction packet to the default address, and the detailed information is also captured, as shown in (Figure 2):
3) Index[15 - 17]: indicates that the device sends the device description data to the host. Index[16]
4) Index[18 - 19]: indicates that after the host completes the GET_DESCRIPTOR command, it sends an empty response to the device.
2. Reset the bus again and send the SET_ADDRESS instruction packet to the device to set the device address.
1) Index [22 - 23]: Indicates that the bus is reset again. This reset is completed automatically, not manually plugging and unplugging the USB
. 2) Index [25 - 27]: Indicates that the host sends a SET_ADDRESS instruction packet to the default address.
3) Index[29 - 31]: indicates that after the device completes the SET_ADDRESS command, it sends an empty response to the host;
3. Send a GET_DESCRIPTOR command packet to the device address set in the second step to request the device description.
1) Index[33 - 35]: indicates that the host sends a GET_DESCRIPTOR instruction packet to address 01.
2) Index[41 - 43]: indicates that the device sends device description data to the host. Index[42]
3) Index[45 - 47]: indicates that the device sends device description data to the host. Index[46]
4) Index[48 - 50]: indicates that after the host completes the GET_DESCRIPTOR command, it sends an empty response to the device.
4. Send a GET_DESCRIPTOR command packet to the device address set in step 2 to request a configuration description.
1) Index[52 - 54]: indicates that the host sends a GET_DESCRIPTOR instruction packet to address 01
2) Index[57 - 59]: indicates that the device sends configuration description data to the host Index[58]
3) Index[60 - 62]: indicates that after the host completes the GET_DESCRIPTOR command, it sends an empty response to the device;
5. Repeat sending the GET_DESCRIPTOR command packet to the device address set in step 2 to obtain all device descriptions and configuration descriptions;
6. Send the SET_CONFIGURATION instruction packet to the device address set in the second step to set the configuration description.
1) Index[139 - 141]: indicates that the host sends a SET_CONFIGURATION instruction packet to address 01.
2) Index[143 - 145]: Indicates that after the device completes the SET_CONFIGURATION command, it sends an empty response to the host.
At this point, the enumeration process is complete and the device can communicate with the host through the driver.
The above USB enumeration process is captured based on the existing specific device, and does not completely involve all the instruction packets of the USB protocol, such as the GET_STATUS instruction packet, CLEAR_FEATURE instruction packet, SET_FEATURE instruction packet, SET_DESCRIPTOR instruction packet, GET_CONFIGURATION instruction packet, GET_INTERFACE instruction packet, SET_INTERFACE instruction packet, SYNCH_FRAME instruction packet, etc.
(2) There is another good summary, which I will post here: http://blog.csdn.net/am_111/article/details/6061790
Previous article:Network Analyzer
Next article:Calibration of Network Analyzers
- Popular Resources
- Popular amplifiers
- Seizing the Opportunities in the Chinese Application Market: NI's Challenges and Answers
- Tektronix Launches Breakthrough Power Measurement Tools to Accelerate Innovation as Global Electrification Accelerates
- Not all oscilloscopes are created equal: Why ADCs and low noise floor matter
- Enable TekHSI high-speed interface function to accelerate the remote transmission of waveform data
- How to measure the quality of soft start thyristor
- How to use a multimeter to judge whether a soft starter is good or bad
- What are the advantages and disadvantages of non-contact temperature sensors?
- In what situations are non-contact temperature sensors widely used?
- How non-contact temperature sensors measure internal temperature
- LED chemical incompatibility test to see which chemicals LEDs can be used with
- Application of ARM9 hardware coprocessor on WinCE embedded motherboard
- What are the key points for selecting rotor flowmeter?
- LM317 high power charger circuit
- A brief analysis of Embest's application and development of embedded medical devices
- Single-phase RC protection circuit
- stm32 PVD programmable voltage monitor
- Introduction and measurement of edge trigger and level trigger of 51 single chip microcomputer
- Improved design of Linux system software shell protection technology
- What to do if the ABB robot protection device stops
- CGD and Qorvo to jointly revolutionize motor control solutions
- CGD and Qorvo to jointly revolutionize motor control solutions
- Keysight Technologies FieldFox handheld analyzer with VDI spread spectrum module to achieve millimeter wave analysis function
- Infineon's PASCO2V15 XENSIV PAS CO2 5V Sensor Now Available at Mouser for Accurate CO2 Level Measurement
- Advanced gameplay, Harting takes your PCB board connection to a new level!
- Advanced gameplay, Harting takes your PCB board connection to a new level!
- A new chapter in Great Wall Motors R&D: solid-state battery technology leads the future
- Naxin Micro provides full-scenario GaN driver IC solutions
- Interpreting Huawei’s new solid-state battery patent, will it challenge CATL in 2030?
- Are pure electric/plug-in hybrid vehicles going crazy? A Chinese company has launched the world's first -40℃ dischargeable hybrid battery that is not afraid of cold
- [Chuanglong TL570x-EVM] Solve the problem of domain name ping failure
- Virtual static random access memory in mobile and portable applications
- Fatal Error[Pe1696]: cannot open source file "stm8s.h"
- 【NXP Rapid IoT Review】+8. Brief summary
- Does anyone have the engineering source code that can run on Chuanglong 6678 nor-writer?
- Why do we write =0 when assigning a variable a value of 0, but write =0xffffffffu when assigning it a value of 0xffffffff?
- Learning PCB
- About the role of capacitance and inductance in LoRa radio frequency circuit
- Two-color 2835 painting 10 series 14 parallel
- ESP32-S2-Kaluga-1 Kit v1.3