Teensy 4.1 shorts when GPIOs are connected to ground?

owens3364

Member
I have a custom PCB with a 3.3V plane and a ground plane. The Teensy is powered via USB. The Teensy sits on headers on the PCB. Some of the GPIOs are used, and the unused ones are connected directly to the ground plane. When my Teensy is on the board, it won’t turn on and gets hot. It seems to work fine when only connected to the USB though.

Why is this?? I thought unused GPIOs could be connected to ground. There are no shorts on the custom PCB; I checked with a volt meter.

How do I fix this problem?
 
I have a custom PCB with a 3.3V plane and a ground plane. The Teensy is powered via USB. The Teensy sits on headers on the PCB. Some of the GPIOs are used, and the unused ones are connected directly to the ground plane. When my Teensy is on the board, it won’t turn on and gets hot. It seems to work fine when only connected to the USB though.

Why is this?? I thought unused GPIOs could be connected to ground. There are no shorts on the custom PCB; I checked with a volt meter.

How do I fix this problem?

It's almost impossible to make any well-founded recommendations without seeing your sketch (note the Forum Rule: above !!) and/or seeing your hardware implementation !! However, I will make an attempt at the impossible: have you called pinMode() on all of the unused GPIOs to configure them as inputs (if not, maybe you could/should) ??

Sorry, that's the best guess that I (or, very likely, anyone else) can make without a little more info upon which to base any further recommendations . . .

Mark J Culross
KD5RXT
 
The code uploaded through Teensyduino is as follows

Code:
void setup() {
  Serial.begin(9600);
  delay(1000);
  for (int i = 0; i < 49; i++) {
    pinMode(i, INPUT_PULLUP);
  }
  delay(1000);
}

void loop() {
  Serial.println("I am alive!");
  delay(1000);
}

As for the hardware implementation...
Top.jpg
Middle.jpg
Bottom.png
All of the pins labeled GND are connected to GND, I just took the fillings out to make the screenshot clearer.

Behavior: I start the program with the teensy off the board, and once it's mounted or partially mounted to the board, it stops and gets hot.
 
Mark,
I appreciate your insight. I just posted the code and the PCB layout in a reply below. Any more help based on that would be greatly appreciated :).

Thanks,

Owen Scott
 
If I remember correctly when Teensy starts up the GPIO lines are pulled up to 3.3v, so connecting them to gnd is NOT a good idea.
Effectively you are shorting the Teensy to Gnd.
 
This issue occurs even if I start the Teensy isolated, get the program running with all the pins on INPUT_PULLUP, and then put it on the board while leaving it on USB power... It'd still cause shorts?
 
I tried this on a breadboard with all I/O pins connected to GND.

allgnd.jpg

It's running the code from msg #3 without any problems.

screenshot.jpg
 
I was going to suggest what Paul did…

Also suggest double check for shorts.
Plug in Teensy into socket no power and check resistance from 5 v to 3.3v. To gnd and 3.3v to gnd.

Like maybe one of the 3.3v pins is connected to gnd
 
On your custom PCB, without Teensy plugged in and without any power (if it gets power from any other source) try using a multimeter to measure ohms between 3.3V and GND.

Remember, ohms measurement isn't magic. Your meter sends a test current through the wires and measures the resulting voltage and then uses ohms law to compute the resistance. It's meant for measuring only an isolated resistor. When used on a PCB, keep in mind that test current can and (probably) will flow through various circuitry. Capacitors measure as a low resistance that gradually increases as the test current charges the capacitor. If the current flows through chips, usually you'll see a fairly high impedance on the meter, but it's not actually resistance since the current is flowing through various P-N junctions inside the chip which (usually) gives a diode forward voltage. What sort of number you actually see varies with different multimeters depending on their test current and which range they're configured to use. But if 3.3V and GND are shorted together on your PCB (my guess....) you'll see a very low resistance on the meter.

You could also use DC voltage mode to measure the 3.3V power while Teensy is plugged into the PCB. If it's close to zero, that's a sure sign of a short on the PCB. If you get something like 0.6 to 0.9 volts, that's a strong sign something on the PCB using 3.3V power is wrong, like a 74-series logic chip installed backwards.
 
As for the hardware implementation...
View attachment 29530
All of the pins labeled GND are connected to GND, I just took the fillings out to make the screenshot clearer.

Maybe I'm reading too much into what's shown, but on your first picture attachment, are the interconnects indicating (looking specifically at the fine line connection between the GND pin & the 3V3 pin) that the GND & 3.3VDC pins are shorted ?? Can you confirm that your PCB measures as an "open" between the 3V3 plane & the GND plane ??

Mark J Culross
KD5RXT

P.S. Thanks for your post with the PCB layout & your test sketch . . . that helps greatly !!
 
I can confirm that what appears to be an airwire between 3V3 and GND is actually an airwire from GND to GND, since they're all in a line, that just happens to cross (but not actually connect with) 3V3. Unfortunately, the PCB doesn't measure as open there. It does measure as 460 ohms though, and I have ICs and capacitors across 3V3 and GND planes...
 
Paul,
This was helpful. I ran these tests with mixed results.
*The following tests were done without power applied*
- I checked resistance between 5V and GND on the PCB and got a high one (in the mega-ohms)
- I checked resistance between 5V and GND on the Teensy and got a high one (in the mega-ohms)
- I checked resistance between 3V3 and GND on the PCB and got 330Ω, 460Ω, and 2.7kΩ. It seemed to vary at random and my multimeter cannot decide on a reading.
- I checked resistance between 3V3 and GND on the Teensy and got 7.5kΩ
- Checking resistance between 3V3 and GND with the Teensy mounted on the PCB gives 3.7kΩ
*The following tests were done with USB power applied*
- Checking voltage across 3V3 and GND on the Teensy with the Teensy plugged in but disconnected from the board gives 3.3V
- Checking voltage across 3V3 and GND on with the Teensy plugged in and mounted to the board gives almost 0V

So there's a board short.

I found a very hot ceramic capacitor across 3V3 and GND and removed it, but the short persists.
 
If you have more unsoldered PCBs, maybe try soldering only the socket and leave the rest of the PCB empty. If that causes Teensy to short, then you can be pretty sure it's something wrong with the PCB design and focus only on the PCB routing without worrying about the other parts.

If Teensy is able to run, then start adding parts 1 by 1 and retest. Sooner or later you'll find the one that's causing the problem. Tedious, but at least a clear path to discovering where the problem is.
 
I totally feel your pain! Coming from the software side, debugging hardware is so different. And it is soooo hard to commit to press that "Order PCB" button, because you know, that you cannot just upload a new firmware version to the PCB.
 
Back
Top