Go to file
Ryan Summers e54a33797c Updating comment about time 2021-03-17 14:54:57 +01:00
.cargo cargo: go back to target-cpu=cortex-m4 2020-12-10 17:53:45 +01:00
.github ci: cron daily 2021-02-23 17:31:44 +01:00
ad9959 Fixing pounder timestamps after manual testing 2020-12-15 13:13:05 +01:00
doc cargo: tweak 2019-03-29 19:34:31 +01:00
dsp Updating miniconf dependencies 2021-03-01 14:46:12 +01:00
src Updating comment about time 2021-03-17 14:54:57 +01:00
.gitignore Update .gitignore 2021-02-02 18:03:46 +01:00
.rustfmt.toml travis: clippy and rustfmt 2019-11-24 15:10:01 +01:00
CHANGELOG.md add changelog 2019-05-28 13:23:31 +02:00
Cargo.lock Updating dependencies 2021-03-17 14:47:14 +01:00
Cargo.toml Adding unstaged changes 2021-03-15 12:30:18 +01:00
Embed.toml Adding Embed.toml file 2021-02-02 17:34:49 +01:00
LICENSE readme, license 2019-03-20 18:33:35 +00:00
README.md README: update 2021-03-03 11:38:28 +01:00
cargosha256-dual-iir.nix update cargosha256 2021-02-16 11:45:44 +08:00
memory.x Marking AXISRAM as NOLOAD 2020-11-24 16:46:14 +01:00
miniconf.py cli: print response 2021-03-03 14:42:33 +01:00
openocd.gdb Removing invalid GDB command 2021-01-29 10:18:47 +01:00
stabilizer.cfg working 2019-03-18 13:10:00 +00:00
stabilizer_pid.png png 2019-05-09 16:40:35 +02:00
stabilizer_pid.svg README: diagram and photo 2019-05-09 16:05:36 +02:00

README.md

QUARTIQ Matrix Chat HITL (private)

Stabilizer Firmware

Hardware

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

Flow diagram

  • 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 external

Lockin internal

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 running
  • cargo 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 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
  • Get 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
  • Connect the ST-Link debugger
  • copy dual-iir.bin to the NODE_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.