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
Group | GPIO No. | Alternate Function 1 | Alternate Function 2 | Alternate Function 3 |
---|---|---|---|---|
40pin | GPIO_56 | UART16_CTS | SPI16_MISO | I2C16_SDA |
40pin | GPIO_57 | UART16_RTS | SPI16_MOSI | I2C16_SCL |
40pin | GPIO_58 | UART16_TXD | SPI16_CLK | - |
40pin | GPIO_59 | UART16_RXD | SPI16_CS0 | - |
40pin | GPIO_144 | SWR_TX_CLK | - | - |
40pin | GPIO_145 | SWR_TX_DATA0 | - | - |
40pin | GPIO_146 | SWR_TX_DATA1 | - | - |
40pin | GPIO_147 | SWR_RX_CLK | - | - |
40pin | GPIO_24 | - | - | - |
40pin | GPIO_61 | - | - | - |
40pin | GPIO_6 | - | - | - |
40pin | GPIO_19 | UART04_RXD | SPI04_CS0 | - |
40pin | GPIO_33 | UART10_RTS | SPI10_MOSI | I2C10_SCL |
40pin | GPIO_35 | UART10_RXD | SPI10_CS0 | - |
40pin | GPIO_44 | UART13_CTS | SPI13_MISO | I2C13_SDA |
40pin | GPIO_107 | MI2S1_DATA0 | - | - |
40pin | GPIO_8 | - | - | I2C02_SDA |
40pin | GPIO_34 | UART10_TXD | SPI10_CLK | - |
40pin | GPIO_32 | UART10_CTS | SPI10_MISO | I2C10_SDA |
40pin | GPIO_18 | UART04_TXD | SPI04_CLK | - |
40pin | GPIO_158 | SWR_TX_DATA2 | - | - |
40pin | GPIO_106 | MI2S1_SCLK | - | - |
40pin | GPIO_9 | - | - | I2C02_SCL |
40pin | GPIO_62 | SPI16_CS1 | - | - |
40pin | GPIO_165 | LPI_SPI2_SCLK | LPI_UART2_TXD | - |
40pin | GPIO_166 | LPI_SPI2_CS_0 | LPI_UART2_RXD | - |
Here is the header in graphical format:
📢 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.
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
-
Connect the RTC module to I2C pins.
-
Profit! Its that easy :)
-
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!