pub struct AdcPart<'peripherals, ADC, D, const ROW: usize>where
ADC: Instance<Regs = Adc> + BasicInstance,
D: RxDma<ADC>,
<<ADC as BasicInstance>::Regs as BasicAdcRegs>::SampleTime: Clone,{
pub adc: Adc<'peripherals, ADC>,
pub dma: Peri<'peripherals, D>,
pub row_adc: [AnyAdcChannel<'peripherals, ADC>; ROW],
pub sample_time: <<ADC as BasicInstance>::Regs as BasicAdcRegs>::SampleTime,
}Expand description
ADC-related peripherals grouped to allow split borrows when constructing
a [embassy_stm32::adc::ConfiguredSequence].
Fields§
§adc: Adc<'peripherals, ADC>ADC peripheral used for sampling hall sensors.
dma: Peri<'peripherals, D>DMA channel used for non-blocking ADC sequence reads.
row_adc: [AnyAdcChannel<'peripherals, ADC>; ROW]ADC channels corresponding to each matrix row.
sample_time: <<ADC as BasicInstance>::Regs as BasicAdcRegs>::SampleTimeADC sample time applied to every channel in the sequence.
Implementations§
Source§impl<'peripherals, ADC, D, const ROW: usize> AdcPart<'peripherals, ADC, D, ROW>where
ADC: Instance<Regs = Adc> + BasicInstance,
D: RxDma<ADC>,
<<ADC as BasicInstance>::Regs as BasicAdcRegs>::SampleTime: Clone,
impl<'peripherals, ADC, D, const ROW: usize> AdcPart<'peripherals, ADC, D, ROW>where
ADC: Instance<Regs = Adc> + BasicInstance,
D: RxDma<ADC>,
<<ADC as BasicInstance>::Regs as BasicAdcRegs>::SampleTime: Clone,
Sourcefn configured_sequence<'reader, IRQ2>(
&'reader mut self,
irq: IRQ2,
) -> ConfiguredSequence<'reader, Adc>where
IRQ2: Binding<D::Interrupt, InterruptHandler<D>> + 'reader + 'peripherals,
fn configured_sequence<'reader, IRQ2>(
&'reader mut self,
irq: IRQ2,
) -> ConfiguredSequence<'reader, Adc>where
IRQ2: Binding<D::Interrupt, InterruptHandler<D>> + 'reader + 'peripherals,
Create a [embassy_stm32::adc::ConfiguredSequence] over all row
channels.
Programs the ADC sequence registers once; the returned reader can be triggered repeatedly without reprogramming, saving ~20 cycles per column per scan.