Shields


Team Shields aims to provide and support development for shield components. Click on the team logo to check the compatibility status and testing progress for all supported platforms and shields.

You are viewing an older revision! See the latest version

Shield Design Guide

Many development boards for sensors and microcontrollers have adopted the Arduino Uno R3 header configuration. There are plenty of derivatives to this but some commonallity does exist. When designing a Shield whether it be for a MCU (target) or a sensor/radio/peripheral (device) using the following guidelines will ensure the most cross target compatibility.

Pinnout

Peripheral Mapping

All labeled from the targets perspective

PeripheralPeripheral FunctionPin Name
I2CSCLD15
SDAD14
SPISCKD13
MISOD12
MOSID11
SSELD10
SerialTXD0
RXD1
PWMOutput
Output
Output
Output
AnalogInputA0
InputA1
InputA2
InputA3
InputA4
InputA5
DigitalIO
IO
IO

Target Notes

  • Avoid wiring a single MCU pin to multiple breakout headers
  • SDK should resolve names to MCU specific pins (PinNames.h)
    • A0 ... A5
    • D0 ... D15
    • I2C_SCL ... I2C_SDA
  • Order of prescience for IO is 0 ... 13 (analog and digital). If not enough pins are available, connect starting at 0
  • Female headers installed on topside of PCB
  • All digital pins should be gpio interrupt capable (InterruptIn implementation)

Device Notes

  • Provide a well documented C++ library for all on board components
  • Provide a well documented demo application that uses the provided libraries in a simple but meaningful way
  • Test you design on as many platforms as possible and document known incompatibilities. These should be the minority and easier to maintain
  • Pass through male to female headers should be installed on PCB. Example

All wikipages