This anomaly applies to Revision 2, build code CAAA-Bxx.
It was inherited from the previous SoC revision Revision 1.
Symptoms
SAADC stops working.
Conditions
Any of the following:
- Switching from multiple channels to single channel when BURST is disabled and acquisition time < 10 μs.
- Switching from multiple channels to single channel when BURST is enabled.
Consequences
SAADC does not generate the expected events.
Workaround
Execute the following code before changing the channel configuration:
volatile uint32_t temp1;
volatile uint32_t temp2;
volatile uint32_t temp3;
temp1 = *(volatile uint32_t *)0x40007640ul;
temp2 = *(volatile uint32_t *)0x40007644ul;
temp3 = *(volatile uint32_t *)0x40007648ul;
*(volatile uint32_t *)0x40007FFCul = 0ul;
*(volatile uint32_t *)0x40007FFCul;
*(volatile uint32_t *)0x40007FFCul = 1ul;
*(volatile uint32_t *)0x40007640ul = temp1;
*(volatile uint32_t *)0x40007644ul = temp2;
*(volatile uint32_t *)0x40007648ul = temp3;
After the workaround is executed, the SAADC configuration is reset. Before use all registers must be configured again.