Hi,
I'm having difficulty getting a clean MCK when configuring passthrough (bypass) mode. I'm using ACLK as the source and I do get a 12.288MHz signal on the MCK pin but it is only approximately 0.25Vp-p around a DC offset of ~2V. The waveform is triangular, not rectangular. Example screenshot attached at the bottom of this post.
I have tried both custom hardware and the PCA10095 DK board and get the same result on both boards. For the custom board, MCK is on pin P0.05; for the DK board, I used P0.31.
To set the device up, I have the following code:
Start ACLK:
nrf_clock_hfclkaudio_config_set(NRF_CLOCK_S, 0x9BA6); /* 12.288005MHz = 0.0004% error */
nrf_clock_event_clear(NRF_CLOCK_S, NRF_CLOCK_EVENT_HFCLKAUDIOSTARTED);
nrf_clock_task_trigger(NRF_CLOCK_S, NRF_CLOCK_TASK_HFCLKAUDIOSTART);
while (!nrf_clock_event_check(NRF_CLOCK_S, NRF_CLOCK_EVENT_HFCLKAUDIOSTARTED));
nrf_clock_event_clear(NRF_CLOCK_S, NRF_CLOCK_EVENT_HFCLKAUDIOSTARTED);
The I2S initialisation (&cfg) block being passed in is:
err = nrfx_i2s_init(&cfg, palI2sCompHandler);
PAL_SYS_ASSERT(err == NRFX_SUCCESS);

I have tried configuring the pin drive level in the GPIO peripheral immediately before the I2S peripheral is enabled but this has had no effect:
nrf_gpio_cfg(
(NRF_GPIO_PIN_MAP(0, 5)),
NRF_GPIO_PIN_DIR_OUTPUT,
NRF_GPIO_PIN_INPUT_DISCONNECT,
NRF_GPIO_PIN_NOPULL,
NRF_GPIO_PIN_H0H1,
NRF_GPIO_PIN_NOSENSE
);
nrf_gpio_pin_set((NRF_GPIO_PIN_MAP(0, 5)));
err = nrfx_i2s_start(&palI2sCb.initBuf[0], len / sizeof(uint32_t), 0); /* length of data in words */
PAL_SYS_ASSERT(err == NRFX_SUCCESS);
For reference, this is the clock signal (blue trace) that I am seeing (on the DK board the signal is about twice the amplitude and is more of a sawtooth):

Any assistance would be greatly appreciated.
Regards,
AC