stm32-rs / stm32f4xx-hal

A Rust embedded-hal HAL for all MCUs in the STM32 F4 family
BSD Zero Clause License
542 stars 207 forks source link

implementation of SpiDevice for auto NSS (chip select) #744

Open lgjonathan opened 5 months ago

lgjonathan commented 5 months ago

Right now, the spi in the HAL only implements SpiBus, which leaves the CS(NSS) management to user software. If the SpiDevice trait from embedded_hal is implemented, then the user don't have to care about the NSS management since it will be taken care by the hardware.

I'm relatively new to the embedded world and I was wondering if such implementation will be too complicated to pull off. If not, I'm willing to try implement it myself. Would HardwareCS from the stm32h7 be a good reference to begin with?

Thanks

burrbull commented 5 months ago

It would be nice to have hardware NSS support.

But this does not mean you cannot use SpiDevice. You can. With https://docs.rs/embedded-hal-bus/0.1.0/embedded_hal_bus/spi/index.html This is still software NSS implementation. But it does all staff you need itself. The only you need is to wrap SpiBus + OutputPin in one of the xxDevices on initialization.

P.S. We need example in the repo as embedded-hal-bus documentation is not good enough.