Bosch Sensortec Community

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

    BMI270 Re-Trimming (CRT)

    BMI270 Re-Trimming (CRT)

    Myzhar
    Established Member

    Hi,
    I'm trying to introduce the re-trimming (CRT) feature to improve our production calibration process, but I have a problem with it.

    To perform the CRT process described on the datasheet at page 75 I'm using the `bmi2_do_crt` available in the SDK.

    The problem is that the function always returns the error `BMI2_E_ST_ALREADY_RUNNING` (-23) and I cannot understand what it means and why that happens, the only thing that I noticed is that if I debug the function step-by-step I can complete the processing without any issue.
    It seems like the timings are not correct...

    Any suggestion?

    Thank you
    Walter

    4 REPLIES 4

    Myzhar
    Established Member

    Ok, I solved. I post the correct command sequence to make it working:

     

    // Reset and Initialize bmi270
    bmi270_init(&bmi270_dev);
    
    // Enable Accelerometer
    uint8_t sens_list = BMI2_ACCEL;
    bmi2_sensor_enable(&sens_list, 1, &bmi270_dev);
    
    // Perform CRT process (sensor must not move!)
    bmi2_do_crt(&bmi270_dev);
    
    // Restart the device
    // TODO you own initialization code

     


    This works for me without any issue.

    Walter


    Thanks for reporting this back here !

    Indeed the accelerometer must be enabled for CRT. It is used to validate that the sensor was indeed at rest during the CRT calculation and that the data is valid.

    In the datasheet, this is described in the "Sensitivity Error Compensation" chapter, p.75 of the current version.

    Myzhar
    Established Member

    After CRT I cannot see any effects on my data, the bias on X axis and Y axis  are still the same.

    What result should I expect after performing CRT?
    Is the gain saving to NVM necessary to get the calibration back after reset?

    Thank you
    Walter

    Hi Myzhar,

    CRT is a trimming of the sensitivity. Therefore at rest, it will not change the data.
    FOC is the trimming of the zero-rate offset.

    And the answer to both is yes: They do need to be written to NVM if you want the change to be applied automatically at power-on.
    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