This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

SPI not transferring when sck pin not used

Hi there!

I'm in the process of migrating a project from a nRF52832 to nRF52840 due to insufficient memory and of course some problems arise during the process. Most of the problems are configuration related, but I believe this one to be a bug.

When the sck_pin is set to NRF_DRV_SPI_PIN_NOT_USED, the transfer isn't completed. In fact, the pin is made high and becomes low after 1.6ms; then all nrf_drv_spi_transfer calls return NRF_ERROR_BUSY. This is the case in both, the project and the spi example in the most recent version of the SDK. What I find interesting, is that setting the sck_pin to NRF_DRV_SPI_PIN_NOT_USED works with the nRF52832 DK, but not with the nRF52840 DK.

The problem is temporarily solved by just initializing the sck_pin with a random (unused) pin. Anyway, I thought I'd raise this question to save a couple days of debugging for people who are also coping with this problem and to get to know why this is happening.

Thanks in advance,

Jochem

Parents Reply
  • We found that the general purpose peripheral which underlies SPIM/TWIM requires the clock signal to physically exist otherwise the internal registers are not clocked; maybe a consequence of using the same peripheral hardware to accept both internal (master) and external (slave) synchronous clock to drive the registers. Somewhere there is a note about this, but of course I don't remember where. This only applies to SCK, not MOSI and MISO. It's not  bug, it's a feature ..

Children
Related