Hi,
I think I found a BUG about SPIM SDK15.3. The following is what I set the configurations for the SPIM0:
nrf_drv_spi_config_t spim0_config = NRF_DRV_SPI_DEFAULT_CONFIG;
spim0_config.frequency = NRF_DRV_SPI_FREQ_1M;
spim0_config.sck_pin = SPIM0_CONFIG_SCK_PIN;
spim0_config.mosi_pin = SPIM0_CONFIG_MOSI_PIN;
spim0_config.miso_pin = SPIM0_CONFIG_MISO_PIN;
spim0_config.ss_pin = SPIM0_CONFIG_SS_PIN;
spim0_config.irq_priority = APP_IRQ_PRIORITY_LOW;
APP_ERROR_CHECK(nrf_drv_spi_init(&m_commu_spim0_instance, &spim0_config, spim0_event_handler,NULL));
Then I use this function to active one transfer which just one byte to be handled:
M_LOG("dlen=%d,dat[0]=%02X",m_tx_len0,m_tx_buf0[0]);
uint32_t err_code;
err_code = nrf_drv_spi_transfer(&m_commu_spim0_instance,
m_tx_buf0,
1,//m_tx_len0,
m_rx_buf0,
1);//
Then the problem will appear that the SCK will generate 2 periods signal which should be one only.
But the SCN signal turn to high at a wrong time when the second SCK period not ended.

I call the function nrf_drv_spi_transfer every 1 sec to send only one byte. the signals generated will be wrong for this time and next time will be right. After the right signal generated, the wrong signal come after at the next time:

When I call the nrf_drv_spi_transfer to send 2 or more than 2 bytes, the signals are correctly generated:
uint32_t err_code;
err_code = nrf_drv_spi_transfer(&m_commu_spim0_instance,
m_tx_buf0,
2,//m_tx_len0,
m_rx_buf0,
2);//

I need to transfer one byte only every time for my project. But the wrong signal will make my SPI slave device got a mixed data.
Did I miss something? Please help.
Thanks.