@@ -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