SPIM read data all zero using GPIOTE and PPI

We are evaluating using GPIOTE In event to trigger SPIM reading by PPI. GPIOTE interrupt will trigger SPIM data transfer. The SPIM CS pin is toggled with PPI too. We use a timer (counter ) to count the number of transfer. For simplicity, the counter number is set to be one. So the SPIM function is also set up to transfer one time for testing purpose. 

The problem is that the SPIM receive buffer is constantly zero. From the scope, we can see that the SPIM is triggered correctly, and data are sent via the SPIM bus. But somehow the SPIM buffer reading is always zero. The SPIM receive buffer is read immediately after the counter reaches 1. 

The scope waveform is shown below.

What could be the reason? 

Related