Expand description
Digital Filter and Sigma-Delta Modulator (DFSDM)
One core owns a DFSDM instance. The driver takes no cross-core lock, so sharing an instance across cores needs external synchronization (an HSEM, for example): the CR1/CR2/CFGR1 read-modify-writes, the per-instance armed caches and the RCC disable on drop all race otherwise.
Re-exports§
pub use detector::*;pub use dma::*;pub use filter::*;pub use splits::*;pub use transceiver::*;pub use types::*;
Modules§
- config
- Config value types used across the driver: filter parameters, data packing and shift modes, clock/output sources, and trigger/edge configuration.
- detector
- Instance-level and filter-level detectors: the analog watchdog, extremes, short-circuit and clock-absence detectors.
- dma
- DMA support: the ring-buffered regular-conversion filter that reads converted samples via DMA.
- filter
- Filter and its interrupt handling: filter configuration, the filter driver type, the interrupt handler, and per-filter interrupt/event state.
- splits
- Split-build traits: the interface between
configure_pins’ closure tuple and the shape-dependent split structs. The split structs, selectors andChannelCfgTupleimpls are generated bybuild.rs(seesrc/dfsdm/codegen.rs) and glob-re-exported fromcrate::_generated::dfsdm. - transceiver
- Transceiver driver, its pin-slot storage, single-use pin selectors, and the pin-trait associations.
- types
- Type-system: sealed and capability markers, channel markers, pin-presence
(
PinSet) and channel-config tokens, indexed channel types and trigger types.
Structs§
- Channel
Selectors2 - The pin selectors handed to the
crate::dfsdm::Dfsdm::configure_pinsclosure. Declare each transceiver’s pins withcrate::dfsdm::Sel::datin,crate::dfsdm::Sel::datin_ckinorcrate::dfsdm::Sel::none. - Channel
Selectors4 - The pin selectors handed to the
crate::dfsdm::Dfsdm::configure_pinsclosure. Declare each transceiver’s pins withcrate::dfsdm::Sel::datin,crate::dfsdm::Sel::datin_ckinorcrate::dfsdm::Sel::none. - Channel
Selectors8 - The pin selectors handed to the
crate::dfsdm::Dfsdm::configure_pinsclosure. Declare each transceiver’s pins withcrate::dfsdm::Sel::datin,crate::dfsdm::Sel::datin_ckinorcrate::dfsdm::Sel::none. - Dfsdm
- DFSDM driver entry point.
- Dfsdm
Common - Holds references to the peripheral and the optional clock-output. Disables the RCC of the peripheral when dropped.
- Dfsdm
Split2 Ch1Flt - Produced by
crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs. - Dfsdm
Split2 Ch1Flt Builders - One
crate::dfsdm::TransceiverBuilderper transceiver, handed to the closure of [#name::build]. Build the channels you use; leave the rest, and their pins deconfigure at the sweep.#[non_exhaustive]so callers can consume fields but cannot construct or exhaustively destructure it. - Dfsdm
Split2 Ch1Flt Filters - The filter builders and detectors left after [
#name::build] built the transceivers.#[non_exhaustive], so callers consume fields but cannot construct it. - Dfsdm
Split4 Ch2Flt - Produced by
crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs. - Dfsdm
Split4 Ch2Flt Builders - One
crate::dfsdm::TransceiverBuilderper transceiver, handed to the closure of [#name::build]. Build the channels you use; leave the rest, and their pins deconfigure at the sweep.#[non_exhaustive]so callers can consume fields but cannot construct or exhaustively destructure it. - Dfsdm
Split4 Ch2Flt Filters - The filter builders and detectors left after [
#name::build] built the transceivers.#[non_exhaustive], so callers consume fields but cannot construct it. - Dfsdm
Split4 Ch4Flt - Produced by
crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs. - Dfsdm
Split4 Ch4Flt Builders - One
crate::dfsdm::TransceiverBuilderper transceiver, handed to the closure of [#name::build]. Build the channels you use; leave the rest, and their pins deconfigure at the sweep.#[non_exhaustive]so callers can consume fields but cannot construct or exhaustively destructure it. - Dfsdm
Split4 Ch4Flt Filters - The filter builders and detectors left after [
#name::build] built the transceivers.#[non_exhaustive], so callers consume fields but cannot construct it. - Dfsdm
Split8 Ch4Flt - Produced by
crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs. - Dfsdm
Split8 Ch4Flt Builders - One
crate::dfsdm::TransceiverBuilderper transceiver, handed to the closure of [#name::build]. Build the channels you use; leave the rest, and their pins deconfigure at the sweep.#[non_exhaustive]so callers can consume fields but cannot construct or exhaustively destructure it. - Dfsdm
Split8 Ch4Flt Filters - The filter builders and detectors left after [
#name::build] built the transceivers.#[non_exhaustive], so callers consume fields but cannot construct it. - Dfsdm
Split8 Ch6Flt - Produced by
crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs. - Dfsdm
Split8 Ch6Flt Builders - One
crate::dfsdm::TransceiverBuilderper transceiver, handed to the closure of [#name::build]. Build the channels you use; leave the rest, and their pins deconfigure at the sweep.#[non_exhaustive]so callers can consume fields but cannot construct or exhaustively destructure it. - Dfsdm
Split8 Ch6Flt Filters - The filter builders and detectors left after [
#name::build] built the transceivers.#[non_exhaustive], so callers consume fields but cannot construct it. - Dfsdm
Split8 Ch8Flt - Produced by
crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs. - Dfsdm
Split8 Ch8Flt Builders - One
crate::dfsdm::TransceiverBuilderper transceiver, handed to the closure of [#name::build]. Build the channels you use; leave the rest, and their pins deconfigure at the sweep.#[non_exhaustive]so callers can consume fields but cannot construct or exhaustively destructure it. - Dfsdm
Split8 Ch8Flt Filters - The filter builders and detectors left after [
#name::build] built the transceivers.#[non_exhaustive], so callers consume fields but cannot construct it.
Enums§
- Error
- DFSDM error.