A Raspberry Pi footprint and GPIO connector with a SAMD21J18 processor.

Similar projects worth following
This project is designed to be a low power, bare metal programing environment that can talk to the existing "Hats". The mounting bolt pattern and GPIO connector placement match the Raspberry Pi 3b. The comm paths on the GPIO connector like SPI, I2C, UART and I2S are connected to blocks in the SAMD2J18 microcontroller to support them. There are also RS232 and RS485/422 drivers on the board to talk to a host. A USB connector is available that will support power and the SAMD21 USB block. The CPU is an ARM M0+ capable of running at 48MHz. Debug is through SWD interface. All parts used are in packages that are friendly to home SMT construction.

I have several projects running that use Hats from outside sources. None of these projects need the computational power or complexity that an embedded Linux system brings.

As mentioned in the intro section, all of the communications interfaces are available on the GPIO connector (J2). The rest of the pins on the GPIO connector are tied to uncommited GPIO's on the MCU. Remaining GPIO signals from the MCU are routed to another connector J3 so they remain available. Connector J3 is the "extra GPIO signals header".

RS232 and RS485/422 drivers are placed on the board and their MCU connections are uncommitted so they can be routed as needed. I expect that the RS232 and/or RS422 drivers will be driven from signals the J3 "extra GPIO signals header".

The USB connector wiring matches the data sheet connections, but I have not used the USB system on previous projects, so that will require some checking out in the future. USB power input has a diode to isolate if from the power input terminal strip. Use of the USB power input will require blue wiring JMP7 to JMP10 to make that operational. VBus sense will also require jumpering JMP8 to the appropriate GPIO pin for the USB library to sense the presence of VBus. There is a voltage divider (R2,R3) to scale the VBUS to a level safe to feed into a 3.3V GPIO input.

If I/O pins become scarce, and the 32KHz external oscillator is not needed, two GPIO signals can be freed up by moving JMP1, JMP2 away from the crystal and toward the external GPIO pins. Similarly, if the USB is not needed, installing JMP3 and JMP4 will make the two GPIO signals accessible on the Extra GPIO signals header. Using the two USB signals as GPIOs will prevent powering the board through the USB connector, and the power input terminal strip P1 should be used instead.

The Raspberry Pi boards are powered from 5V, with a voltage regulator to provide 3.3V for on board usage. A similar setup is on the SmallPi board, except it uses a linear regulator, as currents are expected to be much lower. As with the Raspberry PI, the SmallPi can be powered through the two +5V pins on the gpio connector but should never be powered through the +3.3V pin on the GPIO connector.

The first rev of PCBs is back from OSHPark and one has been populated. Testing the board is in process now. At this point, the power supply, SWD debug wiring and both external crystal oscillators are operating.

In the past, I have done a few projects with the smaller SAMD21E18 version of the chip. Getting the clock system sorted out on this part has been an ongoing issue with these projects. I think that I got the PLL operating correctly so that the CPU and peripherals have a stable, accurate 48MHz clock now. Attempts to get a stable, accurate frequency with the FLL have been marginally successful in the past, so I am quite pleased with this.

Inital observations of current consumption look quite good. Clocking the CPU at 48MHz,  with a couple of GPIOs set up to route clock signals out and both external oscillators running, Input current is showing 15mA at 5V. That number will increase as peripherals are enabled, but this seems like a good place to start.


Schematic of project.

Adobe Portable Document Format - 465.74 kB - 03/06/2020 at 20:01


Bill of Materials-SmallPi.txt

Bill of Materials for project.

plain - 4.59 kB - 03/06/2020 at 20:01


  • Checking out the hardware, SIOs are working

    Bharbour03/11/2020 at 03:21 0 comments

    This board has connections to mimic the Raspberry PI UART on the GPIO connector. It also has a RS232 level shifter and a RS422/485 transcievers that can get blue wired to any of the SERCOM pins. The RS232 and 422 chips drive pins on a separate connector, J11.

    I blue-wired the RS232 level shifter to the SERCOM4 pins exposed on the Extra signals connector (J3) and the RS422 transciever to the SERCOM5 pins on J3. The Raspberry PI UART wiring goes to SERCOM0.

    I have used the smaller version of this chip on previous projects, so I have a version of my own serial drivers that are pretty quick to configure for different setups on this chip. I modified the code to support SERCOM 0, 4, and 5 and tested it. They all work. I need to make up a short cable to mate with J11 and fan the signals out to various test equipment next. That will be a task for the morning.

    The other two SERCOMs will be configured to support the I2C and SPI interfaces on the Raspberry PI GPIO connector. Getting code running to test those is next.

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates