PINE64
How to determine GPIO numbers? - Printable Version

+- PINE64 (https://forum.pine64.org)
+-- Forum: PINE A64(+) (https://forum.pine64.org/forumdisplay.php?fid=4)
+--- Forum: Pine A64 Hardware, Accessories and POT (https://forum.pine64.org/forumdisplay.php?fid=32)
+---- Forum: Pi2, Euler and Exp GPIO Ports (https://forum.pine64.org/forumdisplay.php?fid=34)
+---- Thread: How to determine GPIO numbers? (/showthread.php?tid=474)



How to determine GPIO numbers? - joey - 03-22-2016

I've been experimenting with some of the GPIOs on my Pine, and I think I figured out how to talk to them using /sys/class/gpio. Unlike the Pi, which I am coming from, the GPIO numbers are different. I found another resource on the web that said in order to get the GPIO number for a different chip, you need to take the letter from the Pin number, convert it to a number, subtract 1, multiply by 32, then add the listed GPIO number. I thought that was strange, but figured I'd give it a try. For example, I wanted to write to the Pi 2 pin #16, which is GPIO 23. I did the folllowing:

Using the document attached to this post, I determined the pin I want is PC13.

P="Pin", we don't care about this.
C=3rd letter in alphabet, but we're nerds, we count from zero, so C=2 (subtract 1)
13=GPIO 23 We just use the raw number, I can't math.

So we take 2 and multiply it by 32, which seems to be a magic number. I'm sure it has significance to someone, but not a n00b like me. 2*32 = 64. Now we add 64+13 from the pin out document to get a final result of 77.

Then, as root, I changed into /sys/class/gpio and enabled the GPIO:
Code:
cd /sys/class/gpio
echo 77 > export
cd gpio77
echo "out" > direction
echo 1 > value
After doing that, hurrah, my LED lit up. The anode (positive) of the LED is connected to the pin mentioned above, the cathode (negative) is connected to one of the pins labeled GND.

I just wanted to share this with everyone because it took me an hour or so of google searches until I figured this out. It may be documented somewhere else on this site, but so far I couldn't find anything. For reference, I'm doing all my experimentation in longsleep's 3/20 build of Ubuntu 16.04 "Xenial."


RE: How to determine GPIO numbers? - patrickhwood - 03-23-2016

(03-22-2016, 09:38 PM)joey Wrote: I've been experimenting with some of the GPIOs on my Pine, and I think I figured out how to talk to them using /sys/class/gpio. Unlike the Pi, which I am coming from, the GPIO numbers are different. I found another resource on the web that said in order to get the GPIO number for a different chip, you need to take the letter from the Pin number, convert it to a number, subtract 1, multiply by 32, then add the listed GPIO number. I thought that was strange, but figured I'd give it a try. For example, I wanted to write to the Pi 2 pin #16, which is GPIO 23. I did the folllowing:

Using the document attached to this post, I determined the pin I want is PC13.

P="Pin", we don't care about this.
C=3rd letter in alphabet, but we're nerds, we count from zero, so C=2 (subtract 1)
13=GPIO 23

So we take 2 and multiply it by 32, which seems to be a magic number. I'm sure it has significance to someone, but not a n00b like me. 2*32 = 64. Now we add 64+23 from the pin out document to get a final result of 77.

Then, as root, I changed into /sys/class/gpio and enabled the GPIO:
Code:
cd /sys/class/gpio
echo 77 > export
cd gpio77
echo "out" > direction
echo 1 > value
After doing that, hurrah, my LED lit up. The anode (positive) of the LED is connected to the pin mentioned above, the cathode (negative) is connected to one of the pins labeled GND.

I just wanted to share this with everyone because it took me an hour or so of google searches until I figured this out. It may be documented somewhere else on this site, but so far I couldn't find anything. For reference, I'm doing all my experimentation in longsleep's 3/20 build of Ubuntu 16.04 "Xenial."

Just an fyi, the 32 comes from the fact that gpio pins are grouped into banks of 32 pins. So pins in bank 0 are numbered 0 to 31, pins in bank 1  32 to 63, and so on.


RE: How to determine GPIO numbers? - joey - 03-23-2016

(03-23-2016, 03:44 PM)patrickhwood Wrote: Just an fyi, the 32 comes from the fact that gpio pins are grouped into banks of 32 pins. So pins in bank 0 are numbered 0 to 31, pins in bank 1  32 to 63, and so on.

Thanks Patrick. That makes perfect sense.


RE: How to determine GPIO numbers? - Thargoid - 07-24-2016

(03-23-2016, 04:39 PM)joey Wrote:
(03-23-2016, 03:44 PM)patrickhwood Wrote: Just an fyi, the 32 comes from the fact that gpio pins are grouped into banks of 32 pins. So pins in bank 0 are numbered 0 to 31, pins in bank 1  32 to 63, and so on.

Thanks Patrick. That makes perfect sense.


Hi

So what am I doing wrong?  I don't have /sys/class/gpio - i have class but no gpio

however the pi2 pins seems to be live anyway, i can get an led to light running off the 5V and GND pins whenever the pine is running.

Is this a quirk for the android setup?  Am I going to have to install linux for the first time in my life?