Designing a new PCB for the ODROID-GO

pmprog
Posts: 36
Joined: Thu Oct 18, 2018 4:01 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by pmprog » Tue Apr 02, 2019 6:14 pm

Very impressive, well done

mat203
Posts: 20
Joined: Sat Feb 23, 2019 7:32 am
languages_spoken: english
ODROIDs: GO
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by mat203 » Wed Apr 03, 2019 1:29 am

Could be something to do with leakage on the diode to the DTR line holding it high enough to not reset?
The internal pullup on NRST of the STM32 is in the range of 30..50KOhm, which results in a current of 66..110uA when the debugger activates its open-drain/collector output. The reverse current of the diode is only 7uA at 10V and therefore can be neglected.

I would suggest the following:
- Disconnect both debugger and USB cable from the FTDI.
- Check the direction of D2 and D3 and ensure there is no short from NRST to GND or 3V3, by measuring the resistance with a multimeter.
- Measure the voltage on DTR, it should be 3.3V. If not configure the idle state of this pin with FT_PROG.
- Measure the voltage on RTS, it should be 0V. If not configure the idle state of this pin with FT_PROG.
- Now measure the voltage on NRST, it should be 3.3V.
- Download a simple program which e.g. blinks the LED.
- Take a cable or a low ohmic resistor and connect NRST to GND on the pinheader. The LED should now stop blinking and the voltage level ~0V until you release NRST again.

flatmush
Posts: 22
Joined: Fri Feb 22, 2019 4:37 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by flatmush » Wed Apr 03, 2019 3:55 am

I narrowed it down to the diode on the FTDI chip.
When I ground NRST it doesn't reset, but when I ground the diode (D2) on the NRST line, I get a reset.
Checking with the multimeter in diode mode and visually, the diodes are the same way around as the schematic.
The voltage on DTR is 3.3v as is the voltage on NRST side of the diode (well both sides).
Have I got the diodes backwards in the schematic?

mat203
Posts: 20
Joined: Sat Feb 23, 2019 7:32 am
languages_spoken: english
ODROIDs: GO
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by mat203 » Wed Apr 03, 2019 6:59 am

When I ground NRST it doesn't reset
I assume you mean the signal on the pinheader ?
Have I got the diodes backwards in the schematic?
You want the DTR signal to only be able to pull NRST low, therefore the direction is ok. Have you checked the value of resistor R24 ? It forms a voltage divider with the STM32 internal pullup on NRST. The desired value of 22R shouldn't matter at all, but if the value is too high you might not be able to go below the low threshold of the reset pin.

What is the voltage of RTS by the way ? I think you have to reprogram the idle state in the FTDI chip to prevent entering the bootloader per default. You would also need the programming tool to configure CBUS4 for VBus Sensing.

flatmush
Posts: 22
Joined: Fri Feb 22, 2019 4:37 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by flatmush » Fri Apr 05, 2019 2:20 am

Ok, good news! It was all down to a bad solder joint on R24, reset was working fine!

I really shouldn't have used lead-free solder; words cannot describe how horrible it is. Fixed it up with some leaded solder and it all worked fine.

As expected, the RTS line is 3.3V initially on the RTS chip so after RST it tries to boot the bootloader instead of the code, but after a power-cycle it boots the code that was flashed.
I have a basic program that sets the RGB LED to RED for a few seconds and then switches to green. Will have to write some more complex tests than that, but works well enough to prove the reset issue.

I've also made a lot of changes to the schematic to make it more solderable, mostly I've made all of the pads rounded rectangles and made the wires going into the pads a bit thinner so that the solder doesn't bridge where there are square corners.
Should also mean that there's less paste deposited on the board and less stencil errors as the paste won't stick as much.

I do have an issue with the LCD connector, the lead-free solder paste under some (non-power) pins is unmelted and even with my PCB pre-heater and hot air gun, I can't melt that solder without melting the connector.
Next spin I'm going to use the hob method with leaded solder, it should easily be possible to get the board to reflow correctly without burning.

mat203
Posts: 20
Joined: Sat Feb 23, 2019 7:32 am
languages_spoken: english
ODROIDs: GO
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by mat203 » Fri Apr 05, 2019 5:38 am

As expected, the RTS line is 3.3V initially on the RTS chip so after RST it tries to boot the bootloader instead of the code
As already mentioned you can fix this by programming the idle state into the internal EEPROM of the FTDI chip, using the FT_PROG utility.
I do have an issue with the LCD connector, the lead-free solder paste under some (non-power) pins is unmelted and even with my PCB pre-heater and hot air gun, I can't melt that solder without melting the connector.
Sounds like a frustrating issue, I also prefer leaded solder for manual soldering as it melts at lower temperature.

Paspartout
Posts: 9
Joined: Fri Dec 28, 2018 2:13 am
languages_spoken: english
ODROIDs: Odroid go
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by Paspartout » Tue Apr 09, 2019 3:38 am

Very nice project. It makes me wanna learn KiCad and doing some PCB Design myself(e.g. a hat for the odroid-go). Great Work!

Also the STM32H7 chip looks interesting. Especially the hardware blitting would be helpful to boost game performance. In my try to port cave story(nxengine) to the go I found that the blitting and blending was most demanding for the esp32.

I will consider ordering one of your pcbs myself. 70 pounds doesn't sound too bad but I don't have much experience soldering these SMD Parts myself.

pmprog
Posts: 36
Joined: Thu Oct 18, 2018 4:01 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by pmprog » Sat Apr 13, 2019 10:02 pm

@flatmush. How are the boards coming? Interested to know if you've got it booting yet

flatmush
Posts: 22
Joined: Fri Feb 22, 2019 4:37 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by flatmush » Sun Apr 14, 2019 7:04 am

Ok, so the current process is that I'm testing various things with the board so that the next spin of the board has none of the niggles I had with this one.

These pictures are WIP, and I expect 1.3 will still change a bit before I order the next run of boards. I'll be ordering matte black with ENIG (gold) plating next run.
Angled_1-3.png
Angled_1-3.png (323.54 KiB) Viewed 156 times
Back_1-3.png
Back_1-3.png (230.9 KiB) Viewed 156 times
Front_1-3.png
Front_1-3.png (146.7 KiB) Viewed 156 times
The main changes so far are:
  • Fixed a footprint bug where the charge status light doesn't work.
  • Fixed the incorrect mounting hole location.
  • Widened the LCD slot so that there's less stress on the ribbon cable, current boards just about fit but it may damage the LCD.
  • Switched to partially through-hole micro-USB connector like ODroid GO uses currently because it's more robust.
  • Moved a couple of capacitors which were too close to connector footprints.
  • Improved solderability by using rounded corners on ALL pads and using thinner traces to connect to the pads.
  • Removed all shorts between pins where the pitch is too small to have soldermask.
  • Used exposed copper/gold for logos.
  • Improved silk-screen so there are less glitches.
@pmprog: I've got it booting, but it doesn't do much exciting yet.
I've uploaded a video so you can see, it's not very exciting but it does work: https://www.youtube.com/watch?v=Ynfe8RZ8M0c

So far I've tested a few things:
  • SWD debug interface, this works fully: The reset "bug" was a soldering fault on my part.
  • RGB Status LED
  • NRST & BOOT0 Pins
  • FTDI USB chip and firmware
  • Battery charging and power
  • Power system (i.e. powers on and off correctly)
  • RTC Power
I need to do at least basic tests (write a small program) of the following before I order the next board:
  • UART
  • 25MHz Oscillator
  • 32.768KhZ Oscillator
  • Audio Output
  • SDRAM
  • Battery Voltage
  • Buttons
The current board's LCD connector isn't well soldered and I don't expect any electrical issues with it, so I'm going to test that on the next revision of the board. I'll be using leaded solder and cooking it on the hob again so there will likely be far fewer soldering issues. I've also made some changes to the board (listed above) which should make things way easier.

Currently I'm testing programming over USB. I've reconfigured the FT231X chip to properly handle the low-power mode, I've also changed the defualt logic level of the BOOT0 pin and increased the USB power request to 500mA so that the battery should be able to charge.
I'm struggling to get stm32flash to enter bootloader mode with the UART. I've checked all the solder joints and the traces are connected fully. I'm hoping it's just an issue with some of the hardware flow control inputs, but I'll need to play with it more.

At some point I'll try to upload the current test code, it's a bit messy right now though as you can imagine.

@Paspartout: As you can probably tell from this post; I'm still a way off being able to send out boards. They take me about an hour to make and £70 is making them at cost, but if you're interested in programming for it then I'll be happy to make you a board when I'm comfortable that everything works.

flatmush
Posts: 22
Joined: Fri Feb 22, 2019 4:37 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by flatmush » Sun Apr 14, 2019 8:25 am

Quick update: I found out the issue with USB flashing.
Turns out that the STM32H7 requires a higher baud-rate than the default: 115200 works, while the default 57600 does not.
Likely I'll have to write a patch for stm32flash to make it work as it can't identify the device, but that should be about it, looks like no hardware fault.

I've had to patch the FTDI flasher to flash the USB chip too, so I'll have to post my patches to that too.

pmprog
Posts: 36
Joined: Thu Oct 18, 2018 4:01 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 0
Been thanked: 0
Contact:

Re: Designing a new PCB for the ODROID-GO

Unread post by pmprog » Sun Apr 14, 2019 4:34 pm

I'm certainly interested in developing for it, so I'll buy a board off you when your happy it's all working.

I'm currently working on a framework for cross platform development, supporting "desktops" (odroid boards that run Linux will work too) and the original go board, so extending to support your new board makes sense.

It's a bit of a shame that the go's case is very thin. If they'd made the back half a little deeper, would have made all sorts of hackery possible

Post Reply

Return to “General Topics”

Who is online

Users browsing this forum: No registered users and 1 guest