@@ -88,8 +88,10 @@ Adafruit_SPIDevice::~Adafruit_SPIDevice() {
88
88
* init
89
89
*/
90
90
bool Adafruit_SPIDevice::begin (void ) {
91
- pinMode (_cs, OUTPUT);
92
- digitalWrite (_cs, HIGH);
91
+ if (_cs != -1 ) {
92
+ pinMode (_cs, OUTPUT);
93
+ digitalWrite (_cs, HIGH);
94
+ }
93
95
94
96
if (_spi) { // hardware SPI
95
97
_spi->begin ();
@@ -299,7 +301,7 @@ bool Adafruit_SPIDevice::write(uint8_t *buffer, size_t len,
299
301
_spi->beginTransaction (*_spiSetting);
300
302
}
301
303
302
- digitalWrite (_cs, LOW);
304
+ setChipSelect ( LOW);
303
305
// do the writing
304
306
#if defined(ARDUINO_ARCH_ESP32)
305
307
if (_spi) {
@@ -319,7 +321,7 @@ bool Adafruit_SPIDevice::write(uint8_t *buffer, size_t len,
319
321
transfer (buffer[i]);
320
322
}
321
323
}
322
- digitalWrite (_cs, HIGH);
324
+ setChipSelect ( HIGH);
323
325
324
326
if (_spi) {
325
327
_spi->endTransaction ();
@@ -362,9 +364,10 @@ bool Adafruit_SPIDevice::read(uint8_t *buffer, size_t len, uint8_t sendvalue) {
362
364
if (_spi) {
363
365
_spi->beginTransaction (*_spiSetting);
364
366
}
365
- digitalWrite (_cs, LOW);
367
+
368
+ setChipSelect (LOW);
366
369
transfer (buffer, len);
367
- digitalWrite (_cs, HIGH);
370
+ setChipSelect ( HIGH);
368
371
369
372
if (_spi) {
370
373
_spi->endTransaction ();
@@ -406,7 +409,7 @@ bool Adafruit_SPIDevice::write_then_read(uint8_t *write_buffer,
406
409
_spi->beginTransaction (*_spiSetting);
407
410
}
408
411
409
- digitalWrite (_cs, LOW);
412
+ setChipSelect ( LOW);
410
413
// do the writing
411
414
#if defined(ARDUINO_ARCH_ESP32)
412
415
if (_spi) {
@@ -452,7 +455,7 @@ bool Adafruit_SPIDevice::write_then_read(uint8_t *write_buffer,
452
455
DEBUG_SERIAL.println ();
453
456
#endif
454
457
455
- digitalWrite (_cs, HIGH);
458
+ setChipSelect ( HIGH);
456
459
457
460
if (_spi) {
458
461
_spi->endTransaction ();
@@ -476,11 +479,9 @@ bool Adafruit_SPIDevice::write_and_read(uint8_t *buffer, size_t len) {
476
479
_spi->beginTransaction (*_spiSetting);
477
480
}
478
481
479
- digitalWrite (_cs, LOW);
480
-
482
+ setChipSelect (LOW);
481
483
transfer (buffer, len);
482
-
483
- digitalWrite (_cs, HIGH);
484
+ setChipSelect (HIGH);
484
485
485
486
if (_spi) {
486
487
_spi->endTransaction ();
@@ -489,4 +490,10 @@ bool Adafruit_SPIDevice::write_and_read(uint8_t *buffer, size_t len) {
489
490
return true ;
490
491
}
491
492
493
+ void Adafruit_SPIDevice::setChipSelect (int value) {
494
+ if (_cs == -1 )
495
+ return ;
496
+ digitalWrite (_cs, value);
497
+ }
498
+
492
499
#endif // SPI exists
0 commit comments