All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
v0.11.0 - 2024-12-02
- Support for Urukul-AD9912 as a downstream EEM
- Various dependencies bumped (among them Miniconf v0.13 -> v0.18)
- Serial terminal is available on USB for settings configurations
- Reboot to DFU support added via the serial terminal for remote bootloading
- The
meta
topic now contains metadata about the compiler, firmware, and hardware similar to Booster - Panic information is now persisted after reboot and available via telemetry and the USB serial console.
- Device operational settings can now be modified, stored and cleared from device flash using the USB serial console. Run-time settings are unique to each application, but network settings are unified for all applications (i.e. lockin, dual-iir, etc.)
- Broker and static IP/DHCP are no longer configured at compile time, but is maintained in device flash and can be changed via the USB port.
- MSRV removed. Stabilizer uses latest stable rust.
- The IIR (biquad) filter used for PID action has changed its serialization format.
See also the
iir_coefficients
Python CLI implementation. - The stream target is now configures as a
1.2.3.4:4321
string
- Fixed an issue where the device would sometimes not enumerate on Windows
- Fixed a defect where powering up with Pounder attached would cause an internal panic.
idsp
crate update to 0.10:lockin
now uses a double second order lowpass.- The
batch_size
field in the the UDP stream frame now contains the number of batches not the number of samples per batch. It has been renamed tobatches
. - All MQTT clients upgraded and APIs updated.
- MQTT broker may now be specified via DNS hostnames
hitl/streaming.py
no longer requires a prefix- Streaming now supports UDP multicast addresses
v0.8.1 - 2022-11-14
- Fixed the python package dependencies
v0.8.0 - 2022-11-07
- [breaking] MSRV bumped to 1.63 (
array_from_fn
viaenum_iterator
) - [breaking] Bumped dependencies on
miniconf
,minimq
leading to changes in theMiniconf
settings API - Bumped HAL dependency to fix a crucial I2C bug
- Added gain limits for
iir_coefficients
- Added a IIR transfer function plotting tool
- Fixed a bug in the Python telemetry client that led to no data being returned
- EEM Gpio pins are now available from
setup()
- Added white noise output to
signal_generator
v0.7.0 - 2022-08-10
- Optional specification of a static IP address (#509)
- Temperature sensor measurement for Pounder and Stabilizer's CPU has been added #575
- External clock support for Pounder
- Auxiliary ADC support for Pounder
- Minimum supported Rust version bumped to 1.62
- The
pounder_v1_1
feature has been replaced by thepounder_v1_0
feature with inverse meaning. - The
Telemetry
python client has been integrated into thestabilizer
Python library
- Fixed panics when using a batch size of 1 (#540)
- Fixed an issue where startup delays were 1/4 of what they should be (#524)
- Fixed Pounder GPIO extender issues by rewriting the
mcp280xx
crate - Fixed improper calculation of the signal generator phase increment (#543)
v0.6.0 - 2022-02-11
- Telemetry (#341)
- Logging via RTT (real time tracing) over SWD/JTAG instead of semihosting for fast and low-overhead debugging (#393 #391 #358)
- Settings structures now automatically publish after a short delay on boot (#475)
- Full-rate data streaming (e.g. complete raw ADC/DAC data) via Ethernet/UDP (#414 #394 #380)
- Compilation specifically targeting Cortex-M7 instruction set for faster code (#358)
- Fast double-buffered DMA pattern for less overhead (#367)
- Integrated signal generator for stimulus and scan waveform generation (#434 #388)
- Expanded code documentation (#452 #346)
- Quick-start guide and book (#431 #430 #401 #404 #483)
- Expanded and revised python API including the computation of IIR coefficients from PID gains (#472 #471 #451 #427)
- Device MQTT broker connection status indicated via MQTT (#468 #441)
- The signal generator supports adjusting its phase (#505)
- Const generics, bumping the MSRV to 1.51.0 (#355 etc)
lockin-internal
andlockin-external
have been merged intolockin
(#352)- Set target CPU to cortex-m7
- Process routine can be executed from fast closely coupled memory with wide bus for faster execution (#420)
- Relicensed as MIT/Apache (#419 #416)
- Minimum supported Rust version bumped to 1.57
- Minimized DAC output pulses during boot (#453)
v0.5.0 - 2021-04-21
- Batch sample processing
- DMA for ADC and DAC batches
- Pounder profile streaming
- DSP library with lots of optimized algorithms
- Digital input support
- Hardware in the loop continuous integration testing
- Dependency updates
- MQTT settings interface through miniconf/minimq
- Multi-binary support
- DHCP support
- Removed JSON-over-TCP interface
- Robust EEPROM MAC address reading slow supply start
v0.4.1 - 2020-06-23
- Fix DAC clr/ldac, SPI speed
v0.4.0 - 2020-06-22
- Hardware v1.1 only
- AD9959/Pounder support
- HAL port
v0.3.0 - 2020-01-20
- Red LED handling
- EEPROM MAC address reading
- Panic handler cleanup
- Dependency updates (smoltcp, rtfm)
v0.2.0 - 2019-05-28
- Initial basic release
- Ethernet support
- IIR filter code
- ADC and DAC SPI support
- ADC/DAC timing and interrupts
- Board configuration, bootstrap
- First bits of code published