diff --git a/README.md b/README.md index 24b83f1..feb0bb0 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,10 @@ ## 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 +This firmware offers a library of hardware and software functionality targeting the use of the Stabilizer hardware in various digital signal processing applications commonly occurring in Quantum Technology applications. +It provides abstractions over the fast analog inputs and outputs, time stamping, Pounder DDS interfaces and a collection of tailored and optimized digital signal processing algorithms (IIR, FIR, Lockin, PLL, reciprocal PLL, Unwrapper, Lowpass, Cosine-Sine, Atan2). +An application can compose and configure these hardware and software components to implement different use cases. +Several applications are provides by default: ### Dual-IIR @@ -31,28 +31,34 @@ to implement different use cases. Several applications are provides by default ### Lockin +* Up to 800 kHz sampling +* Up to 400 kHz modulation frequency +* Reciprocal PLL for external reference +* Internal reference +* Adjustable PLL and locking time constants +* Adjustable phase offset and harmonic index +* Different output modes (in-phase, quadrature, magnitude, log2 power, phase, frequency) + ## Minimal bootstrapping documentation * Clone or download this * Get [rustup](https://rustup.rs/) -* `rustup target add thumbv7em-none-eabihf` -* `cargo build --release` -* Minimum supported Rust version (MSRV) is 1.51.0 +* Minimum supported Rust version (MSRV) is 1.52.0 +* Install target support: `rustup target add thumbv7em-none-eabihf` +* Install `probe-run`: `cargo install probe-run` +* `cargo run --release --bin dual-iir` * 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 probe-run +## Alternative flashing tools -* Install `probe-run`: `cargo install probe-run` -* Run it: `probe-run --chip STM32H743ZITx target/thumbv7em-none-eabihf/release/dual-iir` - -### Using Cargo-embed +### Cargo-embed * Install `cargo-embed`: `cargo install cargo-embed` * Program the device: `cargo embed --bin dual-iir --release` -### Using GDB/OpenOCD +### GDB/OpenOCD * Get a recent openocd, a JTAG adapter ("st-link" or some clone) and everything connected and permissions setup. Most @@ -62,7 +68,7 @@ to implement different use cases. Several applications are provides by default * `openocd -f stabilizer.cfg` and leave it running * `cargo run --release` -### Using USB-DFU +### USB-DFU * 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` @@ -71,7 +77,7 @@ to implement different use cases. Several applications are provides by default * Short JC2/BOOT * `dfu-util -a 0 -s 0x08000000:leave -D dual-iir.bin` -### Using ST-Link virtual mass storage +### ST-Link virtual mass storage * Prepare `dual-iir.bin` like above * Connect the ST-Link debugger @@ -82,3 +88,4 @@ to implement different use cases. Several applications are provides by default Stabilizer can be configured via MQTT. Refer to [`miniconf`](https://github.com/quartiq/miniconf) for more information about topics. A basic command line interface is available in [`miniconf.py`](miniconf.py). +Telemetry is published via MQTT as well.