Zephyr SPIM (asynchronous) Does Not Transfer Both Read and Write Buffers - SCLK Not Generated

Quick Background

The spi_transceive_cb() function in Zephyr takes two buffer sets (among other arguments). One buffer set to TX and one buffer set to RX. You may pass NULL to either if you are not using that functionality (per the Zephyr SPI documentation). If you pass just TX or RX, and leave the other NULL the function performs as expected. However, if you provide both buffer sets, SCLKs will only be generated for the TX buffer set regardless of the length of the RX buffer set. 

My Setup

  • Zephyr: 3.6.99 (on main)
  • Nordic HAL: v3.4.0 (f8e4d73a78316ea9ef85f09f24a3a229e40c1a8)
  • SPI
    • SPI at 8MHz, using the SPIM driver as defined in the device tree. Making calls to spi_transceive_cb() with buffer sets and a simple callback. I have included screenshots of the SPI bus when 1 byte TX and 1 byte RX on the github issue above.

Considering, others have faced the same issue of the SCLK not being generated when both buffer sets are utilized... has anyone successfully used the spi_transceive_cb() function as intended? If not, when can this be fixed? The ticket above is at least a year old and the github issue has been posted since March without a response.

Related