implement embedded-hal aplha SPI traits #488
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements the latest embedded-hal v1.0.0-alpha.9 SPI traits (just the blocking traits).
Summary
Took advice straight from the repo to do it.
https://github.com/rust-embedded/embedded-hal/blob/9eb6dabe4694d7bf6400de7c10665d6439b0f370/embedded-hal/src/spi.rs#L132-L142
Logic for read and write was also inspired by the embassy project: it took me a really long time to realize that you still have to send empty words to do read-only and drop reads to do write-only, and the embassy implementation demonstrated that.
https://github.com/embassy-rs/embassy/blob/master/embassy-rp/src/spi.rs
Testing
I tested this by rewriting mcp2515 crate implementation to use
SpiDevice
.Other notes:
This will affect the existing PR #469. cc: @pietgeursen