Fork 0
I²C, oh! Big stretch.
This repository has been archived on 2024-03-17. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Amelia Cuss f146ffb7ea README: link to canonical source. 2024-01-18 17:12:25 +11:00
.github/workflows workflows: try to avoid [this]. 2023-08-24 13:10:55 +10:00
cxxsim test, cxxsim: sync. 2023-08-24 23:16:53 +10:00
i2c_obs rtl: FFSynchronizer (unused for now). 2023-10-10 19:48:56 +11:00
.gitignore cxxrtl: test Display! (Works!) 2023-08-22 12:54:22 +10:00 README: link to canonical source. 2024-01-18 17:12:25 +11:00
flake.lock flake.nix: update inputs. 2023-11-07 18:09:29 +11:00
flake.nix flake.nix: update inputs. 2023-11-07 18:09:29 +11:00
pdm.lock cursed init. 2023-08-21 23:00:52 +10:00
pyproject.toml pyproject: rename. 2023-11-07 18:13:56 +11:00
woof hdx: update; use amaranth-stdio for UART. 2023-10-10 13:16:47 +11:00


I²C, oh! Big stretch.


The only board this is configured to run with right now is the iCEBreaker, but it only needs a single GPIO to interface with the I²C bus clock and a button to toggle stretching on and off, so it's easy to add support.

It can optionally write diagnostic information to UART. The iCEBreaker channels its UART over USB, but you could also just put it on a GPIO and use your own FTDI cable.

  • Connect PMOD1A1 to I²C SCL.
  • Optional: run py -m i2c_obs debugger to monitor.
  • Press the button.
  • (The debugger will report the measured bus speed.)
  • The bus is streeeeeeetched.
  • Press the button to stop.


  • I've templated this from sh1107, so maybe the repo in the state it is as of this line being written is a good source for an actual template/common base, future me?