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.