+ /* DMA writes to UCxxTXBUF each time UCxxTXIFG moves from 0 to 1 as its
+ * trigger is edge sensitive. Therefore, if UCxxTXIFG is already 1,
+ * indicating the UCxxTXBUF is empty, the trigger is not asserted and the
+ * DMA transfer will hang having done nothing. The solution is a little
+ * kludgy:
+ *
+ * - Wait for UCxxTXBUF to empty
+ * - Manually clear UCxxTXIFG
+ * - Start the DMA transfer (enable the channel trigger)
+ * - Manually set the UCxxTXIFG
+ */
+ while (!(call Registers.getIfgTx()));
+ call Registers.clrIfgTx();
+ call DmaChannel.startTransfer();