pounder_test/README.md

49 lines
1.2 KiB
Markdown

# Stabilizer Firmware
![Flow diagram](stabilizer_pid.svg)
![Hardware](https://github.com/sinara-hw/Stabilizer/wiki/Stabilizer_v1.0_top_small.jpg)
## 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](src/main.rs)
* 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](https://rustup.rs/)
* `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](stabilizer.py) contains a reference
implementation of the protocol.