max current on I/O pins of DUE


I've an existencial doubt.... I'm a neofit on Arduino and I'm confused of the max current capacity which pins DUE can deliver.

Specifications said:

// Digital I/O Pins 54 (of which 12 provide PWM output)
// Total DC Output Current on all I/O lines 130 mA

I understand that the sum of all the pins can deliver 130mA .... that is 130mA / 54pines = 2.4mA per pin?
I find it very rare so little current, so I kept looking and found the following in the specifications too:

// Digital I/O: pins from 0 to 53
// Each of the 54 digital pins on the Due can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions. They operate at 3.3 volts. Each pin can provide (source) a current of 3 mA or 15 mA, depending on the pin, or receive (sink) a current of 6 mA or 9 mA, depending on the pin. They also have an internal pull-up resistor (disconnected by default) of 100 KOhm.

So each pin really drain just 3mA and only inject 6mA? :o
With 3mA I do not move an optocoupler .... nor mosfet .... nor almost nothing.

I am totally disoriented ... can any teach me?
Thank you!

Looks like about 4mA for most pins, 8mA for some, and about 15mA for some, under special "relaxed" circumstances (voltage allowed to be 0.6V off of idea rather than 0.4V.) See the datasheet, section: 45.2 DC Characteristics, particularly "source current" and "sink current."

The 130mA per-chip limit is in addition to the the per-pin limits.

With 3mA I do not move an optocoupler .... nor mosfet

MOSFETs take essentially no current. But yeah, this is one of the reasons that a lot of people are skeptical that 3.3V ARM chips can actually replace 8bit chips...

45.2 DC Characteristics

Pretty much the same as any other processor chip: you obey the maximum limit per pin and then check that you haven't exceeded the maximum for the power-input pins. That second limit is the 130mA limit on the Due. If you have some pins sourcing and some sinking, then you can exceed that 130mA limit, but you're right on the edge of blowing something up.

The Teensy chips have even more complexity, where you can configure the "drive strength" for individual pins in the Arduino sketch.

This page has source and sink current details of all Arduino Due pins.

For the benefit of anyone searching and finding these figures late, be aware that the IO currents are those when drive strength is set to high (DRVSTR=1), and by default DRVSTR =0 and the currents are set to their lower values. This default also affects things like how fast an SPI can be driven wihout mis-clocking the data.