GPIO count and speed

Started by Malvineous, September 29, 2012, 09:36:40 AM

Previous topic - Next topic

Malvineous

Hi all,

I am looking for an embedded Linux machine with a number of GPIO ports for a project I would like to start, and the OLinuXino series seems ideal.

I would like to create a device that runs Linux, but which can plug into an ISA or a PCI slot on a normal (but older generation) desktop computer.  The idea is that the PC will think the board is a different device, depending on the program you run in the embedded Linux system.  For instance you could write a program which makes the device look like a hard disk controller, so the PC thinks there is a hard disk attached but really it is just seeing the contents of a file on the SD card.  Or you could run a different program which makes some of the board's memory available as additional system RAM.

I could do this by connecting all the GPIO pins to the slot connector, but this would mean the GPIO signals must be capable of being set at a rate of up to 33MHz for PCI.  Given the increased speed of the A13, I am thinking it would be better suited than the iMX233, but does anyone know what the maximum switching rate is for the GPIO pins?  Are there any hardware features that can wake up a program when there is a change on a specific GPIO pin, or do you have to poll the ones you are interested in?

How many GPIO ports are broken out on the A13-OLinuXino-MICRO board?  There are 124 pins in a PCI slot, but about 71 unique signals, and 98 pins in ISA slot but ~88 signals.  It only looks like there are 40 GPIO pins on the micro board, but there seem to be a few LCD pins so I'm wondering whether they could be used for GPIO as well?

Any info would be much appreciated!

Malvineous

Ok, I just found the manual for the A13-OLinuXino which answers some of my questions, but raises others.  It seems there are around 70 GPIO pins (not sure what it means when it says "68/74" pins) but many of them seem to be shared with all the peripherals.  Is there any way to find out what parts cannot be used concurrently?  For example, on page 28 of the manual it says the VGA port uses GPIOs 1 through 16, but on page 26 it says these GPIOs are also used by LCD panels.  I can also only find pin assignments for GPIO 1 through 40, so I'm not sure where the others go.  Are there no breakout pins for those?

It also looks like eight (but only eight) GPIOs can be used as interrupt sources.  I think that part will be ok for me, but I think I will need all the GPIO pins so perhaps none of the peripherals will be usable.

LubOlimex

Multiplexing causes conflicts only if you use the signal on both (or more) places. For instance, if you don't use LCD you can use its signals as GPIOs.

The best advice about multiplexing I can give you is to install CadSOFT's Eagle (it has a free license for browsing - you can't edit schematics with it), then check the .sch file of the board. Select each GPIO you want to use and check if it has multiplexing and whether the multiplexing is critical individually.

Regards,
Lub/OLIMEX
Technical support and documentation manager at Olimex