Skip to content

siliconwitchery/s1-micropython

Repository files navigation

MicroPython on the S1 Bluetooth / FPGA Module

S1 Module annotated

The S1 Module is based around the Nordic nRF52811, and Lattice iCE40 devices. This port is highly optimized for the small flash size of the nRF52811, and includes everything needed to interface with the FPGA.

The main interface to the Module is via the Bluetooth REPL. Use this Web REPL with Chrome to get started.

Supported Features

  • nRF52 peripherals:
    • Pin (All modes and drive strengths)
    • Pin interrupts & deep sleep wake
    • ADC (All modes)
    • RTC (Current time, and ms delay)
  • FPGA interface
    • Run
    • Reset
    • Interrupt
    • SPI data transfer
  • Integrated 32 Mbit flash
    • 256 byte page writes
    • 256 byte page reads
    • 4k block erase
    • Chip erase
  • Integrated PMIC
    • Buck-boost voltage out setting 0.8V - 5.5V
    • FPGA IO voltage setting 0.8V - 3.45V
    • FPGA IO voltage load switch mode
    • FPGA main rail power down
    • Battery charging voltage and current settings

Setting started

  1. Set up the project:

    # Clone and jump into the directory
    git clone https://github.com/siliconwitchery/s1-micropython.git
    cd s1-micropython
    
    # Initialize the submodules
    git submodule update --init 
    
    # Build the mpy-cross tool
    make -C micropython/mpy-cross
    
    # Download the bluetooth stack from Nordic
    make download-softdevice
  2. Ensure you have the latest ARM GCC toolchain installed.

  3. Build the project:

    make
  4. To flash your device, check this guide. You will also need to download and install the nRF command line tools. To flash your S1, use the command:

    make flash

Learn more

For full details, be sure to check out the documentation center 📚

Here you will find all the technical details for both hardware, and MicroPython usage.