11-09-2020 02:53 AM
I am using a BME280 sensor with STM32L476RG microcontroler.
I am having trouble with the bme280_init() function.
In this function, I pass the first null_ptr_check() so dev , dev->read , dev->write and dev->delay_us are different from NULL.
But just after that when I enter the bme280_get_regs() function, I don't pass the null_ptr_check() whereas my device structure has not changed.
I investigated the matter with a debugger and I found out dev->intf_ptr has changed from BME280_SPI_INTF to BME280_I2C_INT, which I don't understand as there was no redefinition of the device structure.
Could someone help me?
Solved! Go to Solution.
11-09-2020 03:25 AM
Maybe lose some configuration. Please check code any different with our example code in BME280_driver.
11-09-2020 04:17 AM
Thanks for the reply.
Well, I based my code on the driver example from the beginning.
What I find awkward is that the two null_ptr_check(dev) functions are almost consecutive and that I pass the first null_ptr_check(dev) but not the second without the device structure redifinition.
I attach a picture of the bug location : bme280_init() and just above there is the device structure definition similar to the one in the driver example.
11-09-2020 07:56 AM
In bme280_init(), the first null_ptr_check(dev) is ok, but the next null_ptr_check() in bme280_get_regs(BME280_CHIP_ID_ADDR, &chip_id, 1, dev) is failed, and interface change from SPI to I2C?
It's realy stange, could you please single step print log to confirm the workflow is correct?
11-09-2020 10:41 PM
Could you give me what is error code for rslt?
You can print out with rslt value.
And, you can check the error with bme280_defs.h 🙂