Close

Physical Board In Hand.... Design Flaws

A project log for Wing's STM32 Dev Board

A small project to build a STM32 development board using KiCad

wingtechcornerWingTechCorner 03/02/2021 at 18:380 Comments

Feb 14th, 2021



So received the V1 STM32 board from JLCPCB. And gotta say... it looks amazing.

JLCPB does great work and I love their customer service reps, all of whom have been quick to answer questions and address any of my concerns. +100 for these folks.

Now, this is the first board I made and ordered where the USB connectors were installed by JLCPCB's new though hole part service! Woot!

And I have to say, I really like the build quality. I did end up touching up the USB ports with some additional solder, but that's just me being paranoid. 


Design Flaw

However, shortly after powering on the board, I realized I had made some kind of mistake in my design. The USB port heated up as did the VREG and the surrounding PCB. What!?

Like any good maker, I started double checking everything and even checked to see if JLCPCB might have gotten something swapped up. But nope. After about half an hour of peering at the design file and doing ohm meter readings, I found that while doing copper pour/fills, I had assumed that one fill would respect the other. That was not the cast and I ended up shorting 3V3 and GND. Doh!!

Using the first board as the sacrificial board, I started to scrap away at connection points that I believed were the primary regions of the shorts. It took about 3-4 tries involving scraping, ohm meter testing, and looking at the PCB routing. In all, I think I spent an hour on this before I was able to get the short to not be a short. At least, enough to get the board to power on without over heating and shutting down the USB port.

Once that was done, I had to figure out the DTR and DTS arrangement that my particular setup resulted in, since it didn't work with the OpenOCD and other default board settings.

In the end, I just added a custom line entry into the Platformio.ini configuration file for the upload. The call goes out to stm32flash and makes use of the DTR/DTS signalling to get the chip into programming mode. For the curious, this is what I went with:

upload_command = stm32flash -w $SOURCE -R -i '-dtr,rts,-rts:dtr,rts,-rts' $UPLOAD_PORT

So with this, when I do a '--target=upload' it will upload the compiled BIN file up to the board. I was able to upload and download the firmware just fine. So yay!

However, I couldn't get anything to work. I2C was either broken or something. The Serial.printf(s) were also not returning anything. Tried various serial speeds and no dice.

The head bumping part of the figuring out what is broken started..... 

Discussions