Skip to content

Commit f8f1b71

Browse files
committed
I2s::CK Speed::VeryHigh always
1 parent f3b0f96 commit f8f1b71

File tree

4 files changed

+15
-16
lines changed

4 files changed

+15
-16
lines changed

examples/rtic-dual-i2s-audio-in-out.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ mod app {
8080

8181
use super::hal;
8282

83-
use hal::gpio::{Edge, Speed};
83+
use hal::gpio::Edge;
8484
use hal::i2s::stm32_i2s_v12x::driver::*;
8585
use hal::i2s::DualI2s;
8686
use hal::pac::Interrupt;
@@ -163,14 +163,10 @@ mod app {
163163
.i2s_clk(61440.kHz())
164164
.freeze();
165165

166-
// Workaround for corrupted last bit of data issue, see stm32f411 errata
167-
let mut pb13 = gpiob.pb13.into_alternate::<5>();
168-
pb13.set_speed(Speed::VeryHigh);
169-
170166
// I2S pins: (WS, CK, MCLK, SD) for I2S2
171167
let i2s2_pins = (
172168
gpiob.pb12, //WS
173-
pb13, //CK
169+
gpiob.pb13, //CK
174170
gpioc.pc6, //MCK
175171
gpiob.pb15, //SD
176172
gpiob.pb14, //ExtSD

examples/rtic-i2s-audio-in-out.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ mod app {
8080

8181
use super::hal;
8282

83-
use hal::gpio::{Edge, NoPin, Speed};
83+
use hal::gpio::{Edge, NoPin};
8484
use hal::i2s::stm32_i2s_v12x::driver::*;
8585
use hal::i2s::I2s;
8686
use hal::pac::Interrupt;
@@ -167,14 +167,10 @@ mod app {
167167
.i2s_clk(61440.kHz())
168168
.freeze();
169169

170-
// Workaround for the corrupted last bit of data issue, see stm32f411 errata
171-
let mut pb13 = gpiob.pb13.into_alternate::<5>();
172-
pb13.set_speed(Speed::VeryHigh); //CK
173-
174170
// I2S pins: (WS, CK, MCLK, SD) for I2S2
175171
let i2s2_pins = (
176172
gpiob.pb12, //WS
177-
pb13, //CK
173+
gpiob.pb13, //CK
178174
gpioc.pc6, //MCK
179175
gpiob.pb15, //SD
180176
);

src/gpio/alt.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ pub trait I2cCommon {
348348

349349
// I2S pins
350350
pub trait I2sCommon {
351-
type Ck;
351+
type Ck: crate::gpio::PinSpeed;
352352
type Sd;
353353
type Ws: crate::gpio::ReadPin + crate::gpio::ExtiPin;
354354
}

src/i2s.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//! these chips because their `I2S2EXT` and `I2S3EXT` peripherals are missing from their package
77
//! access crate.
88
9-
use crate::gpio::{self, NoPin};
9+
use crate::gpio::{self, NoPin, PinSpeed, Speed};
1010
use crate::pac;
1111
#[allow(unused)]
1212
use crate::rcc::{self, Clocks, Reset};
@@ -142,7 +142,13 @@ impl<SPI: Instance> I2s<SPI> {
142142
SPI::reset_unchecked();
143143
}
144144

145-
let pins = (pins.0.into(), pins.1.into(), pins.2.into(), pins.3.into());
145+
let pins = (
146+
pins.0.into(),
147+
// Workaround for corrupted last bit of data issue, see stm32f411 errata
148+
pins.1.into().speed(Speed::VeryHigh),
149+
pins.2.into(),
150+
pins.3.into(),
151+
);
146152

147153
I2s {
148154
spi,
@@ -314,7 +320,8 @@ impl<SPI: DualInstance> DualI2s<SPI> {
314320

315321
let pins = (
316322
pins.0.into(),
317-
pins.1.into(),
323+
// Workaround for corrupted last bit of data issue, see stm32f411 errata
324+
pins.1.into().speed(Speed::VeryHigh),
318325
pins.2.into(),
319326
pins.3.into(),
320327
pins.4.into(),

0 commit comments

Comments
 (0)