embassy-stm32

Crates

git

Versions

stm32h747zi-cm4

Flavors

Skip to main content

Module dfsdm

Module dfsdm 

Source
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 and ChannelCfgTuple impls are generated by build.rs (see src/dfsdm/codegen.rs) and glob-re-exported from crate::_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§

ChannelSelectors2
The pin selectors handed to the crate::dfsdm::Dfsdm::configure_pins closure. Declare each transceiver’s pins with crate::dfsdm::Sel::datin, crate::dfsdm::Sel::datin_ckin or crate::dfsdm::Sel::none.
ChannelSelectors4
The pin selectors handed to the crate::dfsdm::Dfsdm::configure_pins closure. Declare each transceiver’s pins with crate::dfsdm::Sel::datin, crate::dfsdm::Sel::datin_ckin or crate::dfsdm::Sel::none.
ChannelSelectors8
The pin selectors handed to the crate::dfsdm::Dfsdm::configure_pins closure. Declare each transceiver’s pins with crate::dfsdm::Sel::datin, crate::dfsdm::Sel::datin_ckin or crate::dfsdm::Sel::none.
Dfsdm
DFSDM driver entry point.
DfsdmCommon
Holds references to the peripheral and the optional clock-output. Disables the RCC of the peripheral when dropped.
DfsdmSplit2Ch1Flt
Produced by crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs.
DfsdmSplit2Ch1FltBuilders
One crate::dfsdm::TransceiverBuilder per 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.
DfsdmSplit2Ch1FltFilters
The filter builders and detectors left after [#name::build] built the transceivers. #[non_exhaustive], so callers consume fields but cannot construct it.
DfsdmSplit4Ch2Flt
Produced by crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs.
DfsdmSplit4Ch2FltBuilders
One crate::dfsdm::TransceiverBuilder per 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.
DfsdmSplit4Ch2FltFilters
The filter builders and detectors left after [#name::build] built the transceivers. #[non_exhaustive], so callers consume fields but cannot construct it.
DfsdmSplit4Ch4Flt
Produced by crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs.
DfsdmSplit4Ch4FltBuilders
One crate::dfsdm::TransceiverBuilder per 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.
DfsdmSplit4Ch4FltFilters
The filter builders and detectors left after [#name::build] built the transceivers. #[non_exhaustive], so callers consume fields but cannot construct it.
DfsdmSplit8Ch4Flt
Produced by crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs.
DfsdmSplit8Ch4FltBuilders
One crate::dfsdm::TransceiverBuilder per 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.
DfsdmSplit8Ch4FltFilters
The filter builders and detectors left after [#name::build] built the transceivers. #[non_exhaustive], so callers consume fields but cannot construct it.
DfsdmSplit8Ch6Flt
Produced by crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs.
DfsdmSplit8Ch6FltBuilders
One crate::dfsdm::TransceiverBuilder per 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.
DfsdmSplit8Ch6FltFilters
The filter builders and detectors left after [#name::build] built the transceivers. #[non_exhaustive], so callers consume fields but cannot construct it.
DfsdmSplit8Ch8Flt
Produced by crate::dfsdm::Dfsdm::configure_pins. Its fields are private; consume it through [#name::build] so the pin sweep runs.
DfsdmSplit8Ch8FltBuilders
One crate::dfsdm::TransceiverBuilder per 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.
DfsdmSplit8Ch8FltFilters
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.