Sinewave 100k generator, DAC + PDC + Timer.

Any particular reason to use a 2D array for a LUT? 1D array LUT will just work, right?

No, plz. read comments in OP. There are 2 array, for freq. <10k, and >10k. DAC sampling conversion limited to ~1.6 MHz, so only 16 values is used to compose sine wave at freq. 10 - 100 k. Of course, distortion level is quite high, I have no means to measure it's directly, but math estimation tells ~1 % THD.

Correction: I just realized, that you mean something else, why each array is split in 2-subarrays? This is specific of the DMA (PDC). To make it run continuously, I have to supply two pointers to the data, current one and NEXT. If there is only one, than DMA stops after transmission completed , and I have to jump inside ISR to restart all process again, and there is no warranty that this could be done in time, especially if slot is 84/1.6 = 52 clock cycles CPU. This is why 160-points sinewave array divided in two half. Time slot extended more than 80x, reload pointers timeframe equals all the time till one half is feed-ed to DAC

Also, shouldn't it be
if((dacc_get_interrupt_status(DACC_BASE) & DACC_ISR_ENDTX) == DACC_ISR_ENDTX)
instead of using "DACC_IER_ENDTX"

Here you are right, of course ISR_ENDTX. I changed code to fix a bug, thanks.