@@ -86,24 +86,6 @@ uint8_t BME280::begin()
8686	case  SPI_MODE:
8787		//  start the SPI library:
8888		SPI.begin ();
89- 		#ifdef  ARDUINO_ARCH_ESP32
90- 		SPI.setFrequency (1000000 );
91- 		//  Data is read and written MSb first.
92- 		SPI.setBitOrder (SPI_MSBFIRST);
93- 		//  Like the standard arduino/teensy comment below, mode0 seems wrong according to standards
94- 		//  but conforms to the timing diagrams when used for the ESP32
95- 		SPI.setDataMode (SPI_MODE0);
96- 		#else 
97- 		//  Maximum SPI frequency is 10MHz, could divide by 2 here:
98- 		SPI.setClockDivider (SPI_CLOCK_DIV32);
99- 		//  Data is read and written MSb first.
100- 		SPI.setBitOrder (MSBFIRST);
101- 		//  Data is captured on rising edge of clock (CPHA = 0)
102- 		//  Base value of the clock is HIGH (CPOL = 1)
103- 		//  This was SPI_MODE3 for RedBoard, but I had to change to
104- 		//  MODE0 for Teensy 3.1 operation
105- 		SPI.setDataMode (SPI_MODE3);
106- 		#endif 
10789		//  initialize the  data ready and chip select pins:
10890		pinMode (settings.chipSelectPin , OUTPUT);
10991		digitalWrite (settings.chipSelectPin , HIGH);
@@ -586,6 +568,7 @@ void BME280::readRegisterRegion(uint8_t *outputPointer , uint8_t offset, uint8_t
586568		break ;
587569
588570	case  SPI_MODE:
571+ 		SPI.beginTransaction (settings.spiSettings );
589572		//  take the chip select low to select the device:
590573		digitalWrite (settings.chipSelectPin , LOW);
591574		//  send the device the register you want to read:
@@ -599,6 +582,7 @@ void BME280::readRegisterRegion(uint8_t *outputPointer , uint8_t offset, uint8_t
599582		}
600583		//  take the chip select high to de-select:
601584		digitalWrite (settings.chipSelectPin , HIGH);
585+ 		SPI.endTransaction ();
602586		break ;
603587
604588	default :
@@ -647,14 +631,7 @@ uint8_t BME280::readRegister(uint8_t offset)
647631		break ;
648632
649633	case  SPI_MODE:
650- 		//  take the chip select low to select the device:
651- 		digitalWrite (settings.chipSelectPin , LOW);
652- 		//  send the device the register you want to read:
653- 		SPI.transfer (offset | 0x80 );  // Ored with "read request" bit
654- 		//  send a value of 0 to read the first byte returned:
655- 		result = SPI.transfer (0x00 );
656- 		//  take the chip select high to de-select:
657- 		digitalWrite (settings.chipSelectPin , HIGH);
634+ 		readRegisterRegion (&result, offset, 1 );
658635		break ;
659636
660637	default :
@@ -699,6 +676,7 @@ void BME280::writeRegister(uint8_t offset, uint8_t dataToWrite)
699676		break ;
700677
701678	case  SPI_MODE:
679+ 		SPI.beginTransaction (settings.spiSettings );
702680		//  take the chip select low to select the device:
703681		digitalWrite (settings.chipSelectPin , LOW);
704682		//  send the device the register you want to read:
@@ -708,6 +686,7 @@ void BME280::writeRegister(uint8_t offset, uint8_t dataToWrite)
708686		//  decrement the number of bytes left to read:
709687		//  take the chip select high to de-select:
710688		digitalWrite (settings.chipSelectPin , HIGH);
689+ 		SPI.endTransaction ();
711690		break ;
712691
713692	default :
0 commit comments