| 
				
			 | 
			
			 | 
			@@ -143,13 +143,18 @@ static void spiSend(uint8_t b) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			/** SPI send multiple bytes */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#elif defined(__IMXRT1052__)  || defined(__IMXRT1062__)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 #define USE_TEENSY4_SPI
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#elif defined(__IMXRT1052__)  || defined(__IMXRT1062__) || defined(__MKL26Z64__)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 #define USE_SPI_LIB
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 static void spiInit(uint8_t spiRate) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  switch (spiRate) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#ifdef __MKL26Z64__
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // the top 2 speeds are set to 24 MHz, for the SD library defaults
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    case 0:  settings = SPISettings(24000000, MSBFIRST, SPI_MODE0); break;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#else
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // the top 2 speeds are set to 24 MHz, for the SD library defaults
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    case 0:  settings = SPISettings(25200000, MSBFIRST, SPI_MODE0); break;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    case 1:  settings = SPISettings(24000000, MSBFIRST, SPI_MODE0); break;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    case 2:  settings = SPISettings(8000000, MSBFIRST, SPI_MODE0); break;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    case 3:  settings = SPISettings(4000000, MSBFIRST, SPI_MODE0); break;
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -267,7 +272,7 @@ uint8_t Sd2Card::SD_init(uint8_t sckRateID, uint8_t chipSelectPin) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if defined(USE_TEENSY3_SPI)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  spiBegin();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  spiInit(6);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#elif defined(USE_TEENSY4_SPI)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#elif defined(USE_SPI_LIB)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  spiInit(6);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  pinMode(SS_PIN, OUTPUT);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  digitalWrite(SS_PIN, HIGH); // disable any SPI device using hardware SS pin  
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -360,7 +365,7 @@ uint8_t Sd2Card::SD_readBlock(uint32_t block, uint8_t* dst) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  if (!waitStartBlock()) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    goto fail;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if defined(USE_TEENSY3_SPI) | defined(USE_TEENSY4_SPI)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if defined(USE_TEENSY3_SPI) | defined(USE_SPI_LIB)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  spiRec(dst, 512);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  spiRecIgnore(2);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#else  // OPTIMIZE_HARDWARE_SPI
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -408,7 +413,7 @@ uint8_t Sd2Card::SD_readBlock(uint32_t block, uint8_t* dst) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * false, is returned for an invalid value of \a sckRateID.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			uint8_t Sd2Card::setSckRate(uint8_t sckRateID) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if defined(USE_TEENSY3_SPI) || defined(USE_TEENSY4_SPI)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if defined(USE_TEENSY3_SPI) || defined(USE_SPI_LIB)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  spiInit(sckRateID);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#else
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -506,7 +511,7 @@ uint8_t Sd2Card::SD_writeBlock(uint32_t blockNumber, const uint8_t* src) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			//------------------------------------------------------------------------------
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// send one block of data for write block or write multiple blocks
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			uint8_t Sd2Card::writeData(uint8_t token, const uint8_t* src) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if defined(OPTIMIZE_HARDWARE_SPI) && !defined(USE_TEENSY4_SPI)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if defined(OPTIMIZE_HARDWARE_SPI) && !defined(USE_SPI_LIB)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // send data - optimized loop
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  SPDR = token;
 |