rp2.DMA
Classes
Claim one of the DMA controller channels for exclusive use. |
Module Contents
- class rp2.DMA.DMA
Claim one of the DMA controller channels for exclusive use.
- active(value: Any | None = None) Incomplete
Gets or sets whether the DMA channel is currently running.
>>> sm.active() 0 >>> sm.active(1) >>> while sm.active():
- close() Incomplete
Release the claim on the underlying DMA channel and free the interrupt handler. The
DMAobject can not be used after this operation.
- config(read=None, write=None, count=None, ctrl=None, trigger=False) None
Configure the DMA registers for the channel and optionally start the transfer. Parameters are:
read: The address from which the DMA controller will start reading data or an object that will provide data to be read. It can be an integer or any object that supports the buffer protocol.
write: The address to which the DMA controller will start writing or an object into which data will be written. It can be an integer or any object that supports the buffer protocol.
count: The number of bus transfers that will execute before this channel stops. Note that this is the number of transfers, not the number of bytes. If the transfers are 2 or 4 bytes wide then the total amount of data moved (and thus the size of required buffer) needs to be multiplied accordingly.
ctrl: The value for the DMA control register. This is an integer value that is typically packed using the
DMA.pack_ctrl().trigger: Optionally commence the transfer immediately.
- irq(handler=None, hard=False) Incomplete
Returns the IRQ object for this DMA channel and optionally configures it.
- pack_ctrl(default=None, *kwargs) Incomplete
Pack the values provided in the keyword arguments into the named fields of a new control register value. Any field that is not provided will be set to a default value. The default will either be taken from the provided
defaultvalue, or if that is not given, a default suitable for the current channel; setting this to the current value of theDMA.ctrlattribute provides an easy way to override a subset of the fields.The keys for the keyword arguments can be any key returned by the
DMA.unpack_ctrl()method. The writable values are:enable:
boolSet to enable the channel (default:True).high_pri:
boolMake this channel’s bus traffic high priority (default:False).size:
intTransfer size: 0=byte, 1=half word, 2=word (default: 2).inc_read:
boolIncrement the read address after each transfer (default:True).inc_write:
boolIncrement the write address after each transfer (default:True).ring_size:
intIf non-zero, only the bottomring_sizebits of one address register will change when an address is incremented, causing the address to wrap at the next1 << ring_sizebyte boundary. Which address is wrapped is controlled by thering_selflag. A zero value disables address wrapping.ring_sel:
boolSet toFalseto have thering_sizeapply to the read address orTrueto apply to the write address.chain_to:
intThe channel number for a channel to trigger after this transfer completes. Setting this value to this DMA object’s own channel number disables chaining (this is the default).treq_sel:
intSelect a Transfer Request signal. See section 2.5.3 in the RP2040 datasheet for details.irq_quiet:
boolDo not generate interrupt at the end of each transfer. Interrupts will instead be generated when a zero value is written to the trigger register, which will halt a sequence of chained transfers (default:True).bswap:
boolIf set to true, bytes in words or half-words will be reversed before writing (default:True).sniff_en:
boolSet toTrueto allow data to be accessed by the chips sniff hardware (default:False).write_err:
boolSetting this toTruewill clear a previously reported write error.read_err:
boolSetting this toTruewill clear a previously reported read error.
See the description of the
CH0_CTRL_TRIGregister in section 2.5.7 of the RP2040 datasheet for details of all of these fields.
- unpack_ctrl(value) Incomplete
Unpack a value for a DMA channel control register into a dictionary with key/value pairs for each of the fields in the control register. value is the
ctrlregister value to unpack.This method will return values for all the keys that can be passed to
DMA.pack_ctrl. In addition, it will also return the read-only flags in the control register:busy, which goes high when a transfer starts and low when it ends, andahb_err, which is the logical OR of theread_errandwrite_errflags. These values will be ignored when packing, so that the dictionary created by unpacking a control register can be used directly as the keyword arguments for packing.