[193] SPIM: SPIM3 does not generate EVENTS_END and halts if suspended during last byte

This anomaly applies to IC Rev. Engineering C, build codes QIAA-CA0, CKAA-CA0.

It was inherited from the previous IC revision Engineering B nRF52840.

Symptoms

SPIM3 stops working.

Conditions

Using TASKS_SUSPEND on SPIM3 during last byte.

Consequences

EVENTS_END is not generated and SPIM3 stops working.

Workaround

Do not use TASKS_SUSPEND for SPIM3 unless the application can guarantee that it will not be triggered during the transfer of the last byte. There is no indication from SPIM3 that it is currently in the last byte transfer.

If TASKS_SUSPEND was used during transmission of the last byte, recover SPIM3 by power cycling the device or restart SPIM3 using the following code:
 
 *(volatile uint32_t *)0x4002FFFC = 0; 
 *(volatile uint32_t *)0x4002FFFC; 
 *(volatile uint32_t *)0x4002FFFC = 1;