Skip to content

Commit 2b8a2c5

Browse files
committed
fmpi2c ext
1 parent 1919a74 commit 2b8a2c5

File tree

5 files changed

+24
-12
lines changed

5 files changed

+24
-12
lines changed

examples/i2c_scanner.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use rtt_target::{rprint, rprintln, rtt_init_print};
1010

1111
use cortex_m_rt::entry;
1212

13-
use stm32f4xx_hal::{self as hal, gpio::GpioExt, i2c::I2c, pac, prelude::*};
13+
use stm32f4xx_hal::{gpio::GpioExt, i2c, pac, prelude::*};
1414

1515
const VALID_ADDR_RANGE: Range<u8> = 0x08..0x78;
1616

@@ -26,11 +26,13 @@ fn main() -> ! {
2626
// Configure I2C1
2727
let scl = gpiob.pb8;
2828
let sda = gpiob.pb7;
29-
let mut i2c = I2c::new(
29+
let mut i2c = i2c::I2c::new(
3030
dp.I2C1,
3131
(scl, sda),
32-
hal::i2c::Mode::standard(100.kHz()),
32+
i2c::Mode::standard(100.kHz()),
3333
&mut rcc,
34+
#[cfg(feature = "f7")]
35+
i2c::ClockSource::Apb,
3436
);
3537

3638
rprintln!("Start i2c scanning...");

examples/rng-display.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use embedded_graphics::{
3333

3434
use ssd1306::{prelude::*, I2CDisplayInterface, Ssd1306};
3535

36-
use hal::{i2c::I2c, pac, prelude::*};
36+
use hal::{pac, prelude::*};
3737
use rand_core::RngCore;
3838

3939
use core::fmt::Write;
@@ -69,7 +69,7 @@ fn main() -> ! {
6969
let gpiob = dp.GPIOB.split(&mut rcc);
7070
let scl = gpiob.pb8;
7171
let sda = gpiob.pb9;
72-
let i2c = I2c::new(dp.I2C1, (scl, sda), 400.kHz(), &mut rcc);
72+
let i2c = dp.I2C1.i2c((scl, sda), 400.kHz(), &mut rcc);
7373

7474
// Set up the display
7575
let interface = I2CDisplayInterface::new(i2c);

examples/stopwatch-with-ssd1306-and-interrupts-and-dma-i2c.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ use crate::hal::{
2525
dma::{Stream1, StreamsTuple},
2626
gpio::*,
2727
i2c::dma::{I2CMasterDma, NoDMA, TxDMA},
28-
i2c::I2c,
2928
interrupt, pac,
3029
pac::{DMA1, I2C1},
3130
prelude::*,
@@ -162,7 +161,7 @@ fn main() -> ! {
162161
if let (Some(mut dp), Some(cp)) = (pac::Peripherals::take(), cortex_m::Peripherals::take()) {
163162
let mut rcc = setup_clocks(dp.RCC);
164163
let gpiob = dp.GPIOB.split(&mut rcc);
165-
let i2c = I2c::new(dp.I2C1, (gpiob.pb8, gpiob.pb9), 400.kHz(), &mut rcc);
164+
let i2c = dp.I2C1.i2c((gpiob.pb8, gpiob.pb9), 400.kHz(), &mut rcc);
166165

167166
// Then convert it to DMA
168167
let streams = StreamsTuple::new(dp.DMA1, &mut rcc);

examples/stopwatch-with-ssd1306-and-interrupts.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ use stm32f4xx_hal::{self as hal, rcc::Config};
2323

2424
use crate::hal::{
2525
gpio::{Edge, Input, PC13},
26-
i2c::I2c,
2726
interrupt, pac,
2827
prelude::*,
2928
rcc::Rcc,
@@ -64,7 +63,7 @@ fn main() -> ! {
6463
if let (Some(mut dp), Some(cp)) = (pac::Peripherals::take(), cortex_m::Peripherals::take()) {
6564
let mut rcc = setup_clocks(dp.RCC);
6665
let gpiob = dp.GPIOB.split(&mut rcc);
67-
let i2c = I2c::new(dp.I2C1, (gpiob.pb8, gpiob.pb9), 400.kHz(), &mut rcc);
66+
let i2c = dp.I2C1.i2c((gpiob.pb8, gpiob.pb9), 400.kHz(), &mut rcc);
6867

6968
let mut syscfg = dp.SYSCFG.constrain(&mut rcc);
7069

src/fmpi2c.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,12 @@ pub trait I2cExt: Sized + Instance {
253253
pins: (impl Into<Self::Scl>, impl Into<Self::Sda>),
254254
mode: impl Into<Mode>,
255255
rcc: &mut Rcc,
256-
clocks: ClockSource,
256+
) -> I2c<Self>;
257+
fn i2c_hsi(
258+
self,
259+
pins: (impl Into<Self::Scl>, impl Into<Self::Sda>),
260+
mode: impl Into<Mode>,
261+
rcc: &mut Rcc,
257262
) -> I2c<Self>;
258263
}
259264

@@ -263,9 +268,16 @@ impl<I2C: Instance> I2cExt for I2C {
263268
pins: (impl Into<Self::Scl>, impl Into<Self::Sda>),
264269
mode: impl Into<Mode>,
265270
rcc: &mut Rcc,
266-
clocks: ClockSource,
267271
) -> I2c<Self> {
268-
I2c::new(self, pins, mode, rcc, clocks)
272+
I2c::new(self, pins, mode, rcc, ClockSource::Apb)
273+
}
274+
fn i2c_hsi(
275+
self,
276+
pins: (impl Into<Self::Scl>, impl Into<Self::Sda>),
277+
mode: impl Into<Mode>,
278+
rcc: &mut Rcc,
279+
) -> I2c<Self> {
280+
I2c::new(self, pins, mode, rcc, ClockSource::Hsi)
269281
}
270282
}
271283

0 commit comments

Comments
 (0)