Board Bring Up

A project log for General Purpose Software Defined Transmitter

GPSDTx is a board capable of transmitting a signal up to a few MHz (1-3?) wide anywhere between 100MHz and 2.2GHz

brett-killionBrett Killion 12/07/2016 at 22:570 Comments

After a successful soldering, it was on to bringing the board to life.

The first checks were to be sure there were no shorts between nets (especially power and ground) and to make sure all the pins were soldered well. It was during this check that I realized I had soldered all the LEDs in backwards so I had to undo and redo those be hand... Stupid LEDs.

Also, the footprint on my DC jack was wrong and the DC input was connected directly to ground, so that won't be used on this version.

I had verified that everything seemed to be connected only to what it should so took the leap to power it up. I put my power selector jumper on the USB side and plugged the board into a wall wart. No smoke escaped! I checked the power rails and the USB voltage rail was around 5V and the 3.3V linear regulator was making a nice 3.3V. The microcontroller was checked next and it's internal regulator was making a nice 1.2V, as expected.

About this time, I noticed the quadrature modulator chip (ADRF6755) was getting very hot to the touch. I unplugged the power and searched for shorts but couldn't find any. Fortunately, it takes 5V and has it's own internal regulator, and my power plane in the internal layer is 3.3V so I had to run a 5V power trace over to the 6755. I simply cut the trace so I could work on other parts without burning up that one; I'll worry about that later.

Now, I plugged the board into the computer to try and get some code up and running on the microcontroller. I had found some minimal startup code over at this site so I made minor adjustments to make it fit my F405, compiled with GCC, and converted it to DFU file format with ST's Dfu File Manager. I opened up ST's DfuSeDemo, started the board in DFU mode (by holding the BOOT0 button and then pressing the Reset button). It was a great feeling when the board enumerated in the program -- the microcontroller is working!

Unfortunately, that's where I hit the wall and made no progress for quite a while. Nothing was working and I had no idea whether it was bad code or the bootloader process not working correctly so I went into search mode.

As it turns out, the USB bootloader can't run off of the internal oscillator built into the F405, it requires an external clock source between 4 and 26MHz. Bummer. I had planned on the Si5351 giving a 25MHz clock to the uC but I need the uC to be programmed to program the Si5351 to give it a clock... I was basically hosed. So I cut the trace and soldered the red jumper directly from the 25MHz TCXO to the clock in trace and now I had my external clock source for the USB bootloader.

Still nothing worked. I switched gears and instead of using minimal startup code, I went to the STM32 Cube software which generates all the startup code you need and even gives you project files to open the code in various IDEs. I chose TrueStudio (because it has a free trial version) and opened up the code, wrote some more code to make my LEDs blink, and compiled.

About this time, I also noticed that when the board comes up in DFU mode, there are Vendor ID, Product ID, and Version fields that get populated. These fields are also in the DFU file manager program so I made them match, converted my code, and uploaded.

Not holding my breath, I pushed Reset and what do I see? Success!

There's still much more to do but this is a major milestone!