ff10987618
379: build(deps): bump ndarray from 0.15.2 to 0.15.3 r=ryan-summers a=dependabot[bot] Bumps [ndarray](https://github.com/rust-ndarray/ndarray) from 0.15.2 to 0.15.3. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-ndarray/ndarray/blob/master/RELEASES.md">ndarray's changelog</a>.</em></p> <blockquote> <h1>Version 0.15.3 (2021-06-05)</h1> <h2>New features</h2> <ul> <li> <p>New methods <code>.last/_mut()</code> for arrays and array views by [<a href="https://github.com/jturner314"><code>@jturner314</code></a>]</p> <p><a href="https://github-redirect.dependabot.com/rust-ndarray/ndarray/pull/1013">rust-ndarray/ndarray#1013</a></p> </li> </ul> <h2>Bug fixes</h2> <ul> <li> <p>Fix <code>as_slice_memory_order_mut()</code> so that it never changes strides (the memory layout) of the array when called.</p> <p>This was a bug that impacted <code>ArcArray</code> (and for example not <code>Array</code> or <code>ArrayView/Mut</code>), and multiple methods on <code>ArcArray</code> that use <code>as_slice_memory_order_mut</code> (for example <code>map_mut</code>). Fix by [<a href="https://github.com/jturner314"><code>@jturner314</code></a>].</p> <p><a href="https://github-redirect.dependabot.com/rust-ndarray/ndarray/pull/1019">rust-ndarray/ndarray#1019</a></p> </li> </ul> <h2>API changes</h2> <ul> <li> <p>Array1 now implements <code>From<Box<[T]>></code> by [<a href="https://github.com/jturner314"><code>@jturner314</code></a>]</p> <p><a href="https://github-redirect.dependabot.com/rust-ndarray/ndarray/pull/1016">rust-ndarray/ndarray#1016</a></p> </li> <li> <p>ArcArray now implements <code>From<Array<...>></code> by [<a href="https://github.com/jturner314"><code>@jturner314</code></a>]</p> <p><a href="https://github-redirect.dependabot.com/rust-ndarray/ndarray/pull/1021">rust-ndarray/ndarray#1021</a></p> </li> <li> <p>CowArray now implements RawDataSubst by [<a href="https://github.com/jturner314"><code>@jturner314</code></a>]</p> <p><a href="https://github-redirect.dependabot.com/rust-ndarray/ndarray/pull/1020">rust-ndarray/ndarray#1020</a></p> </li> </ul> <h2>Other changes</h2> <ul> <li> <p>Mention unsharing in <code>.as_mut_ptr</code> docs by [<a href="https://github.com/jturner314"><code>@jturner314</code></a>]</p> <p><a href="https://github-redirect.dependabot.com/rust-ndarray/ndarray/pull/1017">rust-ndarray/ndarray#1017</a></p> </li> <li> <p>Clarify and fix minor errors in push/append method docs by [<a href="https://github.com/bluss"><code>@bluss</code></a>] f21c668a</p> </li> <li> <p>Fix several warnings in doc example code by [<a href="https://github.com/bluss"><code>@bluss</code></a>]</p> <p><a href="https://github-redirect.dependabot.com/rust-ndarray/ndarray/pull/1009">rust-ndarray/ndarray#1009</a></p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
---|---|---|
.cargo | ||
.github | ||
ad9959 | ||
doc | ||
dsp | ||
hitl | ||
scripts | ||
src | ||
.gitignore | ||
.rustfmt.toml | ||
build.rs | ||
Cargo.lock | ||
Cargo.toml | ||
cargosha256-dual-iir.nix | ||
CHANGELOG.md | ||
Embed.toml | ||
LICENSE | ||
memory.x | ||
miniconf.py | ||
openocd.gdb | ||
README.md | ||
requirements.txt | ||
stabilizer_pid.png | ||
stabilizer_pid.svg | ||
stabilizer.cfg |
Stabilizer Firmware
Hardware
Applications
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. 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
- 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
- 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
- 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.
Alternative flashing tools
Cargo-embed
- Install
cargo-embed
:cargo install cargo-embed
- Program the device:
cargo embed --bin dual-iir --release
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
USB-DFU
- 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
- Install the DFU USB tool (
dfu-util
) - Connect to the Micro USB connector below the RJ45
- Short JC2/BOOT
dfu-util -a 0 -s 0x08000000:leave -D dual-iir.bin
ST-Link virtual mass storage
- Prepare
dual-iir.bin
like above - Connect the ST-Link debugger
- Copy
dual-iir.bin
to theNODE_H743ZI
virtual mass storage device
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
.
Telemetry is published via MQTT as well.