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.
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.
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?
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 🙂