Struct stm32_i2s_v12x::driver::DualI2sDriverConfig
source · pub struct DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, STD> { /* private fields */ }
Expand description
Dual I2S driver configuration. This can be used as a dual I2S driver builder.
MS
:Master
orSlave
. It applies to the “main” part only since the extension is always slaveMAIN_DIR
andEXT_DIR
: Communication direction of the main and extension parts; can beTransmit
orReceive
.STD
: I2S standard, egPhilips
Note: because of its typestate, methods of this type don’t modify a config object. They return a new object instead.
Implementations§
source§impl DualI2sDriverConfig<Master, Transmit, Transmit, Philips>
impl DualI2sDriverConfig<Master, Transmit, Transmit, Philips>
sourcepub fn new_master() -> Self
pub fn new_master() -> Self
Create a new default master configuration.
source§impl<MS, MAIN_DIR, EXT_DIR, STD> DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, STD>
impl<MS, MAIN_DIR, EXT_DIR, STD> DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, STD>
sourcepub fn dual_i2s_driver<I: DualI2sPeripheral>(
self,
dual_i2s_peripheral: I
) -> DualI2sDriver<I, MS, MAIN_DIR, EXT_DIR, STD>
pub fn dual_i2s_driver<I: DualI2sPeripheral>( self, dual_i2s_peripheral: I ) -> DualI2sDriver<I, MS, MAIN_DIR, EXT_DIR, STD>
Instantiate the driver by wrapping the given I2sPeripheral
.
§Panics
This method panics if an exact frequency is required and that frequency cannot be set.
source§impl<MS, MAIN_DIR, EXT_DIR, STD> DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, STD>
impl<MS, MAIN_DIR, EXT_DIR, STD> DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, STD>
sourcepub fn direction<NEW_MAIN_DIR, NEW_EXT_DIR>(
self,
_main: NEW_MAIN_DIR,
_ext: NEW_EXT_DIR
) -> DualI2sDriverConfig<MS, NEW_MAIN_DIR, NEW_EXT_DIR, STD>
pub fn direction<NEW_MAIN_DIR, NEW_EXT_DIR>( self, _main: NEW_MAIN_DIR, _ext: NEW_EXT_DIR ) -> DualI2sDriverConfig<MS, NEW_MAIN_DIR, NEW_EXT_DIR, STD>
Configure direction (Transmit
or Receive
) of main and extension part
sourcepub fn standard<NEW_STD>(
self,
_standard: NEW_STD
) -> DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, NEW_STD>where
NEW_STD: I2sStandard,
pub fn standard<NEW_STD>(
self,
_standard: NEW_STD
) -> DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, NEW_STD>where
NEW_STD: I2sStandard,
Select the I2s standard to use
sourcepub fn clock_polarity(self, polarity: ClockPolarity) -> Self
pub fn clock_polarity(self, polarity: ClockPolarity) -> Self
Select steady state clock polarity
sourcepub fn data_format(self, format: DataFormat) -> Self
pub fn data_format(self, format: DataFormat) -> Self
Select data format
sourcepub fn to_slave(self) -> DualI2sDriverConfig<Slave, MAIN_DIR, EXT_DIR, STD>
pub fn to_slave(self) -> DualI2sDriverConfig<Slave, MAIN_DIR, EXT_DIR, STD>
Convert to a slave configuration. This deletes Master Only Settings.
sourcepub fn to_master(self) -> DualI2sDriverConfig<Master, MAIN_DIR, EXT_DIR, STD>
pub fn to_master(self) -> DualI2sDriverConfig<Master, MAIN_DIR, EXT_DIR, STD>
Convert to a master configuration.
source§impl<MAIN_DIR, EXT_DIR, STD> DualI2sDriverConfig<Master, MAIN_DIR, EXT_DIR, STD>
impl<MAIN_DIR, EXT_DIR, STD> DualI2sDriverConfig<Master, MAIN_DIR, EXT_DIR, STD>
sourcepub fn master_clock(self, enable: bool) -> Self
pub fn master_clock(self, enable: bool) -> Self
Enable/Disable Master Clock generation.
This changes the effective sampling rate.
This can be only set and only has meaning for Master mode.
sourcepub fn prescaler(self, odd: bool, div: u8) -> Self
pub fn prescaler(self, odd: bool, div: u8) -> Self
Configure the audio frequency by setting the prescaler with an odd factor and a divider.
The effective sampling frequency is:
i2s_clock / [256 * ((2 * div) + odd)]
when master clock is enabledi2s_clock / [(channel_length * 2) * ((2 * div) + odd)]
when master clock is disabled
i2s_clock
is I2S clock source frequency, and channel_length
is width in bits of the
channel (see DataFormat)
This setting only has meaning and can be only set for master.
§Panics
div
must be at least 2, otherwise this function panics.
sourcepub fn request_frequency(self, freq: u32) -> Self
pub fn request_frequency(self, freq: u32) -> Self
Request an audio sampling frequency.
The effective audio sampling frequency may be different.
sourcepub fn require_frequency(self, freq: u32) -> Self
pub fn require_frequency(self, freq: u32) -> Self
Require exactly this audio sampling frequency.
If the required frequency can not bet set, instantiating the driver will panic.
Trait Implementations§
source§impl<MS: Clone, MAIN_DIR: Clone, EXT_DIR: Clone, STD: Clone> Clone for DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, STD>
impl<MS: Clone, MAIN_DIR: Clone, EXT_DIR: Clone, STD: Clone> Clone for DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, STD>
source§fn clone(&self) -> DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, STD>
fn clone(&self) -> DualI2sDriverConfig<MS, MAIN_DIR, EXT_DIR, STD>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more