pounder_test/README.md

1.2 KiB

Stabilizer Firmware

Flow diagram

Hardware

Features

  • dual channel
  • SPI ADC
  • SPI DAC
  • 500 kHz rate, timed sampling
  • 2 µs latency, unmatched between channels
  • f32 IIR math
  • generic biquad (second order) IIR filter
  • anti-windup
  • derivative kick avoidance

Limitations/TODOs

  • Fixed AFE gains
  • The IP and MAC address are hardcoded
  • Expose configurable limits
  • 100Base-T only
  • Digital IO, GPIO header, AFE header, EEM header are not handled

Hardware

See https://github.com/sinara-hw/Stabilizer

Minimal bootstrapping documentation

  • Clone or download this
  • Get a recent openocd, a JTAG adapter ("st-link" or some clone) and everything connected and permissions setup
  • Get a multiarch gdb (or a cross arm gdb and edit .cargo/config accordingly)
  • Get rustup
  • rustup override add nightly
  • rustup target add thumbv7em-none-eabihf
  • openocd -f stabilizer.cfg and leave it running
  • cargo run --release

Protocol

Stabilizer can be configured via newline-delimited JSON over TCP. It listens on port 1235. stabilizer.py contains a reference implementation of the protocol.