Merge pull request #3928 from agrif/stm32-i2c-set-config

Fix SetConfig implementation for STM32 I2C v2
This commit is contained in:
Dario Nieuwenhuis 2025-03-28 15:17:21 +00:00 committed by GitHub
commit 3a3ab6cded
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -855,7 +855,12 @@ impl<'d, M: Mode> SetConfig for I2c<'d, M> {
type Config = Hertz;
type ConfigError = ();
fn set_config(&mut self, config: &Self::Config) -> Result<(), ()> {
self.info.regs.cr1().modify(|reg| {
reg.set_pe(false);
});
let timings = Timings::new(self.kernel_clock, *config);
self.info.regs.timingr().write(|reg| {
reg.set_presc(timings.prescale);
reg.set_scll(timings.scll);
@ -864,6 +869,10 @@ impl<'d, M: Mode> SetConfig for I2c<'d, M> {
reg.set_scldel(timings.scldel);
});
self.info.regs.cr1().modify(|reg| {
reg.set_pe(true);
});
Ok(())
}
}