Merge pull request #80 from caternuson/no_cs
Refinements for no CS configs
This commit is contained in:
commit
b689ae60a2
|
|
@ -88,8 +88,10 @@ Adafruit_SPIDevice::~Adafruit_SPIDevice() {
|
||||||
* init
|
* init
|
||||||
*/
|
*/
|
||||||
bool Adafruit_SPIDevice::begin(void) {
|
bool Adafruit_SPIDevice::begin(void) {
|
||||||
pinMode(_cs, OUTPUT);
|
if (_cs != -1) {
|
||||||
digitalWrite(_cs, HIGH);
|
pinMode(_cs, OUTPUT);
|
||||||
|
digitalWrite(_cs, HIGH);
|
||||||
|
}
|
||||||
|
|
||||||
if (_spi) { // hardware SPI
|
if (_spi) { // hardware SPI
|
||||||
_spi->begin();
|
_spi->begin();
|
||||||
|
|
@ -299,7 +301,7 @@ bool Adafruit_SPIDevice::write(uint8_t *buffer, size_t len,
|
||||||
_spi->beginTransaction(*_spiSetting);
|
_spi->beginTransaction(*_spiSetting);
|
||||||
}
|
}
|
||||||
|
|
||||||
digitalWrite(_cs, LOW);
|
setChipSelect(LOW);
|
||||||
// do the writing
|
// do the writing
|
||||||
#if defined(ARDUINO_ARCH_ESP32)
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
if (_spi) {
|
if (_spi) {
|
||||||
|
|
@ -319,7 +321,7 @@ bool Adafruit_SPIDevice::write(uint8_t *buffer, size_t len,
|
||||||
transfer(buffer[i]);
|
transfer(buffer[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
digitalWrite(_cs, HIGH);
|
setChipSelect(HIGH);
|
||||||
|
|
||||||
if (_spi) {
|
if (_spi) {
|
||||||
_spi->endTransaction();
|
_spi->endTransaction();
|
||||||
|
|
@ -362,9 +364,10 @@ bool Adafruit_SPIDevice::read(uint8_t *buffer, size_t len, uint8_t sendvalue) {
|
||||||
if (_spi) {
|
if (_spi) {
|
||||||
_spi->beginTransaction(*_spiSetting);
|
_spi->beginTransaction(*_spiSetting);
|
||||||
}
|
}
|
||||||
digitalWrite(_cs, LOW);
|
|
||||||
|
setChipSelect(LOW);
|
||||||
transfer(buffer, len);
|
transfer(buffer, len);
|
||||||
digitalWrite(_cs, HIGH);
|
setChipSelect(HIGH);
|
||||||
|
|
||||||
if (_spi) {
|
if (_spi) {
|
||||||
_spi->endTransaction();
|
_spi->endTransaction();
|
||||||
|
|
@ -406,7 +409,7 @@ bool Adafruit_SPIDevice::write_then_read(uint8_t *write_buffer,
|
||||||
_spi->beginTransaction(*_spiSetting);
|
_spi->beginTransaction(*_spiSetting);
|
||||||
}
|
}
|
||||||
|
|
||||||
digitalWrite(_cs, LOW);
|
setChipSelect(LOW);
|
||||||
// do the writing
|
// do the writing
|
||||||
#if defined(ARDUINO_ARCH_ESP32)
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
if (_spi) {
|
if (_spi) {
|
||||||
|
|
@ -452,7 +455,7 @@ bool Adafruit_SPIDevice::write_then_read(uint8_t *write_buffer,
|
||||||
DEBUG_SERIAL.println();
|
DEBUG_SERIAL.println();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
digitalWrite(_cs, HIGH);
|
setChipSelect(HIGH);
|
||||||
|
|
||||||
if (_spi) {
|
if (_spi) {
|
||||||
_spi->endTransaction();
|
_spi->endTransaction();
|
||||||
|
|
@ -476,11 +479,9 @@ bool Adafruit_SPIDevice::write_and_read(uint8_t *buffer, size_t len) {
|
||||||
_spi->beginTransaction(*_spiSetting);
|
_spi->beginTransaction(*_spiSetting);
|
||||||
}
|
}
|
||||||
|
|
||||||
digitalWrite(_cs, LOW);
|
setChipSelect(LOW);
|
||||||
|
|
||||||
transfer(buffer, len);
|
transfer(buffer, len);
|
||||||
|
setChipSelect(HIGH);
|
||||||
digitalWrite(_cs, HIGH);
|
|
||||||
|
|
||||||
if (_spi) {
|
if (_spi) {
|
||||||
_spi->endTransaction();
|
_spi->endTransaction();
|
||||||
|
|
@ -489,4 +490,10 @@ bool Adafruit_SPIDevice::write_and_read(uint8_t *buffer, size_t len) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Adafruit_SPIDevice::setChipSelect(int value) {
|
||||||
|
if (_cs == -1)
|
||||||
|
return;
|
||||||
|
digitalWrite(_cs, value);
|
||||||
|
}
|
||||||
|
|
||||||
#endif // SPI exists
|
#endif // SPI exists
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,7 @@ private:
|
||||||
uint32_t _freq;
|
uint32_t _freq;
|
||||||
BusIOBitOrder _dataOrder;
|
BusIOBitOrder _dataOrder;
|
||||||
uint8_t _dataMode;
|
uint8_t _dataMode;
|
||||||
|
void setChipSelect(int value);
|
||||||
|
|
||||||
int8_t _cs, _sck, _mosi, _miso;
|
int8_t _cs, _sck, _mosi, _miso;
|
||||||
#ifdef BUSIO_USE_FAST_PINIO
|
#ifdef BUSIO_USE_FAST_PINIO
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue