Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BMP585 using more current then expected

    BMP585 using more current then expected

    drew_f
    New Poster

    I have multiple boards with the BMP585 and they all functionally do the same thing. I am using it to poll pressure data and send an ISR when it gets a sample. It all works but each board consumes different amounts of current. I found out after graphing the current usage that the BMP585 is taking a lot more measurements than at the rate I tell it, but it is random per board. 

    Some boards measure at the frequency that I told it and others are seemingly doing a bunch of measurements in the background. 

    I am unsure if I am missing a register, but I am using the API supplied. The configuration of the device is below. I want it to send an ISR at 5Hz with a new data point I can grab. I don't need the FIFO. 

     

    Edit: I have done some more testing and even when I put the sensor in standby mode, I can see from the current measurement plot that it is still taking measurements. Reading back the mode is correct. It says it is in standby. 

     

    Second Edit: During more testing the inconsistency is still happening even between modes. On some boards the sensor when put into stanby I can see it stop measuring with the current plot. While others seem to keep taking measurements. 

     

     

     

    // Set it up to alert us when FIFO is above a certain level
                struct bmp5_int_source_select intSources;
                intSources.drdy_en = BMP5_ENABLE; // Get alerted for each sample
                intSources.fifo_full_en = BMP5_DISABLE;
                intSources.fifo_thres_en = BMP5_DISABLE;
                intSources.oor_press_en = BMP5_DISABLE;
                errCheck(bmp5_int_source_select(&intSources, &m_bmp585Dev), "");
    
                // Set up the OverSampling and Output Data Rate
                struct bmp5_osr_odr_press_config odrCfg;
                odrCfg.odr = BMP5_ODR_05_HZ;        // See ODR settings.
                odrCfg.osr_p = BMP5_OVERSAMPLING_4X; // It says that 4x oversample gets standard resolution
                odrCfg.osr_t = BMP5_OVERSAMPLING_1X; // 1x temp and 4x pressure get standard resolution
                odrCfg.press_en = BMP5_ENABLE;       // Enable pressure sensing, else it's just temperature
                errCheck(bmp5_set_osr_odr_press_config(&odrCfg, &m_bmp585Dev), "Fault setting odr settings slow");
    
                // Disable the FIFO, have it alert us with every sample
                m_bmp5FifoCfg.frame_sel = BMP5_FIFO_NOT_ENABLED;
                m_bmp5FifoCfg.dec_sel = BMP5_FIFO_NO_DOWNSAMPLING;
                m_bmp5FifoCfg.mode = BMP5_FIFO_MODE_STREAMING; // Why not get the latest data if we are late?
                m_bmp5FifoCfg.threshold = 0;
                m_bmp5FifoCfg.set_fifo_iir_p = BMP5_DISABLE;
                m_bmp5FifoCfg.set_fifo_iir_t = BMP5_DISABLE;
                // Set up pointers for later, not needed for the chip init
                m_bmp5FifoCfg.data = m_pFifoBytes;
                m_bmp5FifoCfg.length = sizeof(m_pFifoBytes); // FIFO_count field could be up to 63, but datasheet says max of 16 PT or 32 T frames
                // *data, length, fifo_count not used here
    
                errCheck(bmp5_set_fifo_configuration(&m_bmp5FifoCfg, &m_bmp585Dev), "Setting fifo config slow");
    
                /* set power mode */
                errCheck(bmp5_set_power_mode(BMP5_POWERMODE_NORMAL, &m_bmp585Dev), "setting power normal");

     

     

     

    1 REPLY 1

    BSTRobin
    Community Moderator
    Community Moderator

    Hi drew_f,

    You can strictly refer to this example code https://github.com/boschsensortec/BMP5-Sensor-API/blob/master/examples/read_sensor_data_normal_mode/... which demonstrate data ready interrupt example.

    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