diff --git a/drivers/SPI.cpp b/drivers/SPI.cpp index fc52be754d..d679a9c0a8 100644 --- a/drivers/SPI.cpp +++ b/drivers/SPI.cpp @@ -41,9 +41,14 @@ SPI::SPI(PinName mosi, PinName miso, PinName sclk, PinName ssel) : _write_fill(SPI_FILL_CHAR) { // No lock needed in the constructor - spi_init(&_spi, mosi, miso, sclk, ssel); - _acquire(); +} + +SPI::~SPI() +{ + if (_owner == this) { + _owner = NULL; + } } void SPI::format(int bits, int mode) diff --git a/drivers/SPI.h b/drivers/SPI.h index 8d24dcc966..7c8e7d6103 100644 --- a/drivers/SPI.h +++ b/drivers/SPI.h @@ -87,6 +87,7 @@ public: * @param ssel SPI chip select pin */ SPI(PinName mosi, PinName miso, PinName sclk, PinName ssel = NC); + virtual ~SPI(); /** Configure the data transmission format * @@ -272,11 +273,6 @@ private: #endif -public: - virtual ~SPI() - { - } - protected: spi_t _spi;