[212] SAADC: Events are not generated when switching from scan mode to no-scan mode with burst enabled

This anomaly applies to Revision 3, build codes QFAA-Gx0, QFAB-Gx0, CIAA-Gx0.

It was inherited from the previous IC revision Revision 2.

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.