pub trait InstanceDma<TX, RX>: Instancewhere
    TX: Tx,
    RX: Rx,{
    // Provided methods
    fn transfer_in_place_dma<'w>(
        &mut self,
        words: &'w mut [u8],
        tx: &mut TX,
        rx: &mut RX
    ) -> Result<&'w [u8], Error> { ... }
    fn transfer_dma<'w>(
        &mut self,
        write_buffer: &'w [u8],
        read_buffer: &'w mut [u8],
        tx: &mut TX,
        rx: &mut RX
    ) -> Result<&'w [u8], Error> { ... }
    fn start_transfer_dma<'w>(
        &mut self,
        write_buffer_ptr: *const u8,
        write_buffer_len: usize,
        read_buffer_ptr: *mut u8,
        read_buffer_len: usize,
        tx: &mut TX,
        rx: &mut RX
    ) -> Result<(), Error> { ... }
    fn write_bytes_dma<'w>(
        &mut self,
        words: &'w [u8],
        tx: &mut TX
    ) -> Result<&'w [u8], Error> { ... }
    fn start_write_bytes_dma<'w>(
        &mut self,
        ptr: *const u8,
        len: usize,
        tx: &mut TX
    ) -> Result<(), Error> { ... }
    fn start_read_bytes_dma<'w>(
        &mut self,
        ptr: *mut u8,
        len: usize,
        rx: &mut RX
    ) -> Result<(), Error> { ... }
    fn dma_peripheral(&self) -> DmaPeripheral { ... }
    fn enable_dma(&self) { ... }
    fn clear_dma_interrupts(&self) { ... }
}