Stack Overflow isn't letting me have all the links I need here, so I put them all in this google doc. Sorry about that!

This is my first solo embedded development project, and I can't seem to figure out how to program my chip!

My setup: I'm using a CH552G chip mounted on a breakout board, purchased here (1), on a breadboard with what I understand to be the necessary peripherals.

Show schematic here

enter image description here enter image description here

I'm trying to follow what this YouTuber(2) did, and I'm using part of his schematic.

Schematic from Youtuber

I tried to program it first on Windows using these instructions (3), but WCHISPTOOL never recognizes the device, so I can't program it.

I tried again on Linux using these instructions (4) and programming via make flash in these examples, but the chip isn't recognized there either!

enter image description here

/Desktop/ch552tool/ch554_sdcc/examples/blink$ make flash
sdcc -c -V -mmcs51 --model-small --xram-size 0x0400 --xram-loc 0x0000 --code-size 0x3800 -I/home/zico/Desktop/ch552tool/ch554_sdcc/examples/../include -DFREQ_SYS=24000000  ../../include/debug.c
+ /usr/bin/sdcpp -nostdinc -Wall -std=c11 -I/home/zico/Desktop/ch552tool/ch554_sdcc/examples/../include -DFREQ_SYS=24000000 -obj-ext=.rel -D__SDCC_CHAR_UNSIGNED -D__SDCC_MODEL_SMALL -D__SDCC_FLOAT_REENT -D__SDCC=4_0_0 -D__SDCC_VERSION_MAJOR=4 -D__SDCC_VERSION_MINOR=0 -D__SDCC_VERSION_PATCH=0 -DSDCC=400 -D__SDCC_REVISION=11528 -D__SDCC_mcs51 -D__STDC_NO_COMPLEX__=1 -D__STDC_NO_THREADS__=1 -D__STDC_NO_ATOMICS__=1 -D__STDC_NO_VLA__=1 -D__STDC_ISO_10646__=201409L -D__STDC_UTF_16__=1 -D__STDC_UTF_32__=1 -isystem /usr/bin/../share/sdcc/include/mcs51 -isystem /usr/share/sdcc/include/mcs51 -isystem /usr/bin/../share/sdcc/include -isystem /usr/share/sdcc/include  ../../include/debug.c 
+ /usr/bin/sdas8051 -plosgffw debug.rel debug.asm
sdcc main.rel debug.rel -V -mmcs51 --model-small --xram-size 0x0400 --xram-loc 0x0000 --code-size 0x3800 -I/home/zico/Desktop/ch552tool/ch554_sdcc/examples/../include -DFREQ_SYS=24000000  -o blink.ihx
+ /usr/bin/sdld -nf blink.lk
objcopy -I ihex -O binary blink.ihx blink.bin
wchisptool -g -f blink.bin

Can't find any suitable USB device!

Also, the datasheet (5) was not helpful to me, even after translating it to English.

What I've tested so far:

  • The USB wire I'm using does have data lines. Otherwise, Windows wouldn't tell me the device wasn't recognized.
  • The USB wire is providing 5v. (Multimeter)
  • The device is at least partially working, as the 3.3v output is in fact 3.3v.

At this point, I don't know how to figure out what is going wrong. Any help is appreciated!

Edit 1: Added the text of the error from running make flash. Edit 2: Added image of power and ground connections to USB.

  • \$\begingroup\$ please do not post a picture of text ... post the actual text \$\endgroup\$
    – jsotola
    Commented Apr 18, 2021 at 22:56
  • \$\begingroup\$ @jsotola I added the text. To my eye, that text isn't helpful except to say that it failed. The rest is just standard make output. \$\endgroup\$
    – Zico
    Commented Apr 18, 2021 at 23:01
  • 1
    \$\begingroup\$ The advantage of including the actual text, instead of a screenshot, is that search engines can search your actual text. That could be helpful for the next reader who has a similar problem. \$\endgroup\$ Commented Apr 18, 2021 at 23:40
  • \$\begingroup\$ Looks like your usb ground is not connected to anything \$\endgroup\$
    – Mike
    Commented Apr 18, 2021 at 23:40
  • \$\begingroup\$ @Mike It's connected under the port. Sorry, I realize that was unclear. I added an image showing it. \$\endgroup\$
    – Zico
    Commented Apr 18, 2021 at 23:47

1 Answer 1


Welp, I found the problem. I soldered a new chip to a new breakout board, and everything worked... classic. Anyways, thanks to everyone who tried to help. I'll close this question down.

  • \$\begingroup\$ Zico - Hi, Thanks for coming back with the answer to your question. In order to mark the topic as solved, please "accept" your answer (click the "tick mark" next to your answer, to turn it green). Then it is shown as having an accepted answer in various lists, and we don't get nagged for it being a question with an unaccepted answer. BUT on Stack Exchange sites you must wait 48 hours after you asked the question before you can accept your own answer. So please come back in a couple of days to accept it. Thanks! \$\endgroup\$
    – SamGibson
    Commented Apr 19, 2021 at 3:15
  • \$\begingroup\$ In case of breadboard prototypes, the problem is in approximately 100% of the cases some breadboard connection. In which case the solution is to solder the parts to some experiment board instead. \$\endgroup\$
    – Lundin
    Commented Apr 19, 2021 at 15:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.