Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 
    SOLVED

    BME680 always results in BME680_W_NO_NEW_DATA

    mayor
    Established Member

    BME680 always results in BME680_W_NO_NEW_DATA

    Hi, I am integrating a BME680 with a TI CC1312 microcontroller. I can communicate fine with the sensor over I2C, from all appearances, but any time I am trying to take readings (even from the self-test from https://github.com/BoschSensortec/BME680_driver), I am getting no new data from the sensor. I have also tried a couple different units, getting the same results.

    Here's some calibration info:

    par_h1	unsigned short	717	
    par_h2	unsigned short	1022	
    par_h3	char	0 '\x00'	
    par_h4	char	45 '-'	
    par_h5	char	20 '\x14'	
    par_h6	unsigned char	120 'x'	
    par_h7	char	-100 '\x9c'		
    par_gh1	char	-47 '\xd1'		
    par_gh2	short	-11597	
    par_gh3	char	18 '\x12'	
    par_t1	unsigned short	26045	
    par_t2	short	26419	
    par_t3	char	3 '\x03'	
    par_p1	unsigned short	36759	
    par_p2	short	-10411		
    par_p3	char	88 'X'		
    par_p4	short	7301	
    par_p5	short	-50		
    par_p6	char	30 '\x1e'	
    par_p7	char	51 '3'		
    par_p8	short	-3768	
    par_p9	short	-2137		
    par_p10	unsigned char	30 '\x1e'	
    t_fine	int	0	
    res_heat_range	unsigned char	1 '\x01'	
    res_heat_val	char	47 '/'		
    range_sw_err	char	-1 '\xff'	

     And this is what comes out from the sensor when trying to read data:

    [0]	unsigned char	0 '\x00'	
    [1]	unsigned char	0 '\x00'	
    [2]	unsigned char	128 '\x80'
    [3]	unsigned char	0 '\x00'
    [4]	unsigned char	0 '\x00'
    [5]	unsigned char	128 '\x80'
    [6]	unsigned char	0 '\x00'	
    [7]	unsigned char	0 '\x00'
    [8]	unsigned char	128 '\x80'
    [9]	unsigned char	0 '\x00'
    [10]	unsigned char	128 '\x80'
    [11]	unsigned char	0 '\x00'
    [12]	unsigned char	0 '\x00'
    [13]	unsigned char	0 '\x00'
    [14]	unsigned char	4 '\x04'

     

    Any help appreciated!

    12 REPLIES 12
    Vincent
    Community Moderator

    PleaRe: BME680 always results in BME680_W_NO_NEW_DATA

    Please share your code implementation here. 

    From the register value you posted,  the measurement of sensor is not really happen,  all result is 0.  

    mayor
    Established Member

    Re: PleaRe: BME680 always results in BME680_W_NO_NEW_DATA

    Hi Vincent,

    well, my code is essentially the self-test code from the Bosh GitHub.

    I have created read/write i2c functions as well as delay, which appear to be working (I can read and write to registers, see calibration registers).

    int8_t BME680::i2c_read(uint8_t reg_addr, uint8_t *reg_data, uint16_t len) {
        uint8_t writeBuf[1] = {reg_addr};
        i2cTransaction.readCount = len;
        i2cTransaction.readBuf = reg_data;
        i2cTransaction.writeCount = 1;
        i2cTransaction.writeBuf = writeBuf;
        bool status = I2C_transfer(i2c, &i2cTransaction);
        return !status;
    }
    
    int8_t BME680::i2c_write(uint8_t reg_addr, uint8_t *reg_data, uint16_t len) {
        i2cTransaction.readCount  = 0;
        i2cTransaction.writeCount = len;
        i2cTransaction.writeBuf = reg_data;
        bool status = I2C_transfer(i2c, &i2cTransaction);
        return !status;
    }
    
    void BME680::delay(uint32_t delayMs) {
        Task_sleep(delayMs*100); //fixme, must take into account actual duration of a tick (10us here)
    }

     

    Vincent
    Community Moderator

    Re: PleaRe: BME680 always results in BME680_W_NO_NEW_DATA

    Then in this case,  can you try to read out whole register map of BME680 and provide here?  

    mayor
    Established Member

    Re: PleaRe: BME680 always results in BME680_W_NO_NEW_DATA

    Hi,

    here's what I see (same order as they appear in the docs):

    0xd0: 97
    0x72: 0
    0x74: 100
    0x75: 0
    0x50: 0
    0x51: 0
    0x52: 0
    0x53: 0
    0x54: 114
    0x55: 0
    0x56: 0
    0x57: 0
    0x58: 0
    0x59: 0
    0x5a: 0
    0x5b: 0
    0x5c: 0
    0x5d: 0
    0x5e: 0
    0x5f: 0
    0x60: 0
    0x61: 0
    0x62: 0
    0x63: 0
    0x64: 0
    0x65: 0
    0x66: 0
    0x67: 0
    0x68: 0
    0x69: 0
    0x6a: 0
    0x6b: 0
    0x6c: 0
    0x6d: 0
    0x70: 0
    0x71: 0
    0x1f: 128
    0x20: 0
    0x21: 0
    0x22: 128
    0x23: 0
    0x24: 0
    0x25: 128
    0x26: 0
    0x2a: 0
    0x2b: 4
    0x1d: 0

     

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist