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 begin 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 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.
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.