I have a custom board that uses Nordic NRF52832 as MCU. For laying out crystals, BLE part and decoupling capacitors, I used reference layout from documentation.
32 MHz crystal used: Epson FA-20H 32.0000MF20X-K3, loaded with 10 pF capacitors. LF oscillator is not soldered.
I managed to connect debugger to the board and run basic blinking firmware. After that I tried start external oscillator and use it as a clocking reference. Via the IDE(Segger Embedded Studio release 3.50, with NRF52-DK as a debugger) I see that firmware does not detect start of the crystal: HFCLKRUN.STATUS == 1, HFCLKSTAT.SRC == RC, EVENTS_HFCLKSTARTED == 0x00. Crystal is attempted to start using API function nrf_drv_clock_hfclk_request(0) (I don't need a callback for clock start, so I pass null pointer to the argument).
My first suggestion was that clock generation fails to start. I looked at the waveform using an oscilloscope, and I discovered that 32 MHz sinus signal is actually generated. So, the crystal successfully starts, which means that load capacitors are proper, crystal is proper, and the problem is somewhere else. If I do no call nrf_drv_clock_hfclk_request() in the software, or execute line TASKS_HFCLKSTOP = 1, the waveform generation stops. So the crystal reacts to the signals from the MCU, but for some reason MCU does not detect the waveform. Same code executed on the devboard leads to proper detection of the XTAL (HFCLKSTAT.SRC = Xtal), therefore the problem is somewhere in the hardware.
I did check the soldering quality and could not find problems - I looked at the pins using microscope and did not see any signs of improper soldering.
What could be the reasons of such behavior? How to debug it, maybe some suggestions possible?