I stumbled into a problem when if I set the ADC channel to 31 (disabled), I was unable to get the ADC to work again unless resetting the processor, even with a re-init of the ADC controller, PDB, and DMA. What I found was that the PDB0_Init code generated by PE performs the following:
PDB0_CH0S = (PDB_S_CF(0x00) | PDB_S_ERR(0xFF));
I halted in the debugger after calling the init function and noticed the error was still set. The description of the register field in the debugger reads:
|ERR bits[ 7:0 ] = 1||Sequence error detected on PDB channel's corresponding pre-trigger. ADCn block can be triggered for a conversion by one pre-trigger from PDB channel n. When one conversion, which is triggered by one of the pre-triggers from PDB channel n, is in progress, new trigger from PDB channel's corresponding pre-trigger m cannot be accepted by ADCn, and ERR[m] is set. Writing 1's to clear the sequence error flags.|
I tried manually writing '1's' to the field, but the bit was still set. I found in the reference manual however: "Writing 0’s to clear the sequence error flags.". Sure enough writing 0's cleared the error and allowed me to move from disabled to an active channel.