Skip to content

Commit 4163884

Browse files
committed
优化spi传输速率
1 parent 944db54 commit 4163884

File tree

1 file changed

+6
-44
lines changed

1 file changed

+6
-44
lines changed

Adafruit_SPIDevice.cpp

Lines changed: 6 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -119,17 +119,7 @@ bool Adafruit_SPIDevice::begin(void) {
119119
*/
120120
void Adafruit_SPIDevice::transfer(uint8_t *buffer, size_t len) {
121121
if (_spi) {
122-
// hardware SPI is easy
123-
124-
#if defined(SPARK)
125-
_spi->transfer(buffer, buffer, len, NULL);
126-
#elif defined(STM32)
127-
for (size_t i = 0; i < len; i++) {
128-
_spi->transfer(buffer[i]);
129-
}
130-
#else
131122
_spi->transfer(buffer, len);
132-
#endif
133123
return;
134124
}
135125

@@ -287,26 +277,9 @@ bool Adafruit_SPIDevice::write(const uint8_t *buffer, size_t len,
287277
const uint8_t *prefix_buffer,
288278
size_t prefix_len) {
289279
beginTransactionWithAssertingCS();
290-
291280
// do the writing
292-
#if defined(ARDUINO_ARCH_ESP32)
293-
if (_spi) {
294-
if (prefix_len > 0) {
295-
_spi->transferBytes(prefix_buffer, NULL, prefix_len);
296-
}
297-
if (len > 0) {
298-
_spi->transferBytes(buffer, NULL, len);
299-
}
300-
} else
301-
#endif
302-
{
303-
for (size_t i = 0; i < prefix_len; i++) {
304-
transfer(prefix_buffer[i]);
305-
}
306-
for (size_t i = 0; i < len; i++) {
307-
transfer(buffer[i]);
308-
}
309-
}
281+
transfer((uint8_t *)prefix_buffer, prefix_len);
282+
transfer((uint8_t *)buffer, len);
310283
endTransactionWithDeassertingCS();
311284

312285
#ifdef DEBUG_SERIAL
@@ -382,19 +355,9 @@ bool Adafruit_SPIDevice::write_then_read(const uint8_t *write_buffer,
382355
size_t write_len, uint8_t *read_buffer,
383356
size_t read_len, uint8_t sendvalue) {
384357
beginTransactionWithAssertingCS();
358+
385359
// do the writing
386-
#if defined(ARDUINO_ARCH_ESP32)
387-
if (_spi) {
388-
if (write_len > 0) {
389-
_spi->transferBytes(write_buffer, NULL, write_len);
390-
}
391-
} else
392-
#endif
393-
{
394-
for (size_t i = 0; i < write_len; i++) {
395-
transfer(write_buffer[i]);
396-
}
397-
}
360+
transfer((uint8_t *)write_buffer, write_len);
398361

399362
#ifdef DEBUG_SERIAL
400363
DEBUG_SERIAL.print(F("\tSPIDevice Wrote: "));
@@ -410,9 +373,8 @@ bool Adafruit_SPIDevice::write_then_read(const uint8_t *write_buffer,
410373
#endif
411374

412375
// do the reading
413-
for (size_t i = 0; i < read_len; i++) {
414-
read_buffer[i] = transfer(sendvalue);
415-
}
376+
rt_memset(read_buffer, sendvalue, read_len);
377+
transfer(read_buffer, read_len);
416378

417379
#ifdef DEBUG_SERIAL
418380
DEBUG_SERIAL.print(F("\tSPIDevice Read: "));

0 commit comments

Comments
 (0)