Skip to main content

Input/Output (GPIO) on Tachyon

Tachyon provides various IO interfaces, including:

  • 40-pin GPIO header (compatible with Raspberry Pi HATs)
  • RTC (Real-Time Clock) connector
  • Battery connector
  • Qwiic connector (following SparkFun & Adafruit spec)
  • RF connector (for GPS antenna)

⚠️ Note: This page does not cover PCIe, CSI-1, or CSI-2 connectors.


40-Pin Header

The 40-pin header follows the Raspberry Pi standard, and its GPIOs support alternate functions as listed below:

40-Pin Header GPIO Table

GroupGPIO No.Alternate Function 1Alternate Function 2Alternate Function 3
40pinGPIO_56UART16_CTSSPI16_MISOI2C16_SDA
40pinGPIO_57UART16_RTSSPI16_MOSII2C16_SCL
40pinGPIO_58UART16_TXDSPI16_CLK-
40pinGPIO_59UART16_RXDSPI16_CS0-
40pinGPIO_144SWR_TX_CLK--
40pinGPIO_145SWR_TX_DATA0--
40pinGPIO_146SWR_TX_DATA1--
40pinGPIO_147SWR_RX_CLK--
40pinGPIO_24---
40pinGPIO_61---
40pinGPIO_6---
40pinGPIO_19UART04_RXDSPI04_CS0-
40pinGPIO_33UART10_RTSSPI10_MOSII2C10_SCL
40pinGPIO_35UART10_RXDSPI10_CS0-
40pinGPIO_44UART13_CTSSPI13_MISOI2C13_SDA
40pinGPIO_107MI2S1_DATA0--
40pinGPIO_8--I2C02_SDA
40pinGPIO_34UART10_TXDSPI10_CLK-
40pinGPIO_32UART10_CTSSPI10_MISOI2C10_SDA
40pinGPIO_18UART04_TXDSPI04_CLK-
40pinGPIO_158SWR_TX_DATA2--
40pinGPIO_106MI2S1_SCLK--
40pinGPIO_9--I2C02_SCL
40pinGPIO_62SPI16_CS1--
40pinGPIO_165LPI_SPI2_SCLKLPI_UART2_TXD-
40pinGPIO_166LPI_SPI2_CS_0LPI_UART2_RXD-

Here is the header in graphical format:

Tachyon 40-Pin Header

📢 Note: In the initial alpha release, the IOs are fixed to a typical Raspberry Pi HAT configuration.


EVT GPIO Pinout

For EVT here, here is a visual representation, refer to the GPIO pinout diagram and the fixed IO output.

Tachyon 40-Pin Header

This output is designed to satisfy as many HATs as possible. We know it`s not perfect, but we want to make sure as much works as possible before the EUFI option to change the pins is made available.


Simple GPIO Testing

You can test GPIO functionality via the shell using /usr/bin/gpio.sh, a script put together by Particle to help test.

This script is also called at boot to initialize the GPIO and export them so other apps can use them. Cat this script for more info!

cat /usr/bin/gpio.sh

For example, to toggle GPIO_44 (GPIO27 on Raspberry Pi, pin 13), run:

gpio.sh set 44 out 0

Turns off GPIO 44.

gpio.sh set 44 out 1

Turns on GPIO 44.

I2C & SPI Buses

Tachyon provides standard I2C & SPI buses accessible via Linux utilities.

🖧 I2C (Inter-Integrated Circuit)

To list all I2C devices, use:

i2cdetect -y -r 1

To read from an I2C device:

i2cdump -y 1 0x27

SPI (Serial Peripheral Interface)

To access SPI devices, download a tool such as spi-tools and run:

spi-tools -d /dev/spidev0.0

RTC (Real-Time Clock)

Tachyon supports external RTC modules via I2C.

📢 Recommended RTC module: [https://www.amazon.com/dp/B0D7ZN1QP9?ref_=ppx_hzsearch_conn_dt_b_fed_asin_title_1&th=1].

Setting Up RTC

  1. Connect the RTC module to I2C pins.

  2. Profit! Its that easy :)

  3. Read the RTC time after boot up:

hwclock -r

Button Input

Tachyon includes a 2-pin button port, following the Raspberry Pi spec.

• This is used in M1 Enclosure for power/reset functions. • The button shorts two pins together, allowing external buttons to insert button presses.

🚀 For more details, check the reference docs!