Thanks for your input.
I tried the "MSC ramdisk lite" example, with same results. Demo boards do, our board does not.
So I removed ESD protection from our custom board, no change.
Next I checked the clocks using the fmeas example. I added some code to enable and measure the external oscillator:
CLOCK_Enable_SysOsc(true);
MeasureDisplay("12MHz ext oscillator (" EXAMPLE_REFERENCE_CLOCK_NAME " reference)", kINPUTMUX_MainOscToFreqmeas,
freqRef, CLOCK_GetExtClkFreq());
The results are very much the same on the custom board and the demo boards:
Capture source: Watchdog oscillator (main clock reference), reference frequency = 48000000 Hz
Computed frequency value = 600585 Hz
Expected frequency value = 500000 Hz
Capture source: RTC32K oscillator (main clock reference), reference frequency = 48000000 Hz
Computed frequency value = 32226 Hz
Expected frequency value = 32768 Hz
Capture source: 12MHz FRO oscillator (main clock reference), reference frequency = 48000000 Hz
Computed frequency value = 11997070 Hz
Expected frequency value = 12000000 Hz
Capture source: 12MHz ext oscillator (main clock reference), reference frequency = 48000000 Hz
Computed frequency value = 11988281 Hz
Expected frequency value = 12000000 Hz
I let it run for a while and got results from 11.970.703 Hz to 11.985.351 Hz.
I'd higly appreciate any further ideas.