Clean SPI transactions?
fkromer opened this issue · comments
According to the SPI lib reference the usage of SPI.beginTransaction()
and SPI.endTransaction()
allows to restrict SPI access to a specific device. It seems like the SD lib uses SPI.endTransaction()
after init and as part of erase methods only.
Sd2Card::init
:Line 296 in 85dbcca
Sd2Card::chipSelectHigh
:Line 182 in 85dbcca
uint8_t Sd2Card::erase(uint32_t firstBlock, uint32_t lastBlock)
:Line 229 in 85dbcca
Freeing the SPI resource after usage for classes Sd2Card
and SdVolume
is missing as well. Would it make sense to check if the SD lib frees the SPI resource after usage (e.g. writing, reading, etc.) properly?
I can confirm that the SD card on the shared SPI bus creates a problem and failed to access the card after a while.
For this reason, I had to port to SDFat library and voila, it was a big relief.