I wanted to hook up my lovely SparkFun BME280 / CCS811 Qwiic board to my SAMD51 Thing Plus (for a solar-powered LoRaWAN environmental sensor :D), but ran into some issues compiling a sketch with this library.
I pared it down to this sketch, which I believe is the bare minimum needed to get the BME280 working:
#include <SparkFunBME280.h>
BME280 bme280;
void setup() {
Serial.begin(9600);
while (!Serial) ;
bme280.settings.commInterface = I2C_MODE;
bme280.settings.I2CAddress = 0x77;
bme280.settings.runMode = 3; // 3, Normal mode
bme280.settings.tStandby = 0; // 0, 0.5ms
bme280.settings.filter = 0; // 0, filter off
//tempOverSample can be:
// 0, skipped
// 1 through 5, oversampling *1, *2, *4, *8, *16 respectively
bme280.settings.tempOverSample = 1;
//pressOverSample can be:
// 0, skipped
// 1 through 5, oversampling *1, *2, *4, *8, *16 respectively
bme280.settings.pressOverSample = 1;
//humidOverSample can be:
// 0, skipped
// 1 through 5, oversampling *1, *2, *4, *8, *16 respectively
bme280.settings.humidOverSample = 1;
if (bme280.begin() != 0x60) {
Serial.println("BME280 failed");
while (1);
}
Serial.println("OK");
}
void loop() {
// put your main code here, to run repeatedly:
}
But it doesn't compile:
Arduino: 1.8.9 (Linux), TD: 1.47, Board: "SparkFun SAMD51 Thing Plus"
Build options changed, rebuilding all
/home/kyle/Arduino/libraries/SparkFun_BME280/src/SparkFunBME280.cpp: In member function 'uint8_t BME280::begin()':
/home/kyle/Arduino/libraries/SparkFun_BME280/src/SparkFunBME280.cpp:98:23: error: 'SPI_CLOCK_DIV32' was not declared in this scope
SPI.setClockDivider(SPI_CLOCK_DIV32);
^
exit status 1
Error compiling for board SparkFun SAMD51 Thing Plus.
I've verified that this works with the RedBoard Turbo.
My investigation shows that the SparkFun SAMD core only defines the clock dividers for 48MHz CPUs; I'll try to follow on with a PR for that in that repo. In the meantime, I've added the following after the 48MHz definitions (in ~/.arduino15/packages/SparkFun/hardware/samd/1.7.0/libraries/SPI):
I wanted to hook up my lovely SparkFun BME280 / CCS811 Qwiic board to my SAMD51 Thing Plus (for a solar-powered LoRaWAN environmental sensor :D), but ran into some issues compiling a sketch with this library.
I pared it down to this sketch, which I believe is the bare minimum needed to get the BME280 working:
But it doesn't compile:
I've verified that this works with the RedBoard Turbo.
My investigation shows that the SparkFun SAMD core only defines the clock dividers for 48MHz CPUs; I'll try to follow on with a PR for that in that repo. In the meantime, I've added the following after the 48MHz definitions (in ~/.arduino15/packages/SparkFun/hardware/samd/1.7.0/libraries/SPI):
where each value is (120 MHz / 16 MHz * divider), as with the block above it.
Cheers!