2.5.2.1 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 2-4. Recommended Priority for the Standard Xplained Pro Extension Header Population
Pin numberNameRecommendation
1IDAlways connect to a unique ID line on the embedded debugger
2GND
3ADC(+)First priority for ADC
4ADC(-)Second priority for ADC
5GPIO1First priority for GPIO (devices that have USART RTS hardware support should route this function to this pin)
6GPIO2Second priority GPIO (for devices that have USART CTS hardware support should route this function to this pin)
7PWM(+)First priority for PWM
8PWM(-)Second priority for PWM
9IRQ/GPIOShould be unique if possible, priority 2
10SPI_SS_B/GPIOShould be unique if possible, priority 3
11TWI_SDAAlways implemented
12TWI_SCLAlways implemented
13USART_RX
14USART_TX
15SPI_SS_AShould be unique if possible, priority 1
16SPI_MOSIAlways implemented
17SPI_MISOAlways implemented
18SPI_SCKAlways implemented
19GND
20VCC

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:
  • USB differential data signals to improve signal integrity and to prevent the users from directly touching the signals which can lead to data loss. We have seen that this can lead to a bad user experience if the USB connection is suddenly reset due to a touch of the user e.g. when he holds the board in his hand to show a demo.

  • Crystal oscillator connections: The reason behind this is a possible disturbance of the oscillation and additional load capacitance.

  • Any critical signal that would have degraded performance by this additional routing e.g. clock lines