diff --git a/boards/lora_e5_mini/src/main.rs b/boards/lora_e5_mini/src/main.rs index 26f1e7cc28..70e42e38b6 100644 --- a/boards/lora_e5_mini/src/main.rs +++ b/boards/lora_e5_mini/src/main.rs @@ -415,12 +415,16 @@ pub unsafe fn main() { // SCL gpio_ports.get_pin(PinId::PB15).map(|pin| { + pin.set_mode_output_opendrain(); pin.set_mode(stm32wle5jc::gpio::Mode::AlternateFunctionMode); pin.set_floating_state(kernel::hil::gpio::FloatingState::PullNone); pin.set_alternate_function(stm32wle5jc::gpio::AlternateFunction::AF4); }); base_peripherals.i2c2.enable_clock(); + base_peripherals + .i2c2 + .set_speed(stm32wle5jc::i2c::I2CSpeed::Speed400k); let i2c_master = components::i2c::I2CMasterDriverComponent::new( board_kernel, capsules_core::i2c_master::DRIVER_NUM, diff --git a/chips/stm32wle5xx/src/i2c.rs b/chips/stm32wle5xx/src/i2c.rs index 4373fcc665..0c6070c96d 100644 --- a/chips/stm32wle5xx/src/i2c.rs +++ b/chips/stm32wle5xx/src/i2c.rs @@ -326,10 +326,13 @@ impl<'a> I2C<'a> { match speed { I2CSpeed::Speed100k => { - self.registers.timingr.set(0x00303D5B); + self.registers.timingr.set(0xE14); + + //self.registers.timingr.set(0x00303D5B); } I2CSpeed::Speed400k => { - self.registers.timingr.set(0x0010061A); + self.registers.timingr.set(0x4); + //self.registers.timingr.set(0x0010061A); } }