diff --git a/src/machine/machine_fe310.go b/src/machine/machine_fe310.go index dab69e9d..062abf6d 100644 --- a/src/machine/machine_fe310.go +++ b/src/machine/machine_fe310.go @@ -174,11 +174,13 @@ func (spi SPI) Transfer(w byte) (byte, error) { spi.Bus.TXDATA.Set(uint32(w)) // wait until receive has data - for spi.Bus.RXDATA.HasBits(sifive.QSPI_RXDATA_EMPTY) { + data := spi.Bus.RXDATA.Get() + for data&sifive.QSPI_RXDATA_EMPTY > 0 { + data = spi.Bus.RXDATA.Get() } // return data - return byte(spi.Bus.RXDATA.Get() & sifive.QSPI_RXDATA_DATA_Msk), nil + return byte(data), nil } // I2C on the FE310-G002.