/// It is expected to pre-fill at least enough data to fill the first two descriptors' buffers.
/// It is expected to pre-fill at least enough data to fill the first two descriptors' buffers.
fn terminate_tx_stream_at(descriptors: &mut DmaAlignedMut<'_, [DmaDescriptor]>, start: usize) {
static mut EMPTY: InternalMemory<[DmaDescriptor; 1]> = InternalMemory::new([DmaDescriptor::EMPTY]);
/// ensures that the DMA will not try to copy a partial block, which would cause the RX DMA (that
// most N+2 descriptors. While the hardware doesn't require this on the TX DMA side, (the TX DMA
const BUF_LEN: usize = 16 + 2 * (MIN_LAST_DMA_LEN - 1); // 2x makes aligning short buffers simpler
/// PSRAM helper. DMA can write data of any alignment into this buffer, and it can be written by