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.
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.
-
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