pub struct Config<'d, PIO: Instance> {
pub clock_divider: FixedU32<U8>,
pub out_en_sel: u8,
pub inline_out_en: bool,
pub out_sticky: bool,
pub status_sel: StatusSource,
pub status_n: StatusN,
pub fifo_join: FifoJoin,
pub shift_in: ShiftConfig,
pub shift_out: ShiftConfig,
/* private fields */
}
Expand description
PIO config.
Fields§
§clock_divider: FixedU32<U8>
Clock divisor register for state machines.
out_en_sel: u8
Which data bit to use for inline OUT enable.
inline_out_en: bool
Use a bit of OUT data as an auxiliary write enable When used in conjunction with OUT_STICKY.
out_sticky: bool
Continuously assert the most recent OUT/SET to the pins.
status_sel: StatusSource
Which source to use for checking status.
status_n: StatusN
Status comparison level.
fifo_join: FifoJoin
Configure FIFO allocation.
shift_in: ShiftConfig
Input shifting config.
shift_out: ShiftConfig
Output shifting config.
Implementations§
Source§impl<'d, PIO: Instance> Config<'d, PIO>
impl<'d, PIO: Instance> Config<'d, PIO>
Sourcepub fn get_exec(&self) -> ExecConfig
pub fn get_exec(&self) -> ExecConfig
Get execution configuration.
Sourcepub unsafe fn set_exec(&mut self, e: ExecConfig)
pub unsafe fn set_exec(&mut self, e: ExecConfig)
Update execution configuration.
Sourcepub fn use_program(
&mut self,
prog: &LoadedProgram<'d, PIO>,
side_set: &[&Pin<'d, PIO>],
)
pub fn use_program( &mut self, prog: &LoadedProgram<'d, PIO>, side_set: &[&Pin<'d, PIO>], )
Configures this state machine to use the given program, including jumping to the origin of the program. The state machine is not started.
side_set
sets the range of pins affected by side-sets. The range must be consecutive.
Side-set pins must configured as outputs using StateMachine::set_pin_dirs
to be
effective.
Sourcepub fn set_jmp_pin(&mut self, pin: &Pin<'d, PIO>)
pub fn set_jmp_pin(&mut self, pin: &Pin<'d, PIO>)
Set pin used to signal jump.
Sourcepub fn set_set_pins(&mut self, pins: &[&Pin<'d, PIO>])
pub fn set_set_pins(&mut self, pins: &[&Pin<'d, PIO>])
Sets the range of pins affected by SET instructions. The range must be consecutive.
Set pins must configured as outputs using StateMachine::set_pin_dirs
to be
effective.
Sourcepub fn set_out_pins(&mut self, pins: &[&Pin<'d, PIO>])
pub fn set_out_pins(&mut self, pins: &[&Pin<'d, PIO>])
Sets the range of pins affected by OUT instructions. The range must be consecutive.
Out pins must configured as outputs using StateMachine::set_pin_dirs
to be
effective.
Sourcepub fn set_in_pins(&mut self, pins: &[&Pin<'d, PIO>])
pub fn set_in_pins(&mut self, pins: &[&Pin<'d, PIO>])
Sets the range of pins used by IN instructions. The range must be consecutive.
In pins must configured as inputs using StateMachine::set_pin_dirs
to be
effective.
Trait Implementations§
impl<'d, PIO: Copy + Instance> Copy for Config<'d, PIO>
Auto Trait Implementations§
impl<'d, PIO> Freeze for Config<'d, PIO>
impl<'d, PIO> RefUnwindSafe for Config<'d, PIO>where
PIO: RefUnwindSafe,
impl<'d, PIO> Send for Config<'d, PIO>where
PIO: Send,
impl<'d, PIO> Sync for Config<'d, PIO>where
PIO: Sync,
impl<'d, PIO> Unpin for Config<'d, PIO>
impl<'d, PIO> !UnwindSafe for Config<'d, PIO>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)