rp2040: spi - enable fifo

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
This commit is contained in:
Timofey Titovets 2025-05-23 02:52:46 +02:00 committed by KevinOConnor
parent de182b1d14
commit f4130aa948

View File

@ -132,11 +132,15 @@ void
spi_transfer(struct spi_config config, uint8_t receive_data, spi_transfer(struct spi_config config, uint8_t receive_data,
uint8_t len, uint8_t *data) uint8_t len, uint8_t *data)
{ {
uint8_t* wptr = data;
uint8_t* end = data + len;
spi_hw_t *spi = config.spi; spi_hw_t *spi = config.spi;
while (len--) { while (data < end) {
spi->dr = *data; uint32_t sr = spi->sr & (SPI_SSPSR_TNF_BITS | SPI_SSPSR_RNE_BITS);
while (!(spi->sr & SPI_SSPSR_RNE_BITS)) if ((sr == SPI_SSPSR_TNF_BITS) && wptr < end)
; spi->dr = *wptr++;
if (!(sr & SPI_SSPSR_RNE_BITS))
continue;
uint8_t rdata = spi->dr; uint8_t rdata = spi->dr;
if(receive_data) if(receive_data)
*data = rdata; *data = rdata;