GPIO current usage.

Hi,

I have just received my long awaited snickerdoodle and it is great!

I have been playing with blinking an led using the example GPIO project and I monitored the current usage for the bank. I found that 40mA was used at startup. This switched to 48mA when the system had fully booted. I set all the GPIOs on a bank to 0 and the current went to 3mA. Setting them to 1 changed the current to 1mA.

This was measured using a meter connecting pin 1 (3.3V) to pin 3 (VCCO). No LEDs were connected.

The net result is that if I permanently connect pin 1 to pin 3 on both banks then I will see around 100mA increased current when using the GPIO example unless I set the value of the I/O pins to 0 or 1.

Does this finding make sense and what causes this behavior?

Cheers,
Derek
Hi Derek,

This isn't something that I've directly tested but I can imagine if you leave the pins floating you could experience additional leakage due to the I/O structures. Generally you want to have any digital I/O pin either be an output with a set high or low state or an input with a set high or low state. You don't want to leave inputs floating since the pins can enter a metastable state where additonal current flows through the I/O totem pole.

-Jamil


On Monday, March 20, 2017 at 12:01:28 PM UTC-7, Derek Mulcahy wrote:
Hi,

I have just received my long awaited snickerdoodle and it is great!

I have been playing with blinking an led using the example GPIO project and I monitored the current usage for the bank. I found that 40mA was used at startup. This switched to 48mA when the system had fully booted. I set all the GPIOs on a bank to 0 and the current went to 3mA. Setting them to 1 changed the current to 1mA.

This was measured using a meter connecting pin 1 (3.3V) to pin 3 (VCCO). No LEDs were connected.

The net result is that if I permanently connect pin 1 to pin 3 on both banks then I will see around 100mA increased current when using the GPIO example unless I set the value of the I/O pins to 0 or 1.

Does this finding make sense and what causes this behavior?

Cheers,
Derek
Jamil,

Thanks that solved the issue. I added a slew of lines like

set_property PULLDOWN TRUE [get_ports {gpio0_tri_io[24]}]

in the snickerdoodle_constraints.xdc and that reduced the current on boot up to 0.6mA. If I set all the pins on the bank to 1 then the current rises to 6mA. That seems more reasonable.

Cheers,
Derek

I'm glad we could help!

-Jamil

On Tuesday, March 21, 2017 at 5:46:03 PM UTC-7, Derek Mulcahy wrote:
Jamil,

Thanks that solved the issue. I added a slew of lines like

set_property PULLDOWN TRUE [get_ports {gpio0_tri_io[24]}]

in the snickerdoodle_constraints.xdc and that reduced the current on boot up to 0.6mA. If I set all the pins on the bank to 1 then the current rises to 6mA. That seems more reasonable.

Cheers,
Derek