Custom Teensy PCB not responding

Status
Not open for further replies.

wanfs

Member
Hi,

I made a custom PCB design that uses Teensy 3.2's core components. I'm using the mk20dx256vlh7 chip paired with MKL04 pre-programmed chip. I bought the MKL04 chips from PJRC Store and sent it to the PCB factory. Today I received my PCBs and was disappointed to realize all 5 of them do not work. When I try to upload the blink code, the board does not respond. A quick oscilloscope prob on the RESET_B line shows constant 0V all the time; there are no short pulses from the watchdog timer resetting the MK20, even when I press PROG button. Where could be the problem? There is power going to the MK20 & MKL04 chips

Please help!
 
A quick oscilloscope prob on the RESET_B line shows constant 0V all the time;

Reset should never be stuck at zero, unless you're continuously holding the button. Perhaps something's shorted to ground?

Maybe try desoldering/removing things (or cutting traces) until the reset signal isn't stuck low. Just a virgin/blank MK20 chip with power should give Reset pulsing as it keeps watchdog rebooting itself.

If you get stuck, you could try ordering one or both of the reference boards from OSH Park and try using them for comparison.

https://www.oshpark.com/shared_projects/d3J03Zeb
https://www.oshpark.com/shared_projects/h2HB6bQQ
 
I don't think RESET_B is shorted to ground. I ran continuity test with GND and no beeps. I have attached the schematics for Teensy ICs section only and attached the entire PCB layers. Please take a look.

Thanks for the efforts!
 

Attachments

  • Teensy Custom PCB.jpg
    Teensy Custom PCB.jpg
    81.4 KB · Views: 219
  • Teensy PCB routing.pdf
    154.2 KB · Views: 160
I ran continuity test with GND and no beeps.

Using the ohms measurement with beeper mode is generally not a good practice for boards with chips. Ohms measurement forces a current through your circuit. It's not merely passive (high impedance) like voltage measurement. Most multimeters go into their lowest ohms range, which transmits the highest current, when in beeper mode. Good quality multimeters usually won't damage modern chips, but it's still not a good practice, especially on the lower ohms ranges.
 
Using the ohms measurement with beeper mode is generally not a good practice for boards with chips. Ohms measurement forces a current through your circuit. It's not merely passive (high impedance) like voltage measurement. Most multimeters go into their lowest ohms range, which transmits the highest current, when in beeper mode. Good quality multimeters usually won't damage modern chips, but it's still not a good practice, especially on the lower ohms ranges.

Thanks for pointing that out. Anyway, I managed to figure out what the problem is. The PROG switch was mounted incorrectly. It was always holding PROG low.

I managed to upload sketches. However, I noticed something strange. The first time I power the board it works just fine, but when I power it OFF and then power it ON after 2 secs, it does not work. I have to either reset the MK20 or power off and wait for like 10 secs then power up to make it work again. Why is that happening?
 
Why is that happening?

Something else wrong with the board construction? Or design?

Nobody could have reasonably guessed the pushbutton was soldered incorrectly. Your schematic shows it connected correctly. Can you understand how impossible this question is to answer?
 
However, this does bring to mind a case years ago where an Arduino Mega and three Teensy 3.x boards were used in a project. All 4 were stock boards, connected to a large custom PCB. The whole system had a mysterious startup problem, where the Mega would boot up and the 3 Teensy boards often would fail to start.

In the end, it turned out to a problem with a 3-pin switching power supply module. I don't recall the name, but I remember it began with "T", maybe 5 letters? He actually sent it to me for testing. Somewhere there's an ancient thread with oscilloscope screenshots showing that terrible little power supply getting stuck in an infinite restarting loop. It'd draw too much input current for a moment, then shut itself off, and restart over and over again many times per second.

I recall that power supply datasheet had a comment about needing an input capacitor, but only when the input voltage was fairly high, like 20-some volts. In fact, it always needed a capacitor on its input to start up properly. Had that PCB been designed with a 10 uF capacitor near the switcher input, those Teensys would have gotten good 3.3V power every time.

Edit: is was this switching power supply module. Notice Adafruit has a recommendation for a 10uF capacitor on their page, as a result of that unpleasant episode. Here's that old thread with the scope screenshots.
 
Last edited:
However, this does bring to mind a case years ago where an Arduino Mega and three Teensy 3.x boards were used in a project. All 4 were stock boards, connected to a large custom PCB. The whole system had a mysterious startup problem, where the Mega would boot up and the 3 Teensy boards often would fail to start.

In the end, it turned out to a problem with a 3-pin switching power supply module. I don't recall the name, but I remember it began with "T", maybe 5 letters? He actually sent it to me for testing. Somewhere there's an ancient thread with oscilloscope screenshots showing that terrible little power supply getting stuck in an infinite restarting loop. It'd draw too much input current for a moment, then shut itself off, and restart over and over again many times per second.

I recall that power supply datasheet had a comment about needing an input capacitor, but only when the input voltage was fairly high, like 20-some volts. In fact, it always needed a capacitor on its input to start up properly. Had that PCB been designed with a 10 uF capacitor near the switcher input, those Teensys would have gotten good 3.3V power every time.

Edit: is was this switching power supply module. Notice Adafruit has a recommendation for a 10uF capacitor on their page, as a result of that unpleasant episode. Here's that old thread with the scope screenshots.

Hi Paul,

Thank you for your support in this.

I'm using an 3.3V LDO from Texas Instruments TPS73733DCQRG4. I probed the output of the LDO with an oscilloscope and it shows 3.3V while the MK20 chip is not running. I don't think it's the LDO, because when that fluke happens I can momentarily ground the reset pin and the MK20 starts to run. Also, it's worth mentioning that sometime this doesn't happen. I could power off and on within 2 secs and the MK20 would run. It only happens occasionally. Could it be the crystal failing to start up?

Regards,
 
Hi Paul,

I think I found what the problem might be. The 16 MHz crystal have two GND pins, which I haven't connected to anything. Could it be the problem? I am using this part
NX3225SA-16.000000MHZ-B3


Also, I have create ground plane just underneath crystal and removed copper on subsequent planes. The PCB is 6 layers and I have attached the layout for the 6 layers. Could you please take a look and see if you have suggestions for me?

Your help is appreciated!
 

Attachments

  • layer6.jpg
    layer6.jpg
    106.9 KB · Views: 152
  • layer5.jpg
    layer5.jpg
    64.5 KB · Views: 131
  • layer4.jpg
    layer4.jpg
    68 KB · Views: 137
  • layer3.jpg
    layer3.jpg
    71.8 KB · Views: 132
  • layer2.jpg
    layer2.jpg
    54.6 KB · Views: 134
  • layer1.jpg
    layer1.jpg
    115 KB · Views: 131
I highly recommend you use the reference PCB I published as a guide. It's been well tested and is known to work. There's quite a bit of guidance on the MKL02 and MINI54 pages about how to use the crystal. Please follow those guidelines!

Several people who regularly read this forum have made their own successful PCBs, so perhaps they will share some idea for things which have worked.
 
Status
Not open for further replies.
Back
Top