Populating Extension Headers

The number of extension headers and how they are populated will greatly affect the Xplained Pro platform as a whole. Since there are 20 pins per standard extension header some pins from the target MCU will be shared between several extension headers. If the pin-out is not done thoroughly there will be many compatibility issues when several extension modules are connected at the same time. There has to be some sharing of MCU pins on the extension headers, if not too few headers will be available for the user.

EXT1 should be a golden extension header meaning this header should not share any of its MCU pins with other extension headers. Demo code for a specific extension module should always run on EXT1 without the need to modify the code. For low pin-count devices it might be difficult to achieve this but in all cases this should be at least attempted.

EXT3 is intended for user interface boards containing displays, buttons etc, and these boards will most likely be used a lot. For all other standard extension connectors a lower number should have priority over a connector with a higher number, e.g. EXT2 > EXT4.

Table 1. Recommended Priority for the Standard Xplained Pro Extension Header Population
Pin number Name Recommendation
1 ID Always connect to a unique ID line on the embedded debugger
2 GND  
3 ADC(+) First priority for ADC
4 ADC(-) Second priority for ADC
5 GPIO1 First priority for GPIO (devices that have USART RTS hardware support should route this function to this pin)
6 GPIO2 Second priority GPIO (for devices that have USART CTS hardware support should route this function to this pin)
7 PWM(+) First priority for PWM
8 PWM(-) Second priority for PWM
9 IRQ/GPIO Should be unique if possible, priority 2
10 SPI_SS_B/GPIO Should be unique if possible, priority 3
11 TWI_SDA Always implemented
12 TWI_SCL Always implemented
13 USART_RX  
14 USART_TX  
15 SPI_SS_A Should be unique if possible, priority 1
16 SPI_MOSI Always implemented
17 SPI_MISO Always implemented
18 SPI_SCK Always implemented
19 GND  
20 VCC  

Signals with unique priority should be populated first e.g. SPI_SS_A, then IRQ/GPIO, and lastly SPI_SS_B/GPIO. After Unique priorities have been filled other signals with the lowest number have the highest priority e.g. PWM(+), GPIO1 and ADC(+) must be populated before ADC(-), GPIO2 and PWM(-).

SPI, TWI, and UART should always be implemented. SPI and TWI can always be implemented because they are bus types.

It is not allowed to connect two (or more) MCU signals to one extension connector pin, as this will make the not used MCU pin unavailable to the designer for alternative use. It is however an option to connect one MCU signal to two or more extension connector pins, to ensure that we can make standard functionality available on all extension connectors.

For devices with hardware flow control for the UART it is beneficial to route these signals to the EXT1 header GPIO pins because these would most likely also be used for this purpose on extension boards that require these signals. RTS should be routed to GPIO0 and CTS should be routed to GPIO1. Connecting the flow control signals is not a requirement but it is obvious that following this suggestion will offer better support for this functionality.

All I/O pins of the target device that are not connected to extension headers should be made easily accessible. Exceptions for this rule are: