# UEXT

Universal EXTension (UEXT) is a connector layout which includes power and three serial buses: Asynchronous, I$^2$C, and SPI separately over 10 pins in a 2×5 layout. The connector layout was specified by Olimex Ltd and declared an open-project that is royalty-free in 2011, and was used in all their boards after 2004.

## Physical characteristics

The UEXT connector consists of 10 pins, in a two row by five male pin configuration, with a plastic keyed-shrouded or box header (specifically BH10S). All pins have a spacing of 0.1 inch (2.54 mm). The socket is mated with a 2×5 (10-pin) IDC female connector, and typically connected to a ribbon cable. The UEXT cable assembly is referred to as a 10-pin IDC Connector Ribbon Cable. These cables are readily available and cheap.

## Electrical characteristics

The UEXT connector presents power and three serial buses: Asynchronous, I$^2$C, SPI. All pins conform to 3.3 volt digital logic. The asynchronous serial bus requires additional level-shifting circuits and connectors to support RS-232, RS-422, RS-485, DMX512, or MIDI.
UEXT Connector :
| Pin | Name | I/O | Logic | Primary Use |
| 1 | 3.3V | S | S | +3.3 volt |
| 2 | GND | S | S | Ground |
| 3 | TXD | O | PP | Transmit Data for Async Serial bus |
| 4 | RXD | I | PP | Receive Data for Async Serial bus |
| 5 | SCL | O | OD | Clock for I$^2$C bus |
| 6 | SDA | I/O | OD | Bidirectional Serial Data for I$^2$C bus |
| 7 | MISO | I | PP | Serial Data In for SPI bus |
| 8 | MOSI | O | PP | Serial Data Out for SPI bus |
| 9 | SCK | O | PP | Clock for SPI bus |
| 10 | /SSEL | O | PP | Chip Select for SPI bus |
Notes:
* Direction is relative to host board. I = Input, O = Output.
* S = Power Supply, PP = Push-Pull logic, OD = Open-Drain logic, all pins conform to 3.3 volt digital logic

### Alternate pin uses

The functionality of most microcontroller pins are multipurpose, thus allowing the engineer to redefine the purpose of the pin. It is fairly common that a pin will have a choice to be either a general purpose I/O or a peripheral.
If a microcontroller pin is connected to the UEXT connector and redefined to be something other than Asynchronous Serial Bus / I$^2$C Bus / SPI Bus, then some thought should be given to the design before making the changes. To minimize the chance of damaging various UEXT boards or the microcontroller, redefined pins should continue to adhere to the direction of the data in this table or alternately redefined as an input. For a safe design, it is recommended that you don't redefine pins 4 or 7 to be outputs, and use pin 6 as an output with caution.

## User concerns

If a person is concerned about damaging the data lines of the microcontroller, additional over-voltage protection diodes and/or separate drivers should be added between the microcontroller and UEXT connector. Additionally, a resettable fuse might be added between the host power and pin 1 to protect against over-current conditions. Open source UART dongles are available that are explicitly designed to be pin compatible with UEXT, and may be used to interface a UEXT device directly with a computer over USB.

### 5 V warning

Some boards might provide 5 V output on UEXT pins if they are configured for operation at 5V. For example, OLIMEXINO-328 and OLIMEXINO-32U4 have a 3.3 V/5 V PTH jumper that changes the power mode of the board. If the 3.3 V/5 V jumper is set to 5 V, this jumper also changes the voltage available at pin #1 of UEXT as well as the voltage levels of all data signals available there (UART, SPI, I2C). As the UEXT standard only defines 3.3 V, many UEXT modules may not be 5 V tolerant, and thus get damaged if the board has such jumper set to 5V. Users are advised to verify their boards are configured for 3.3 V before connecting UEXT hardware to prevent damaging said hardware.

### Parallel cables

It is possible to connect multiple UEXT devices in parallel by clamping additional IDC connectors onto the same ribbon cable. This will result in a correct distribution of power (3.3 V and ground) and allow data communication over I²C.
However, a multidrop SPI bus will fail since all the chip selects are tied together, thus all peripherals will be addressed simultaneously resulting in their simultaneous response data on the MISO line being scrambled. UART will also fail due to multiple devices transmitting and receiving on the same lines. Series resistors are necessary on conflicting SPI and UART pins to limit short circuit currents due to conflicts, if compatibility with other UEXT devices is desired.

## Similar connectors

Some devices use a layout based on the UEXT connector but have chosen not to implement all of the functionality. In particular the asynchronous serial connection may have been omitted. In these cases the spare pins are usually assigned other purposes, such as connecting to a device reset line, so care should be taken to check the exact connector layout on the schematic of a particular device.

## Implementations
### UEXT I/O Boards

* Olimex UEXT Boards

### Host Boards

* Olimex Olimexino-328, 16 MHz ATMEGA328 (Atmel AVR)
* Olimex Olimexino-STM32, 72 MHz STM32F103RBT6 (ARM Cortex-M3)
* Olimex LPC-P1114, 50 MHz NXP LPC1114 (ARM Cortex-M0)
* Olimex DuinoMite, 80 MHz MicroChip PIC32MX795 (PIC32)
* Olimex STM32-P207, 120 MHz ST STM32F207 (ARM Cortex-M3)
* Olimex Pinguino

### 3rd-party

* LibreSolar