aboutsummaryrefslogtreecommitdiff
path: root/examples/rp/src/bin/pio_dma.rs
Commit message (Collapse)AuthorAgeFilesLines
* Remove Peripheral trait, rename PeripheralRef->Peri.Dario Nieuwenhuis2025-03-271-3/+3
|
* Added access to the byte swap flag for RP2*** chips for the PIO state ↵eden barby2025-03-011-2/+2
| | | | machine DMA calls.
* rp/pio: update pio-rs crate, reexport it so users don't get version mismatches.Dario Nieuwenhuis2025-02-181-1/+2
|
* ci: use beta, add secondary nightly ci.Dario Nieuwenhuis2023-12-211-1/+0
|
* rp: relocate programs implicitly during loadpennae2023-07-281-3/+1
| | | | | | | | | | | this removed the RelocatedProgram construction step from pio uses. there's not all that much to be said for the extra step because the origin can be set on the input program itself, and the remaining information exposed by RelocatedProgram can be exposed from LoadedProgram instead (even though it's already available on the pio_asm programs, albeit perhaps less convenient). we do lose access to the relocated instruction iterator, but we also cannot think of anything this iterator would actually be useful for outside of program loading.
* Add descriptions to all RP2040 examples. Some need hardware that was not ↵Henrik Berg2023-07-131-0/+2
| | | | specified.
* rp/pio: use bind_interrupts for irqspennae2023-07-071-3/+8
| | | | closes #1338
* rp: don't use SetConfig trait in PWM and PIO.Dario Nieuwenhuis2023-05-131-1/+0
| | | | | | It was intended to allow changing baudrate on shared spi/i2c. There's no advantage in using it for PWM or PIO, and makes it less usable because you have to have `embassy-embedded-hal` as a dep to use it.
* rp/pio: configure state machines with Config structpennae2023-05-061-9/+18
| | | | | | the many individual sets aren't very efficient, and almost no checks were done to ensure that the configuration written to the hardware was actually valid. this adresses both of these.
* rp/pio: add load_program, use_programpennae2023-05-061-5/+2
| | | | | | | | programs contain information we could pull from them directly and use to validate other configuration of the state machine instead of asking the user to pull them out and hand them to us bit by bit. unfortunately programs do not specify how many in or out bits they use, so we can only handle side-set and wrapping jumps like this. it's still something though.
* rp/pio: wrap sm rx, tx in structs and allow splittingpennae2023-05-031-2/+3
| | | | | | | this *finally* allows sound implementions of bidirectional transfers without blocking. the futures previously allowed only a single direction to be active at any given time, and the dma transfers didn't take a mutable reference and were thus unsound.
* rp/pio: remove PioStateMachineInstancepennae2023-05-031-1/+1
| | | | | | | move all methods into PioStateMachine instead. the huge trait wasn't object-safe and thus didn't have any benefits whatsoever except for making it *slightly* easier to write bounds for passing around state machines. that would be much better solved with generics-less instances.
* rp/pio: PioStateMachine{Instance, => ,Instance}pennae2023-05-031-1/+1
| | | | next step: get rid of the insance trait entirely
* rp/pio: make PioCommon a structpennae2023-05-021-1/+1
| | | | | the PioCommon trait does not serve much of a purpose; there can be only two implementations and they only differ in a few associated constants.
* rp/pio: PioInstance::split -> Pio::newpennae2023-05-021-3/+7
| | | | | | | not requiring a PioInstance for splitting lets us split from a PeripheralRef or borrowed PIO as well, mirroring every other peripheral in embassy_rp. pio pins still have to be constructed from owned pin instances for now.
* rp/pio: remove PioPeripheralpennae2023-05-021-1/+1
| | | | | | merge into PioInstance instead. PioPeripheral was mostly a wrapper around PioInstance anyway, and the way the wrapping was done required PioInstanceBase<N> types where PIO{N} could've been used instead.
* rp/pio: write instr memory only from commonpennae2023-05-011-3/+3
| | | | | | | | | | | | | | | instruction memory is a shared resource. writing it only from PioCommon clarifies this, and perhaps makes it more obvious that multiple state machines can share the same instructions. this also allows *freeing* of instruction memory to reprogram the system, although this interface is not entirely safe yet. it's safe in the sense rusts understands things, but state machines may misbehave if their instruction memory is freed and rewritten while they are running. fixing this is out of scope for now since it requires some larger changes to how state machines are handled. the interface provided currently is already unsafe in that it lets people execute instruction memory that has never been written, so this isn't much of a drawback for now.
* Fix a typo in "PioPeripheral"sekoia2023-02-151-1/+1
|
* Added RelocateProgram class for adjusting PIO-programs for different origins.Simon Berg2022-12-091-4/+6
|
* PIO support for RPi PicoSimon Berg2022-12-091-0/+67