README: update
This commit is contained in:
parent
b49461448c
commit
d6be11b351
52
README.md
52
README.md
@ -3,42 +3,44 @@
|
|||||||
|
|
||||||
# Stabilizer Firmware
|
# Stabilizer Firmware
|
||||||
|
|
||||||
|
## Hardware
|
||||||
|
|
||||||
|
[![Hardware](https://github.com/sinara-hw/Stabilizer/wiki/Stabilizer_v1.0_top_small.jpg)](https://github.com/sinara-hw/Stabilizer)
|
||||||
|
|
||||||
|
## Applications
|
||||||
|
|
||||||
|
The Stabilizer firmware offeres a library of hardware and software functionality
|
||||||
|
exposing input/output, timing, and digital signal processing features.
|
||||||
|
An application can compose and configure these hardware and software components
|
||||||
|
to implement different use cases. Several applications are provides by default
|
||||||
|
|
||||||
|
### Dual-IIR
|
||||||
|
|
||||||
![Flow diagram](stabilizer_pid.svg)
|
![Flow diagram](stabilizer_pid.svg)
|
||||||
|
|
||||||
![Hardware](https://github.com/sinara-hw/Stabilizer/wiki/Stabilizer_v1.0_top_small.jpg)
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
* dual channel
|
* dual channel
|
||||||
* SPI ADC
|
* SPI ADC
|
||||||
* SPI DAC
|
* SPI DAC
|
||||||
* 500 kHz rate, timed sampling
|
* up to 800 kHz rate, timed sampling
|
||||||
* 2 µs latency, unmatched between channels
|
* down to 2 µs latency
|
||||||
* f32 IIR math
|
* f32 IIR math
|
||||||
* generic biquad (second order) IIR filter
|
* generic biquad (second order) IIR filter
|
||||||
* anti-windup
|
* anti-windup
|
||||||
* derivative kick avoidance
|
* derivative kick avoidance
|
||||||
|
|
||||||
## Limitations/TODOs
|
### Lockin external
|
||||||
|
|
||||||
* Fixed AFE gains
|
### Lockin internal
|
||||||
* The IP and MAC address are [hardcoded](src/hardware/configuration.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
|
## Minimal bootstrapping documentation
|
||||||
|
|
||||||
* Clone or download this
|
* Clone or download this
|
||||||
* Get [rustup](https://rustup.rs/)
|
* Get [rustup](https://rustup.rs/)
|
||||||
* Get [cargo-binutils](https://github.com/rust-embedded/cargo-binutils/)
|
|
||||||
* `rustup target add thumbv7em-none-eabihf`
|
* `rustup target add thumbv7em-none-eabihf`
|
||||||
* `cargo build --release`
|
* `cargo build --release`
|
||||||
* Do not try the debug (default) mode. It is guaranteed to panic.
|
* When using debug (non `--release`) mode, increase the sample interval significantly.
|
||||||
|
The added error checking code and missing optimizations may lead to the code
|
||||||
|
missing deadlines and panicing.
|
||||||
|
|
||||||
### Using Cargo-embed
|
### Using Cargo-embed
|
||||||
|
|
||||||
@ -55,30 +57,24 @@ See https://github.com/sinara-hw/Stabilizer
|
|||||||
* `openocd -f stabilizer.cfg` and leave it running
|
* `openocd -f stabilizer.cfg` and leave it running
|
||||||
* `cargo run --release`
|
* `cargo run --release`
|
||||||
|
|
||||||
[^swd]: Build a cable: connect a standard 8 conductor ribbon with the wires numbered
|
|
||||||
`1-8` to the pins on the St-Link v2 single row 2.54mm connector as `647513(82)`
|
|
||||||
(`(i)` marks an unused wire)
|
|
||||||
and to the [1.27mm dual row](https://www.digikey.de/short/p41h0n) on Stabilizer as `657483x2x1`
|
|
||||||
(`x` marks an unused pin, enumeration is standard for dual row, as in the
|
|
||||||
schematic).
|
|
||||||
It's just folding the ribbon between wires `5` and `6`. The signals on the ribbon
|
|
||||||
are then `NRST,TDI,TDO,TCK,TMS,3V3,GND,GND`.
|
|
||||||
|
|
||||||
### Using USB-DFU
|
### Using USB-DFU
|
||||||
|
|
||||||
* Install the DFU USB tool (`dfu-util`)
|
* Install the DFU USB tool (`dfu-util`)
|
||||||
* Connect to the Micro USB connector below the RJ45
|
* Connect to the Micro USB connector below the RJ45
|
||||||
* Short JC2/BOOT
|
* Short JC2/BOOT
|
||||||
|
* Get [cargo-binutils](https://github.com/rust-embedded/cargo-binutils/)
|
||||||
* `cargo objcopy --release --bin dual-iir -- -O binary dual-iir.bin` or `arm-none-eabi-objcopy -O binary target/thumbv7em-none-eabihf/release/dual-iir dual-iir.bin`
|
* `cargo objcopy --release --bin dual-iir -- -O binary dual-iir.bin` or `arm-none-eabi-objcopy -O binary target/thumbv7em-none-eabihf/release/dual-iir dual-iir.bin`
|
||||||
* `dfu-util -a 0 -s 0x08000000:leave -D dual-iir.bin`
|
* `dfu-util -a 0 -s 0x08000000:leave -D dual-iir.bin`
|
||||||
|
|
||||||
### Using ST-Link virtual mass storage
|
### Using ST-Link virtual mass storage
|
||||||
|
|
||||||
|
* Get [cargo-binutils](https://github.com/rust-embedded/cargo-binutils/)
|
||||||
* `cargo objcopy --release --bin dual-iir -- -O binary dual-iir.bin` or `arm-none-eabi-objcopy -O binary target/thumbv7em-none-eabihf/release/dual-iir dual-iir.bin`
|
* `cargo objcopy --release --bin dual-iir -- -O binary dual-iir.bin` or `arm-none-eabi-objcopy -O binary target/thumbv7em-none-eabihf/release/dual-iir dual-iir.bin`
|
||||||
* Connect the ST-Link debugger
|
* Connect the ST-Link debugger
|
||||||
* copy `dual-iir.bin` to the `NODE_H743ZI` USB disk
|
* copy `dual-iir.bin` to the `NODE_H743ZI` USB disk
|
||||||
|
|
||||||
## Protocol
|
## Protocol
|
||||||
|
|
||||||
Stabilizer can be configured via MQTT under the topic `stabilizer/settings/<setting>`. Refer to
|
Stabilizer can be configured via MQTT. Refer to
|
||||||
[`miniconf`](https://github.com/quartiq/miniconf) for more information about topics.
|
[`miniconf`](https://github.com/quartiq/miniconf) for more information about topics.
|
||||||
|
A basic command line interface is available in [`miniconf.py`](miniconf.py).
|
||||||
|
Loading…
Reference in New Issue
Block a user