Go to file
Robert Jördens 7e48550474
Merge pull request #333 from quartiq/rj/hitl-labeler
ci: add PR labeler
2021-04-09 21:52:21 +02:00
.cargo cargo: go back to target-cpu=cortex-m4 2020-12-10 17:53:45 +01:00
.github ci: add PR labeler 2021-04-09 21:40:58 +02:00
ad9959 Update ad9959/src/lib.rs 2021-04-08 16:05:51 +02:00
doc cargo: tweak 2019-03-29 19:34:31 +01:00
dsp build(deps): bump ndarray from 0.14.0 to 0.15.1 2021-04-07 15:00:06 +00:00
hitl Using manual elf path 2021-04-09 13:43:15 +02:00
src Updating ACR to 32-bit 2021-04-08 14:58:28 +02: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 build(deps): bump ndarray from 0.14.0 to 0.15.1 2021-04-07 15:00:06 +00:00
Cargo.toml dependencies: update, move hashes to Cargo.toml 2021-04-07 16:44:39 +02: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: add both plain-CI and HITL badges 2021-04-06 16:28:56 +02:00
cargosha256-dual-iir.nix update cargosha256 2021-03-31 15:22:24 +08:00
memory.x Marking AXISRAM as NOLOAD 2020-11-24 16:46:14 +01:00
miniconf.py cli,hitl: allow more settings per invokation, expand example 2021-04-08 17:11:44 +02:00
openocd.gdb Removing invalid GDB command 2021-01-29 10:18:47 +01:00
requirements.txt Adding requirements file 2021-04-07 14:04:11 +02: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 Continuous Integration 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.