impl SetConfig for stm32 i2c and SPI

This commit is contained in:
Henrik Alsér
2022-07-09 02:28:05 +02:00
parent 85e67d94ad
commit 880b71a1e8
4 changed files with 47 additions and 0 deletions

View File

@ -4,6 +4,7 @@ use core::task::Poll;
use atomic_polyfill::{AtomicUsize, Ordering};
use embassy::waitqueue::AtomicWaker;
use embassy_embedded_hal::SetConfig;
use embassy_hal_common::drop::OnDrop;
use embassy_hal_common::unborrow;
use futures::future::poll_fn;
@ -899,3 +900,19 @@ cfg_if::cfg_if! {
}
}
}
impl<'d, T: Instance> SetConfig for I2c<'d, T> {
type Config = Hertz;
fn set_config(&mut self, config: &Self::Config) {
let timings = Timings::new(T::frequency(), *config);
unsafe {
T::regs().timingr().write(|reg| {
reg.set_presc(timings.prescale);
reg.set_scll(timings.scll);
reg.set_sclh(timings.sclh);
reg.set_sdadel(timings.sdadel);
reg.set_scldel(timings.scldel);
});
}
}
}