From 5b67ebe7f0f8717fa6c81a8c0557a9842a9c644f Mon Sep 17 00:00:00 2001 From: John Madden Date: Fri, 22 May 2026 11:21:42 +0200 Subject: [PATCH 1/4] Added set_speed call for i2c --- boards/lora_e5_mini/src/main.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/boards/lora_e5_mini/src/main.rs b/boards/lora_e5_mini/src/main.rs index 26f1e7cc28..47dd514b14 100644 --- a/boards/lora_e5_mini/src/main.rs +++ b/boards/lora_e5_mini/src/main.rs @@ -421,6 +421,7 @@ pub unsafe fn main() { }); base_peripherals.i2c2.enable_clock(); + base_peripherals.i2c2.set_speed(stm32wle5jc::i2c::I2CSpeed::Speed100k); let i2c_master = components::i2c::I2CMasterDriverComponent::new( board_kernel, capsules_core::i2c_master::DRIVER_NUM, From ed64305697a92624ab51b8ccf72ad035583b2792 Mon Sep 17 00:00:00 2001 From: John Madden Date: Fri, 29 May 2026 11:02:34 -0700 Subject: [PATCH 2/4] Set SCL to open drain --- boards/lora_e5_mini/src/main.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/boards/lora_e5_mini/src/main.rs b/boards/lora_e5_mini/src/main.rs index 47dd514b14..61f98b2332 100644 --- a/boards/lora_e5_mini/src/main.rs +++ b/boards/lora_e5_mini/src/main.rs @@ -415,6 +415,7 @@ 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); From 7c9e2cc3f825b85f011800a8dc4eb20cafd90d53 Mon Sep 17 00:00:00 2001 From: John Madden Date: Fri, 29 May 2026 11:03:02 -0700 Subject: [PATCH 3/4] Fixed i2c timing Also updated the default speed to 400k --- boards/lora_e5_mini/src/main.rs | 2 +- chips/stm32wle5xx/src/i2c.rs | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/boards/lora_e5_mini/src/main.rs b/boards/lora_e5_mini/src/main.rs index 61f98b2332..ca09fc50b3 100644 --- a/boards/lora_e5_mini/src/main.rs +++ b/boards/lora_e5_mini/src/main.rs @@ -422,7 +422,7 @@ pub unsafe fn main() { }); base_peripherals.i2c2.enable_clock(); - base_peripherals.i2c2.set_speed(stm32wle5jc::i2c::I2CSpeed::Speed100k); + 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); } } From 3c5b7574abad0b39df6e4e1fc1e4b151dbd631ac Mon Sep 17 00:00:00 2001 From: John Madden Date: Fri, 29 May 2026 11:38:10 -0700 Subject: [PATCH 4/4] Prepush fixes --- boards/lora_e5_mini/src/main.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/boards/lora_e5_mini/src/main.rs b/boards/lora_e5_mini/src/main.rs index ca09fc50b3..70e42e38b6 100644 --- a/boards/lora_e5_mini/src/main.rs +++ b/boards/lora_e5_mini/src/main.rs @@ -422,7 +422,9 @@ pub unsafe fn main() { }); base_peripherals.i2c2.enable_clock(); - base_peripherals.i2c2.set_speed(stm32wle5jc::i2c::I2CSpeed::Speed400k); + base_peripherals + .i2c2 + .set_speed(stm32wle5jc::i2c::I2CSpeed::Speed400k); let i2c_master = components::i2c::I2CMasterDriverComponent::new( board_kernel, capsules_core::i2c_master::DRIVER_NUM,