Since it belongs to the topic, I'd like to ask a follow-up question.
I have configured 3 channels with a sequenceA interrupt, which basically works.
However, my interrupt handler routine proved incorrect.
Section 44.6.5, table 1032 (page 1049) of UM10912 says:
SEQA_GDAT register, Bit 31: DATA VALID
This bit is set to 1 at the end of each conversion when a new result is loaded into the RESULT field. It is cleared whenever this register is read.
This bit will cause a conversion-complete interrupt for the corresponding sequence if the MODE bit (in SEQA_CTRL) for that sequence is set to 0 (and if the interrupt is enabled).
Thus, I checked for the DATA_VALID bit of said register, which was never set.
Consequently, the code never cleared any flags, and the interrupt fired continuously.
I then checked the SDK example code (from TN00017), and the ADC interrupt handler code there goes for the ADC.FLAGS register instead.
Again quoting the relevant part of the user manual,Section 44.6.11, table 1041 (page 1078):
Bit 28: SEQA_INT
Sequence A interrupt/DMA trigger.
If the MODE bit in the SEQA_CTRL register is 0, this flag will mirror the DATAVALID bit in the sequence A global data register (SEQA_GDAT), which is set at the end of every ADC conversion performed as part of sequence A. It will be cleared automatically when the SEQA_GDAT register is read.
If the MODE bit in the SEQA_CTRL register is 1, this flag will be set upon completion of an entire A sequence. In this case it must be cleared by writing a 1 to this SEQA_INT bit. This interrupt must be enabled in the INTEN register.
The MODE bit of SEQA_CTRL is set (as I configured).
I basically copied this code (check for FLAGS.SEQA_INT flag instead of SEQA_GDAT.DATA_VALID), which works as expected.
However, I cannot find any indication in the UM why the DATA_VALID bit in SEQA_GDAT is not set at the same time. Do I miss something ?