STM32G0 + X-NUCLEO-SRC1M1 Not Detecting Sink Negotiation Message
Hi,
I'm a researcher at MIT and I'm pretty new to the ST world, I'm working on a USB power delivery application for a robotics project where I would like to use an STM32 MCU + an X-NUCLEO-SRC1M1 to deliver 20V over USB-C (as well as data over D+ and D-) to a Sparkfun STUSB4500 USB-C Power Delivery Board (https://learn.sparkfun.com/tutorials/power-delivery-board---usb-c-qwiic-hookup-guide).
Issue:
After plugging in my STUSB4500 sink board, there is no negotiation completed. The source is able to send out it's power delivery capabilities, but no messages are received from the sink in the traces of STM32CubeMonitor.
OUT 471419 0 SOP PD3 s:010 H:0x27A1 (id:3, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 0A9001002C410600
Option:
[1] Fixed : 5V - 0.1A
[2] Fixed : 20V - 3A
11880
OUT 471421 0 SOP PD3 s:010 H:0x27A1 (id:3, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 0A9001002C410600
Option:
[1] Fixed : 5V - 0.1A
[2] Fixed : 20V - 3A
11881
PE 471423 0 PE_SRC_DISCOVERY 11882
PE 471573 0 PE_SRC_SEND_CAPABILITIES 11883
OUT 471575 0 SOP PD3 s:010 H:0x29A1 (id:4, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 0A9001002C410600
Option:
[1] Fixed : 5V - 0.1A
[2] Fixed : 20V - 3A
11884
OUT 471576 0 SOP PD3 s:010 H:0x29A1 (id:4, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 0A9001002C410600
Option:
[1] Fixed : 5V - 0.1A
[2] Fixed : 20V - 3A
11885
OUT 471578 0 SOP PD3 s:010 H:0x29A1 (id:4, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 0A9001002C410600
Option:
[1] Fixed : 5V - 0.1A
[2] Fixed : 20V - 3A
11886
PE 471580 0 PE_SRC_DISCOVERY 11887
PE 471730 0 PE_SRC_SEND_CAPABILITIES 11888
OUT 471732 0 SOP PD3 s:010 H:0x2BA1 (id:5, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 0A9001002C410600
Option:
[1] Fixed : 5V - 0.1A
[2] Fixed : 20V - 3A
11889
OUT 471733 0 SOP PD3 s:010 H:0x2BA1 (id:5, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 0A9001002C410600
Option:
[1] Fixed : 5V - 0.1A
[2] Fixed : 20V - 3A
11890
OUT 471735 0 SOP PD3 s:010 H:0x2BA1 (id:5, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 0A9001002C410600
Option:
[1] Fixed : 5V - 0.1A
[2] Fixed : 20V - 3A
11891
PE 471737 0 PE_SRC_DISCOVERY 11892
PE 471887 0 PE_SRC_SEND_CAPABILITIES 11893
OUT 471889 0 SOP PD3 s:010 H:0x2DA1 (id:6, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 0A9001002C410600
Option:
[1] Fixed : 5V - 0.1A
[2] Fixed : 20V - 3A
11894 On the oscilloscope, the sink board gets a 20V spike that then decreases since the power delivery negotiation never finishes.

I do not think this is a sink issue as connecting the sink to a USB-C Dewalt charging power brick that delivers 65W can provide a sustained 20V after 5V. The negotiation seems to complete itself.

Hardware Setup:
I've connected a 20V supply to CN3 of the SRC1M1 board and validated 20V is going into the terminal. A USB-C power cable is connecting CN1 to the Sparkfun power delivery sink board. A Micro-USB cable connects the STM32 NUCLEO-G0B1RE MCU to my computer to view debug logs. I connected the oscilloscope probes to the output power terminals of the sink board.


Software Setup:
I've followed the USB PD wiki closely (https://wiki.st.com/stm32mcu/wiki/STM32StepByStep:Getting_started_with_USB-Power_Delivery_Source) and made an STM32 project using the STM Cube IDE (https://github.com/michaellu2019/STM32G0_USBPD_Source) for the Nucleo G0B1RE board. I've downloaded the STM32 Cube Monitor to see debug logs. I have also tested uploading a completed binary (https://github.com/STMicroelectronics/x-cube-tcpp/blob/main/Projects/NUCLEO-G474RE/Applications/USB_PD/SRC1M1_Source/Binary/G4_SRC1M1_Source.bin) to my Nucleo-G474RE to cross check my software, but run into the same issue of no sink communication. The Sparkfun STUSB4500 board has been configured to receive 20V 3000mA, which is one of the listed PD options in the SRC1M1.


Please let me know if there is something I'm missing in my project setup, whether that be following the wiki to set up the G0 or if downloading the G4 binary is not sufficient to set up a project. Happy to set up a call to expedite the discussion.
Thanks,
Michael
