31

I know for a long time that people should NOT put more than 3.3V on the GPIO pins. They also give out 3.3V when high.

I did some research and it seems no one really bothered asking. Almost all of them talk about the maximum current.

If I am supplying the Pi with 5V, why are the GPIO pins not 5V tolerant?

Arduino pins more or less follow the input (or VCC) voltage. If it's a 5V model, the pins use 5V. If it's a 3.3V model, it uses 3.3V. Anything above those would more or less fry it.

I should probably ask Broadcom about this.

Aloha
  • 7,136
  • 1
  • 28
  • 52
  • As joan points out, the statement "Arduino pins more or less follow the input voltages" is false. Arduino input voltages are variable and the pins regulated. For a 5V model you need to use at least 5V input for correct functioning. Also worth noting that an MC != a SoC, although there are similarities and the latter term is sort of ambiguous/conceptual. – goldilocks May 02 '16 at 15:10
  • @goldilocks Clarified. I meant VCC. – Aloha May 02 '16 at 16:51
  • 2
    "If I am supplying the Pi with 5V, why are the GPIO pins not 5V tolerant?" - For the very same reason the Arduino GPIO is not 12V tolerant even when you power the board with 12V. – JimmyB May 02 '16 at 18:27
  • 1
    I think the title and content was just too SEO friendly. – Aloha Dec 21 '17 at 16:16

5 Answers5

34

The ATMega chips specify Operating Voltage: ̶ 1.8 - 5.5V. If you read deeper the operating speed is dependent on voltage. They work at 3.3V but you have to limit the clock speed. The Arduino team presumably chose 5V because of the ready availability of systems which use this (a legacy of TTL).

The SOC used on Pi run on 3.3V (and also require a couple of lower voltages). These are orders of magnitude more complex than the ATMega and run at considerably higher speeds (~1GHz vs 16MHz). Like most complex systems running at lower voltage allows higher speed operation at lower power consumption (and thus heat).

I suspect that the processor part and GPU run on the 1.8V and 1.2V supply and the 3.3V is for the peripherals. The SD Card also runs at 3.3V.

The Pi (especially the later models) have complex power converters which supply the many voltages needed at high currents. The 5V is needed because this is the USB standard (and the ready availability of suitable power supplies).

Milliways
  • 59,890
  • 31
  • 101
  • 209
  • 19
    Why would it not be a real question? – loneboat May 02 '16 at 15:47
  • Arduino V(input-low) is 0 - v1.8 an V(input-high) is 3v - 5v – wajatimur May 02 '16 at 16:38
  • 1
    @loneboat I'm on your side. – Aloha May 02 '16 at 16:54
  • 5
    @PandaLion98 The real answer is because that is the way the system is designed. I then proceeded to explain why it is designed that way. This was in relation to "I did some research and it seems no one really bothered asking" - no one else asks because it is obvious. In fact, as I have explained in other posts putting 5V on a GPIO pin is unlikely to cause damage (not that I recommend this), provided the current is limited - which, of course lowers the voltage. – Milliways May 03 '16 at 00:06
12

Short answer is "Because that's the way it is designed".

A somewhat longer answer is "They didn't make it 5V tolerant because it would be expensive". Nobody really mass-produces 5V peripherals anymore (including USB, which has 3.3V data lines). Making 5V tolerant IO pins would make the chip more expensive, and probably a bit slower, while adding close to zero value.

You have to understand that RPi is not a typical application for Broadcom chips, so the chips are optimized for 99% of the use cases. Spending $2 to make all pins 5V-tolerant does make sense for RPi, but those $2 are a prohibitively high price when you consider the remaining 99%.

Dmitry Grigoryev
  • 27,928
  • 6
  • 53
  • 144
0

Doesn't the Pi follow exactly the same pattern?

All current Pis are 3V3 models so it uses 3V3 GPIO.

The Pi's input voltage is set at a fixed 5V.

Arduino's allow a range of input voltages, 3.3V to 12V typically for 3V3 models, 6V to 20V typically for 5V models.

joan
  • 71,024
  • 5
  • 73
  • 106
  • 1
    The Pi's input voltage is set at a fixed 5V. stems from the USB peripherals. The Pi's SoC itself uses 3V3 via the voltage regulator. – Ghanima May 02 '16 at 10:45
  • 1
    @Ghanima ... and the requirements of HDMI. Neither of which apply to an Arduino. The Pi's SOC uses 3V3, 2V5, and 1V8. – joan May 02 '16 at 10:53
  • 1
    You're right. Though the lower voltages are generated on-chip. – Ghanima May 02 '16 at 12:06
-1

3.3 volts is cmos logic levels (newer) and 5 volts is the older ttl standard.

  • 6
    That is simply not true. Logic level voltages do not strictly correspond to circuit technology. In fact CMOS based devices operate on different voltage levels, including 5V, 3V3, and lower voltages. Example: while Arduinos come with 5V logic levels they are not TTL but CMOS (e.g. the ATMegas are CMOS), see also here – Ghanima May 02 '16 at 10:42
  • 4
    The famous 4000 CMOS family runs from anything between 3 and 15 V. See the spec, page 2. – Dmitry Grigoryev May 02 '16 at 14:17
  • Almost true but slightly different, Logic level is base on gate fabrication design either CMOS or TTL. Arduino logic level is bit different to standard CMOS and TTL. – wajatimur May 02 '16 at 16:36
  • @wajatimur There's not such thing as "CMOS logic level standard". – Dmitry Grigoryev May 03 '16 at 08:47
  • @DmitryGrigoryev The generally used CMOS specification might be more accurate. – wajatimur May 03 '16 at 09:55
-1

The raspberry pi has a 2 constant 3v3 pins that are always on, 2 constant 5 volt pins, a lot of 3v3 gpio pins, and 5 ground pins. The newer versions have all that, but with 3 more GND (ground pins) and even more gpio pins.