AM6442: AM6442: When performing DFU function via USB2.0, USB handshake failed.

Part Number: AM6442
Other Parts Discussed in Thread: UNIFLASH, LP-AM243

Tool/software:

Problem description:

After the AM6442 chip on the self-designed PCB enters DFU boot mode, when using USB 2.0 to program SBL and APP, the host shows: "Unknown USB device (Device descriptor request failed)".

Relevant debugging results:

1.Compared the operation and results of USB DFU on the AM6442-EVM evaluation board. Under the condition of ensuring the operations are correct, the differential signals of the USB D and D- connections were measured separately using an oscilloscope. The summary is as follows:

1)On the self-designed PCB the signal data for RBL drives USB in DFU boot mode is shown in the table below:

Time(us

100000

150

1100

25

50

50

50

50

50

2.5

50

50

50

50

50

Voltage(v

3

0

-0.5

0

-0.8

0.8

-0.8

0.8

-0.8

0.8

0.5

-0.5

0.5

-0.5

0.5

Note:There are a total of 1067 50us levels of data marked in red, alternating between high and low levels, with the last level being a high level.

2)After the SD card boot starts, the USB signal is driven, and the signal content is as follows in 4 parts:

The first part of the signal is as follows.

Timeus

100000

150

1100

25

50

50

50

50

50

2.5

50

50

50

50

50

Voltagev

3

0

-0.5

0

-0.8

0.8

-0.8

0.8

-0.8

0.8

0.5

-0.5

0.5

-0.5

0.5

Note:There are a total of 1067 50us levels of data marked in red, alternating between high and low levels, with the last level being a high level.

The remaining 3 parts of the signal content are as follows:

Time(us

500000

25

50

50

50

50

50

2.5

50

50

50

50

50

Voltagev

0

0

-0.8

0.8

-0.8

0.8

-0.8

0.8

0.5

-0.5

0.5

-0.5

0.5

Time(us

500000

25

50

50

50

50

50

2.5

50

50

50

50

50

Voltagev

0

0

-0.8

0.8

-0.8

0.8

-0.8

0.8

0.5

-0.5

0.5

-0.5

0.5

Time(us

500000

25

50

50

50

50

50

2.5

50

50

50

50

50

always

Voltagev

0

0

-0.8

0.8

-0.8

0.8

-0.8

0.8

0.5

-0.5

0.5

-0.5

0.5

3

Note:The part marked in red after each segment of the signal has 1067 levels of 50 microseconds, these levels alternate between high and low, ending with a high level.And the last signal part is a continuous high level of 3V.

3)There is a significant difference in the signals on the AM6442-EVM evaluation board when successfully running the USB DFU function. Whether during the RBL phase driving the USB device as an AM64x DFU device or after the SBL driving the USB as an AM64x-AM243x DFUS device, the signals captured by the oscilloscope are the same, as shown below:

Time(us

100000

150

1200

25

50

50

50

50

50

2.5

50

50

50

50

Voltagev

3

0

-0.5

0

-0.8

0.8

-0.8

0.8

-0.8

0.8

0.5

-0.5

0.5

-0.5

Note:In the red-highlighted part of the data, there are a total of 222 50us levels, alternating high and low levels, with the last level being low.


2.After the RBL is initiated, the host burns the "sbl_dfu_uniflash.Debug.hs_fs.tiimage" image into the AM64x DFU device to change the clock frequency-related parameters uint32_t clkSrcSel and uint32_t pllRefSel in the USB driver source code static usb_init_param_t gUsbInitParam. However, whether on the AM6442-EVM evaluation board or on a custom-designed PCB, the actual clock frequency cannot be changed. The value of the CFG0_USB0_PHY_CTRL register has consistently been observed as 0x80000004 (the recommended(maybe default) value in the TRM manual) on both boards through JTAG.

Additional information:

Chip information on self-designed PCB:SITARA AM6442B SEGHAALV 35PLDLS 709 GL

Chip information on AM6442-EVM:        SITARA AM6442B SEGHAALV 28PL6KS 709 GL

Serial number: 4963;
Host device information: Operating system 64-bit Windows 10 Professional Workstation version laptop
Communication bus: USB2.0;
Physical interface: TinyUSB.

MCU+SDK version:11.00.00.15(mcu_plus_sdk_am64x_11_00_00_15)

Overall diagram of the USB signal on the self-designed PCB board in SD card bootmode:

Detailed diagram of the USB signal on self-designed PCB board in SD card bootmode:

Overall diagram of the USB signal on the self-designed PCB board in DFU bootmode:

Detailed diagram of the USB signal on the self-designed PCB board in DFU bootmode:

Detailed diagram of the USB signal on the AM6442-EVM board in DFU bootmode:

Questions:

1) What does the difference in the USB handshake messages on the two boards mean as described in the problem? What should we do to fix the USB?

2) Does the AM6442 chip itself support USB 2.0 high-speed mode? Does an external PHY chip need to be used to support high-speed mode?

Additional HW information 20250924:

The hardware design diagrams related to USB are shown in the three images below:

1)USB pin connection on SOC side, VBUS connects to board 3.3V, also tried with 5V with resistor divider, same result.

2)USB board connection, component in BLUE frame is unmounted for test. R144 and R145 are 0ohm

3)Type-C connector, USB differential equal length, differential impedance DIFF-90R

In addition to the foundation shown in the above three pictures, there are also the following attempts at changes and debugging:The ID is floated, and the vbus pin is changed to a voltage divider with 20k/10k resistors to 5V.

  • Hello Hebing Li, 

    Thank you for the query.

    Help me understand the EVM or SK that you referenced during the design.

    Can you share the customer board implementation for me to review before i reach out to the software expert.

    Have you had a chance to make some changes and test on the EVM?

    Regards,

    Sreenivasa

  • Thank you very very much for your response.

    I uploaded the relevant USB schematic at the end of the first post titled “Additional HW information 20250924". We also tried floating USB0_ID on the EVM to be same as my custom board, on EVM also work, but my custom board's issue keep same.

    We also attempted to modify the resistor on the USB0_VBUS pin (20k/10k) on my custom board. However, there were not many changes on result.

  • Hello Hebing Li, 

    we also attempted to modify the resistor on the USB0_VBUS pin (20k/10k) on our self-designed board. However, there were not many changes.

    Can you describe the original connection.

    For USB device, USB voltage divider as per the data sheet is recommended.

    Can you please DNI the CMC and use the 0R to bypass.

    Is there a capacitor for the USB_5V after the diode 5V 

    Can you please DNI the protection diodes on the USB signals to do a quick check.

    Regards,

    Sreenivasa

  • Hi Sreenivasa,

    I updated the circuit with comments. 

    Can you describe the original connection.

    connect to board 3.3V, there are many capacitors on 3.3V on the board.

    For USB device, USB voltage divider as per the data sheet is recommended.

    Tried with 20K/10K divider to USB_VBUS 5V from PC, same result

    Can you please DNI the CMC and use the 0R to bypass.

    unmounted for test already. see updated schematic.

    Is there a capacitor for the USB_5V after the diode 5V

    No capacitor.

    Can you please DNI the protection diodes on the USB signals to do a quick check.

    they are unmounted during test already.

    The waveform during enumeration is longer on custom board than on EVM, is it the reason can't be recognized?

    Below is the waveform from EVM. pulse width are all 50us on either custom board and EVM board.

  • Hello Tony,

    Thank you.

    The partial schematics is a challenge to review or suggest.

    Can you please conform the USB supplies are connected as expected and have the capacitors.

    Can you confirm if the USB connector used is a high-speed connector and the impedance control is considered.

    Cam you confirm if customer is using linux?

    Regards,

    Sreenivasa

  • Attach the simplified connection in pdf. the upper one is designed connection, the bottom one connection just for comparison test, no improvement. 

    (It is two board design, there are board to board connection, so draw a simplified connection.)

    Type-c to AM6x USB connection.pdf

    Can you please conform the USB supplies are connected as expected and have the capacitors.

    Detail in the .pdf

    Can you confirm if the USB connector used is a high-speed connector and the impedance control is considered.

    It is Type-c connector, the USB cable to connect to PC is verified with other type-c device. 

    But there are board to board connection on the AM64x board also.  Anything detail needed, let us know.

    Cam you confirm if customer is using linux?

    This project uses RTOS. 

  • Hello Tony,

    Thank you.

    I am having difficulty understanding. I the diagram there is an USB connector and connections to a connector. Does the data from the connector go to the SOC.

    Are there 3 connectors before the signal reaches the SOC?

    Can you please conform the USB supplies are connected as expected and have the capacitors.

    Detail in the .pdf

    The question was more for the SOC supply rails.

    Let me check with the device expert as well as the software expert and update.

    FYI, with partial information, it is difficult to provide suggestions.

    Regards,

    Sreenivasa

  • Let me check with the device expert as well as the software expert and update.

    I agree, Let USB/device expert analysis the waveform, why there is not SE0 stage after JK on custom board. if still need information, let us know.

    Is it related to the JK signal quality? if so how to prove it? how to trigger test pattern, the board can connect JTAG, also can boot from SD card.

  • Hello Tony,

    Thank you. I will update you when i hear from the experts.

    Regards,

    Sreenivasa

  • Hello Tony,

    Here are some inputs i received from the expert

    Where is the Zener diode we require in the VBUS voltage divider circuit?

     The Zener is required to prevent exposure to an over-voltage condition.  For example, an over-voltage condition can occur by simply disconnecting a USB cable due to a sudden stop in current flow and the energy stored in the cable creates a kick-back voltage spike.

    The only time we allow a voltage divider without the Zener diode is when is constrained to 5V and the VBUS connectivity is contained on the same PCB assembly.

     The suggestion from the expert was to perform USB compliance test using standard USB test suite to access the signal quality - not sure if customer has had a chance to perform any of the USB 

    Luis, please add any additional comments you may have.

    Regards,

    Sreenivasa

  • Where is the Zener diode we require in the VBUS voltage divider circuit?

     The Zener is required to prevent exposure to an over-voltage condition.  For example, an over-voltage condition can occur by simply disconnecting a USB cable due to a sudden stop in current flow and the energy stored in the cable creates a kick-back voltage spike.

    The only time we allow a voltage divider without the Zener diode is when is constrained to 5V and the VBUS connectivity is contained on the same PCB assembly.

    The board did not use the USB_VBUS from PC as power supply, just use 20K/10K resistor divider to get 3.xV for SOC USB_VBUS. and also tried to connect board's 3.3V to SOC USB_VBUS, but result is same.

    Do you still think Zener diode is necessary here?

    The suggestion from the expert was to perform USB compliance test using standard USB test suite to access the signal quality - not sure if customer has had a chance to perform any of the USB 

    How to configure on SOC side to output test pattern?

  • Hello Tony,

    Thank you. 

    The board did not use the USB_VBUS from PC as power supply, just use 20K/10K resistor divider to get 3.xV for SOC USB_VBUS. and also tried to connect board's 3.3V to SOC USB_VBUS, but result is same.

    Do you still think Zener diode is necessary here?

    In the supply used is a switched on-board 5V zener is optional, i assume the connector supply pin has no connection in that case.

    How to configure on SOC side to output test pattern?

    I have added a few links related to USB compliance test that we previously supported.

    Please look for compliance. I will reassign to the expert in case you need additional inputs. Any thoughts on the RTOS customer is using. 

     https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1272574/faq-am6442-am6441-am6422-am6421-am6412-am6411-and-am2434-am2432-am2431-alv-alx-custom-board-hardware-design-usb2-0-interface 

    Regards,

    Sreenivasa

  • Hello Tony,

    I added a link for RTOS in the FAQ, please check if the below helps.

    Inputs related to enabling USB compliance testing using RTOS

    LP-AM243: USB_TESTMODE

    (19) LP-AM243: USB_TESTMODE - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums

    The modifications are as follows.

    1. Call setConfigStateAddressed API upon receipt of Set Configuration. (Not called in the sample because TINYUSB_INTEGRATION is enabled.)

    2. Write STMODE and TMODE_SEL at the same time.

    Regards,

    Sreenivasa