Using SPI_DEVICE_NO_DUMMY flag overrides the internal logic and seems to have best results, just not good enough, even when explicitly using .dummy_bits = 0 and .input_delay_ns = 0.
That in the end might seem like S3 samples data on wrong edge, but in fact it is just the delay - this may or may not be OP's and chrises situation.
Also, there is currently (IDF v5.1.2) a condition for targets other than regular ESP32 in spi_get_timing() and spi_get_freq_limit() stating:
Code: Select all
//TODO: IDF-6578
ESP_LOGW(SPI_TAG, "This func temporary not supported for current target!");