How does the DMA know "when to send" the next byte?
It works both ways. When receiving, the peripheral signals the DMA controller it should read a byte. When transmitting, the peripheral signals to DMA controller when it should write a byte.