Merge pull request #76 from monroewilliams/master

Faster hardware SPI writes on ESP32
This commit is contained in:
Limor "Ladyada" Fried 2022-01-12 13:47:24 -05:00 committed by GitHub
commit edd38996a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 7 deletions

View File

@ -301,12 +301,24 @@ bool Adafruit_SPIDevice::write(uint8_t *buffer, size_t len,
digitalWrite(_cs, LOW);
// do the writing
#if defined(ARDUINO_ARCH_ESP32)
if (_spi) {
if (prefix_len > 0) {
_spi->transferBytes(prefix_buffer, nullptr, prefix_len);
}
if (len > 0) {
_spi->transferBytes(buffer, nullptr, len);
}
} else
#endif
{
for (size_t i = 0; i < prefix_len; i++) {
transfer(prefix_buffer[i]);
}
for (size_t i = 0; i < len; i++) {
transfer(buffer[i]);
}
}
digitalWrite(_cs, HIGH);
if (_spi) {
@ -396,9 +408,18 @@ bool Adafruit_SPIDevice::write_then_read(uint8_t *write_buffer,
digitalWrite(_cs, LOW);
// do the writing
#if defined(ARDUINO_ARCH_ESP32)
if (_spi) {
if (write_len > 0) {
_spi->transferBytes(write_buffer, nullptr, write_len);
}
} else
#endif
{
for (size_t i = 0; i < write_len; i++) {
transfer(write_buffer[i]);
}
}
#ifdef DEBUG_SERIAL
DEBUG_SERIAL.print(F("\tSPIDevice Wrote: "));