Struct embassy_stm32::dac::DacChannel
source · pub struct DacChannel<'d, T: Instance, const N: u8, DMA = NoDma> { /* private fields */ }
Expand description
Driver for a single DAC channel.
If you want to use both channels, either together or independently,
create a Dac
first and use it to access each channel.
Implementations§
source§impl<'d, T: Instance, const N: u8, DMA> DacChannel<'d, T, N, DMA>
impl<'d, T: Instance, const N: u8, DMA> DacChannel<'d, T, N, DMA>
sourcepub fn new(
_peri: impl Peripheral<P = T> + 'd,
dma: impl Peripheral<P = DMA> + 'd,
pin: impl Peripheral<P = impl DacPin<T, N> + Pin> + 'd
) -> Self
pub fn new( _peri: impl Peripheral<P = T> + 'd, dma: impl Peripheral<P = DMA> + 'd, pin: impl Peripheral<P = impl DacPin<T, N> + Pin> + 'd ) -> Self
Create a new DacChannel
instance, consuming the underlying DAC peripheral.
If you’re not using DMA, pass [dma::NoDma
] for the dma
argument.
The channel is enabled on creation and begins to drive the output pin.
Note that some methods, such as set_trigger()
and set_mode()
, will
disable the channel; you must re-enable it with enable()
.
By default, triggering is disabled, but it can be enabled using
DacChannel::set_trigger()
.
sourcepub fn new_internal(
_peri: impl Peripheral<P = T> + 'd,
dma: impl Peripheral<P = DMA> + 'd
) -> Self
pub fn new_internal( _peri: impl Peripheral<P = T> + 'd, dma: impl Peripheral<P = DMA> + 'd ) -> Self
Create a new DacChannel
instance where the external output pin is not used,
so the DAC can only be used to generate internal signals.
The GPIO pin is therefore available to be used for other functions.
The channel is set to Mode::NormalInternalUnbuffered
and enabled on creation.
Note that some methods, such as set_trigger()
and set_mode()
, will disable the
channel; you must re-enable it with enable()
.
If you’re not using DMA, pass [dma::NoDma
] for the dma
argument.
By default, triggering is disabled, but it can be enabled using
DacChannel::set_trigger()
.
sourcepub fn set_enable(&mut self, on: bool)
pub fn set_enable(&mut self, on: bool)
Enable or disable this channel.
sourcepub fn set_trigger(&mut self, source: TriggerSel)
pub fn set_trigger(&mut self, source: TriggerSel)
Set the trigger source for this channel.
This method disables the channel, so you may need to re-enable afterwards.
sourcepub fn set_triggering(&mut self, on: bool)
pub fn set_triggering(&mut self, on: bool)
Enable or disable triggering for this channel.
sourcepub fn set_mode(&mut self, mode: Mode)
pub fn set_mode(&mut self, mode: Mode)
Set mode of this channel.
This method disables the channel, so you may need to re-enable afterwards.
source§impl<'d, T: Instance, DMA> DacChannel<'d, T, 1, DMA>where
DMA: DacDma1<T>,
impl<'d, T: Instance, DMA> DacChannel<'d, T, 1, DMA>where
DMA: DacDma1<T>,
sourcepub async fn write(&mut self, data: ValueArray<'_>, circular: bool)
pub async fn write(&mut self, data: ValueArray<'_>, circular: bool)
Write data
to this channel via DMA.
To prevent delays or glitches when outputing a periodic waveform, the circular
flag can be set. This configures a circular DMA transfer that continually outputs
data
. Note that for performance reasons in circular mode the transfer-complete
interrupt is disabled.
source§impl<'d, T: Instance, DMA> DacChannel<'d, T, 2, DMA>where
DMA: DacDma2<T>,
impl<'d, T: Instance, DMA> DacChannel<'d, T, 2, DMA>where
DMA: DacDma2<T>,
sourcepub async fn write(&mut self, data: ValueArray<'_>, circular: bool)
pub async fn write(&mut self, data: ValueArray<'_>, circular: bool)
Write data
to this channel via DMA.
To prevent delays or glitches when outputing a periodic waveform, the circular
flag can be set. This configures a circular DMA transfer that continually outputs
data
. Note that for performance reasons in circular mode the transfer-complete
interrupt is disabled.