Skip to main content

SiTerm: Embedded Development Tool

Table of Contents

Project Summary

SiTerm is an adaptor accompanied by a TUI that allows you to interface your laptop via USB to downstream embedded systems and transfer serial messages using I2C, SPI, and UART. The goal is to have a set of commands that allow you to easily send and read serial protocol messages as an extension to assist with debugging or initial testing of embedded systems.

Current WIP Demo

Status LED Signals
ColourSolidBlinking
🟢UnusedCommand executed successfully
🟡UnusedWaiting for TUI connection
🔴UnusedError executing command
🔵IdleUnused

This is still very much so a work in progress. I’m really trying to find time to work on it between classes and capstone. Never the less, here’s some info about the project so far:

  • Everything is programmed in Rust.
  • I’m using ratatui.rs for my tui.
  • The MCU I’m using as the adapter is the RP2040-Zero board from WaveShare
    • I picked this board specifically because it’s tiny, has USB-C, all the peripherals necessary, and the potential to do something cool with PIO.
    • Once all the code is complete I might make a shield for even easier connections to downstream embedded systems.
  • I’m using the Embassy framework for my firmware.
  • The name of the project comes from an abbreviated form of Serial Interface Terminal. It’s also the first two letters of my name Simon Terminal.
  • There’s a lot of unused code in the project currently because I started from a template. I’m in the process of trimming all of it out.

Command List

All commands follow the general format: protocol action payload. Payloads are action specific depending on the command you are writting.

I2C

Leader

Single Byte Read
ProtocolActionPayloadExampleComplete
i2crdevice_address register_address 1i2c r 0x1A 0x0F 1✅
Single Byte Write
ProtocolActionPayloadExampleComplete
i2cwdevice_address register_address value_to_writei2c r 0x1A 0x0F 0xFF✅
Batch Read
ProtocolActionPayloadExampleComplete
i2crdevice_address starting_register_address num_readsi2c r 0x1A 0x0F 3🚧
Batch Write
ProtocolActionPayloadExampleComplete
i2crdevice_address starting_register_address value_to_write_1 … value_to_write_ni2c r 0x1A 0x0F 0x0A 0x0B 0x0C🚧

Follower

Listen

coming soon

SPI

Leader

Single Byte Read

coming soon

Single Byte Write

coming soon

Batch Read

coming soon

Batch Write

coming soon

UART

Send String

coming soon

Send Bytes

coming soon

Read Number Bytes

coming soon

Read Until Byte/Bytes

coming soon

PWM

Set Duty Cycle

coming soon