General-Purpose I/O Lines
The EM1000 has 54 general-purpose I/O (GPIO) lines (GPIO0 ~ GPIO53). All lines are 3.3V, CMOS, and 5V-tolerant. The maximum load current for each I/O line is 10mA. Forty-nine of these lines are always available. The remaining five lines are located on the wireless add-on connector. This connector is "available" to the host PCB only on option "-A" EM1000 devices.
A total of 40 I/O lines are combined into five 8-bit ports.
The simplified structure of one I/O line of the EM1000 is shown in the circuit diagram below. Each line has an independent output buffer control. When the EM1000 powers up, all its I/O lines have their output buffers tri-stated (in other words, all I/O lines are configured as inputs). You need to explicitly enable the output buffer of a certain I/O line if you want this line to become an output.
Many I/O lines of the EM1000 also serve as inputs or outputs of special function modules, such as serial ports. The majority of those lines need to be correctly configured as inputs or outputs — this won't happen automatically. Several lines — such as the TX and RX lines of a serial port when in the UART mode — are configured as outputs and inputs automatically when the serial port (or some other hardware block) is enabled. For details, see the EM1000 platform documentation.
Each I/O line has a weak pull-up resistor that prevents the line from floating when the output buffer is tri-stated.
I/O line control is described in the documentation for the io. object.