Robert Jördens
66184ca089
* origin/master: (34 commits) Simplifying unit conversions Cleaning up conversion + comments Addressing review feedback Update src/hardware/dac.rs Renaming AdcSample -> AdcCode Updating float conversion Adding adc/dac code conversion utilities Simplifying settings lock Updating after review Updating delay Fixing merge Formatting Updating dependencies Fixing clippy Finalizing merge Merging lockin app functions Fixing system timer Fixing build, formatting Adding documentation Renaming files ... |
||
---|---|---|
.cargo | ||
.github | ||
ad9959 | ||
doc | ||
dsp | ||
hitl | ||
src | ||
.gitignore | ||
.rustfmt.toml | ||
CHANGELOG.md | ||
Cargo.lock | ||
Cargo.toml | ||
Embed.toml | ||
LICENSE | ||
README.md | ||
build.rs | ||
cargosha256-dual-iir.nix | ||
memory.x | ||
miniconf.py | ||
openocd.gdb | ||
requirements.txt | ||
stabilizer.cfg | ||
stabilizer_pid.png | ||
stabilizer_pid.svg |
README.md
Stabilizer Firmware
Hardware
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
- dual channel
- SPI ADC
- SPI DAC
- up to 800 kHz rate, timed sampling
- down to 2 µs latency
- f32 IIR math
- generic biquad (second order) IIR filter
- anti-windup
- derivative kick avoidance
Lockin
Minimal bootstrapping documentation
- Clone or download this
- Get rustup
rustup target add thumbv7em-none-eabihf
cargo build --release
- 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
- Install
cargo-embed
:cargo install cargo-embed
- Program the device:
cargo embed --bin dual-iir --release
Using GDB/OpenOCD
- Get a recent openocd, a JTAG adapter ("st-link" or some clone) and everything connected and permissions setup. Most Nucleo boards have a detachable ST-Link v2 and are cheap.[^swd]
- Get a multiarch
gdb
(or a cross arm gdb and edit.cargo/config
accordingly) openocd -f stabilizer.cfg
and leave it runningcargo run --release
Using USB-DFU
- Install the DFU USB tool (
dfu-util
) - Connect to the Micro USB connector below the RJ45
- Short JC2/BOOT
- Get cargo-binutils
cargo objcopy --release --bin dual-iir -- -O binary dual-iir.bin
orarm-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
Using ST-Link virtual mass storage
- Get cargo-binutils
cargo objcopy --release --bin dual-iir -- -O binary dual-iir.bin
orarm-none-eabi-objcopy -O binary target/thumbv7em-none-eabihf/release/dual-iir dual-iir.bin
- Connect the ST-Link debugger
- copy
dual-iir.bin
to theNODE_H743ZI
USB disk
Protocol
Stabilizer can be configured via MQTT. Refer to
miniconf
for more information about topics.
A basic command line interface is available in miniconf.py
.