Personal collection of no_std embedded drivers under the ull-* naming
scheme.
The point is simple: keep drivers I understand, can use on hardware, and can change without fighting layers I do not need. The main path should be practical and clear, with lower-level escape hatches when experimenting with device behavior makes sense.
- first-party drivers I fully understand and maintain
no_stdby defaultembedded-hal1.0 compatibility- one crate per device family
- practical examples and tests
- no shared crate until multiple drivers actually need one
ull-drivers-rs/
├── drivers/
│ ├── ull-sht3x/
│ └── ull-ssd1306/
├── docs/
│ └── driver-style.md
├── Cargo.toml
└── LICENSE
drivers/ull-sht3x:embedded-hal1.0 I2C driver for Sensirion SHT3x-DIS humidity and temperature sensors.drivers/ull-ssd1306:embedded-hal1.0 SSD1306 display driver with optionalembedded-graphics-coresupport.
- This workspace currently keeps shared code inside each driver until multiple crates expose a real common layer.
- Driver style is documented in
docs/driver-style.md; use it as the source of truth for newull-*drivers. - Workspace-wide settings currently centralize
edition,license, and repository metadata. - Workspace-wide Rust linting forbids
unsafecode.
The repo pins Rust 1.85.0. Useful checks while changing code:
cargo fmt --check --all
cargo clippy --locked --workspace --all-targets --all-features -- -D warnings
cargo test --locked --all-targets --all-features