@@ -86,24 +86,6 @@ uint8_t BME280::begin()
86
86
case SPI_MODE:
87
87
// start the SPI library:
88
88
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
107
89
// initialize the data ready and chip select pins:
108
90
pinMode (settings.chipSelectPin , OUTPUT);
109
91
digitalWrite (settings.chipSelectPin , HIGH);
@@ -580,6 +562,7 @@ void BME280::readRegisterRegion(uint8_t *outputPointer , uint8_t offset, uint8_t
580
562
break ;
581
563
582
564
case SPI_MODE:
565
+ SPI.beginTransaction (settings.spiSettings );
583
566
// take the chip select low to select the device:
584
567
digitalWrite (settings.chipSelectPin , LOW);
585
568
// send the device the register you want to read:
@@ -593,6 +576,7 @@ void BME280::readRegisterRegion(uint8_t *outputPointer , uint8_t offset, uint8_t
593
576
}
594
577
// take the chip select high to de-select:
595
578
digitalWrite (settings.chipSelectPin , HIGH);
579
+ SPI.endTransaction ();
596
580
break ;
597
581
598
582
default :
@@ -641,14 +625,7 @@ uint8_t BME280::readRegister(uint8_t offset)
641
625
break ;
642
626
643
627
case SPI_MODE:
644
- // take the chip select low to select the device:
645
- digitalWrite (settings.chipSelectPin , LOW);
646
- // send the device the register you want to read:
647
- SPI.transfer (offset | 0x80 ); // Ored with "read request" bit
648
- // send a value of 0 to read the first byte returned:
649
- result = SPI.transfer (0x00 );
650
- // take the chip select high to de-select:
651
- digitalWrite (settings.chipSelectPin , HIGH);
628
+ readRegisterRegion (&result, offset, 1 );
652
629
break ;
653
630
654
631
default :
@@ -693,6 +670,7 @@ void BME280::writeRegister(uint8_t offset, uint8_t dataToWrite)
693
670
break ;
694
671
695
672
case SPI_MODE:
673
+ SPI.beginTransaction (settings.spiSettings );
696
674
// take the chip select low to select the device:
697
675
digitalWrite (settings.chipSelectPin , LOW);
698
676
// send the device the register you want to read:
@@ -702,6 +680,7 @@ void BME280::writeRegister(uint8_t offset, uint8_t dataToWrite)
702
680
// decrement the number of bytes left to read:
703
681
// take the chip select high to de-select:
704
682
digitalWrite (settings.chipSelectPin , HIGH);
683
+ SPI.endTransaction ();
705
684
break ;
706
685
707
686
default :
0 commit comments