Skip to main content
added 342 characters in body
Source Link
Ale..chenski
  • 42.4k
  • 3
  • 44
  • 113

Any hints what did I do wrong or how to debug the issue?

First of all, you need to check voltages on D+ and D- lines after the board gets power, and make sure that D+ is D+, and D- is D- for PC host side.

In initial state, the D- must stay low, and D+ should go high (3-3.3V). This is the basic signaling to the host to start USB communication in FS mode.

If the D+ is high, USB host will detect the connect event and will make an attempt to enumerate the device. If the device is not responding, the system will say something like "fail to get device descriptor" or "transaction error".

Usually (by USB specifications), a device will not start connection if the device logic does not sense incoming VBUS. Usually the devices do have a special logic input to sense the VBUS. If D+ does not go high, it means that the device logic didn't sense this signal, either you forgot to connect VBUS to GPIO1 (USB VBUS DET), or forgot to configure this signal in FW.

If there is USB activity but you still have "device descriptor error", you will need a USB analyzer. For FS mode it should be easy to find.

ADDITION: The Rpi Pico board does have a VBUS voltage divider (level translation) connected to GPIO24. Apparently this pin is configured in software as VBUS_DETECT, which enables the USB functionality. In your schematics the GPIO24 is not connected to anything like VBUS. It is likely why the code works on RPi PICO but not on your board.

Any hints what did I do wrong or how to debug the issue?

First of all, you need to check voltages on D+ and D- lines after the board gets power, and make sure that D+ is D+, and D- is D- for PC host side.

In initial state, the D- must stay low, and D+ should go high (3-3.3V). This is the basic signaling to the host to start USB communication in FS mode.

If the D+ is high, USB host will detect the connect event and will make an attempt to enumerate the device. If the device is not responding, the system will say something like "fail to get device descriptor" or "transaction error".

Usually (by USB specifications), a device will not start connection if the device logic does not sense incoming VBUS. Usually the devices do have a special logic input to sense the VBUS. If D+ does not go high, it means that the device logic didn't sense this signal, either you forgot to connect VBUS to GPIO1 (USB VBUS DET), or forgot to configure this signal in FW.

If there is USB activity but you still have "device descriptor error", you will need a USB analyzer. For FS mode it should be easy to find.

Any hints what did I do wrong or how to debug the issue?

First of all, you need to check voltages on D+ and D- lines after the board gets power, and make sure that D+ is D+, and D- is D- for PC host side.

In initial state, the D- must stay low, and D+ should go high (3-3.3V). This is the basic signaling to the host to start USB communication in FS mode.

If the D+ is high, USB host will detect the connect event and will make an attempt to enumerate the device. If the device is not responding, the system will say something like "fail to get device descriptor" or "transaction error".

Usually (by USB specifications), a device will not start connection if the device logic does not sense incoming VBUS. Usually the devices do have a special logic input to sense the VBUS. If D+ does not go high, it means that the device logic didn't sense this signal, either you forgot to connect VBUS to GPIO1 (USB VBUS DET), or forgot to configure this signal in FW.

If there is USB activity but you still have "device descriptor error", you will need a USB analyzer. For FS mode it should be easy to find.

ADDITION: The Rpi Pico board does have a VBUS voltage divider (level translation) connected to GPIO24. Apparently this pin is configured in software as VBUS_DETECT, which enables the USB functionality. In your schematics the GPIO24 is not connected to anything like VBUS. It is likely why the code works on RPi PICO but not on your board.

Source Link
Ale..chenski
  • 42.4k
  • 3
  • 44
  • 113

Any hints what did I do wrong or how to debug the issue?

First of all, you need to check voltages on D+ and D- lines after the board gets power, and make sure that D+ is D+, and D- is D- for PC host side.

In initial state, the D- must stay low, and D+ should go high (3-3.3V). This is the basic signaling to the host to start USB communication in FS mode.

If the D+ is high, USB host will detect the connect event and will make an attempt to enumerate the device. If the device is not responding, the system will say something like "fail to get device descriptor" or "transaction error".

Usually (by USB specifications), a device will not start connection if the device logic does not sense incoming VBUS. Usually the devices do have a special logic input to sense the VBUS. If D+ does not go high, it means that the device logic didn't sense this signal, either you forgot to connect VBUS to GPIO1 (USB VBUS DET), or forgot to configure this signal in FW.

If there is USB activity but you still have "device descriptor error", you will need a USB analyzer. For FS mode it should be easy to find.