0

BME680 Wrong ChipID
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

BME680 Wrong ChipID

by TahoeGreg on Thu Nov 07, 2019 10:17 pm

I am using the BME680 breakout and have connected it to my ST controller. When I run the Bosch S/W it queries the device for the chip ID.

The device responds with a value of 0x60. The software expects 0x61.

Reviewing the Package information it shows markings of

069
SP

From the datasheet
The S indicates a BME680 for PN 0 273 141 229
The P is the sub contractor.

Have you had any parts marked incorrectly?

BTW the ID of the 0x60 represents a BME280 part

TahoeGreg
 
Posts: 3
Joined: Thu Nov 07, 2019 10:03 pm

Re: BME680 Wrong ChipID

by adafruit_support_mike on Fri Nov 08, 2019 3:51 am

Post a photo showing your hardware and connections and we'll take a look. 800x600 images usually work best.

adafruit_support_mike
 
Posts: 59421
Joined: Thu Feb 11, 2010 2:51 pm

Re: BME680 Wrong ChipID

by millercommamatt on Fri Nov 08, 2019 10:38 am

This would produce the same error this person is seeing on a BME280: viewtopic.php?f=8&t=158426

millercommamatt
 
Posts: 507
Joined: Tue Jul 31, 2018 4:57 pm

Re: BME680 Wrong ChipID

by TahoeGreg on Fri Nov 08, 2019 1:41 pm

The hardware setup is included in the attached file.

You will see that the CSD input is connected to the VIN (3.3V) and the SDO connected to Ground to set the address to 0x76
The clip leads go to a scope as I was watching the actual I2C transactions. The data from my source code is here

BME680 Invalid Chip ID 0x60, expecting 0x61
BME680 Failed to Initialize: -3
Failed to initialize Environmental sensor

This comes from the Bosch Supplied driver. - I added the extra diag to display the actual returned value

Code: Select all | TOGGLE FULL SIZE
BME680 Invalid Chip ID 0x60, expecting 0x61
BME680 Failed to Initialize: -3
Failed to initialize Environmental sensor


The source code that generates this is:
Code: Select all | TOGGLE FULL SIZE
/*!
 *@brief This API is the entry point.
 *It reads the chip-id and calibration data from the sensor.
 */
int8_t bme680_init(struct bme680_dev *dev)
{
   int8_t rslt;

   /* Check for null pointer in the device structure*/
   rslt = null_ptr_check(dev);
   if (rslt == BME680_OK) {
      /* Soft reset to restore it to default values*/
      rslt = bme680_soft_reset(dev);
      if (rslt == BME680_OK) {
         rslt = bme680_get_regs(BME680_CHIP_ID_ADDR, &dev->chip_id, 1, dev);
         if (rslt == BME680_OK) {
            if( dev->chip_id == BME680_CHIP_ID ) {
               /* Get the Calibration data */
               rslt = get_calib_data(dev);
            } else {
                printf( "BME680 Invalid Chip ID 0x%02x, expecting 0x%02x\r\n", dev->chip_id, BME680_CHIP_ID );
               rslt = BME680_E_DEV_NOT_FOUND;
            }
         }
      }
   }

   return rslt;
}


1.png
Hardware used for this test
1.png (639.23 KiB) Viewed 80 times

TahoeGreg
 
Posts: 3
Joined: Thu Nov 07, 2019 10:03 pm

Re: BME680 Wrong ChipID

by adafruit_support_mike on Sat Nov 09, 2019 1:31 am

The code you have must be out of date, or for some other variant of the chip. The BME680 datasheet we have specs an ID of 0x61:

https://cdn-shop.adafruit.com/product-f ... BME680.pdf

Table 16, page 25.. about the third row from the top.

adafruit_support_mike
 
Posts: 59421
Joined: Thu Feb 11, 2010 2:51 pm

Re: BME680 Wrong ChipID

by TahoeGreg on Sun Nov 10, 2019 9:44 pm

Thank you for your assistance - The issue has been corrected. A small bug in the I2C interface code.

TahoeGreg
 
Posts: 3
Joined: Thu Nov 07, 2019 10:03 pm

Please be positive and constructive with your questions and comments.