Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BMI270 gyro noise on some pieces

    BMI270 gyro noise on some pieces

    aloiseau
    Member

    We have a device with a BMI270 inside, and we calibrate it in factory. Few products fails factory gyro calibration test, returning values outside our hard-coded [-1.0..+1.0] dps bounds despite board being in a stable environment. Accel bounds check works very well.

    I performed a stress test on a table. A good product shows small jittter for gyro after a hundred of loops:

    • gyro X [-0.43 0.00] dps
    • gyro Y [-0.24 0.12] dps
    • gyro Z [-0.24 0.31] dps  -> worst dispersion ~= 0.55 dps

    And a buggy product crashes the test on first measurement loop due to an out-of-bounds gyro value :

    • gyro X -2.08 dps -> value outside -1/+1 is ill enough to terminate my stress test
    • gyro Y 0.00 dps
    • gyro Z 0.24 dps

    Actually, rX is almost always insane, with values up to 6 dps idle, rZ is regularly insane on 1.0 borders and rY is quite ok.

    To my knowledge both products are simular, running same software based on BMI270-Sensor-API 2.71.8.

    For the shake of completness, here is the diff of a dump from a good device to a bad device executed after thoses tests. Good device gyro is -0.1/0.1/-0.2 whereas bad device gyro is  -2.0/0.5/-0.5 dps if I am not wrong at manually reading config (0x42 and 0x43) and values (0x12..0x17).

     sh-4.3# i2cdump -y 1 0x68
          0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    -00: 24 21 00 d0 00 00 00 00 00 00 00 00 c6 ff bf ff    $!.?........?.?.
    +00: 24 21 00 10 00 00 00 00 00 00 00 00 45 00 85 fe $!.?........E.??
    -10: 1b 40 fe ff 02 00 fd ff fb ff 03 00 00 00 00 00 ?@?.?.?.?.?.....
    +10: d7 40 df ff 08 00 f6 ff fb bf 19 00 00 00 00 00 ?@?.?.?.???.....
    20: 18 01 00 80 00 00 00 f7 01 25 00 fc 01 00 00 01 ??.?...??%.??..? 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 40: aa 00 aa 00 46 88 00 02 00 00 00 20 83 42 4c 02 ?.?.F?.?... ?BL? 50: 00 00 00 00 00 00 00 00 00 25 00 00 80 00 83 01 .........%..?.?? 60: 00 00 00 00 00 00 00 00 09 00 00 00 aa 00 00 00 ........?...?... -70: 28 00 04 00 01 00 01 40 00 00 00 01 03 00 00 00 (.?.?.?@...??...
    +70: 28 00 f9 03 fe 00 ff 73 00 00 00 00 03 00 00 00 (.???..s....?...
    -80: 24 21 00 10 00 00 00 00 00 00 00 00 c6 ff bf ff $!.?........?.?.
    +80: 24 21 00 10 00 00 00 00 00 00 00 00 45 00 85 fe $!.?........E.??
    -90: 1b 40 fe ff 02 00 fd ff fb ff 03 00 00 00 00 00 ?@?.?.?.?.?.....
    +90: d7 40 df ff 08 00 f6 ff fb bf 19 00 00 00 00 00 ?@?.?.?.???.....
    a0: 18 01 00 80 00 00 00 f7 01 25 00 fc 01 00 00 01 ??.?...??%.??..? b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ c0: aa 00 aa 00 46 88 00 02 00 00 00 20 83 42 4c 02 ?.?.F?.?... ?BL? d0: 00 00 00 00 00 00 00 00 00 25 00 00 80 00 83 01 .........%..?.?? e0: 00 00 00 00 00 00 00 00 09 00 00 00 aa 00 00 00 ........?...?... -f0: 28 00 04 00 01 00 01 40 00 00 00 01 03 00 00 00 (.?.?.?@...??...
    +f0: 28 00 f9 03 fe 00 ff 73 00 00 00 00 03 00 00 00 (.???..s....?...

    Configuration is:

    GYR_CONF 0x42 = 0xAA => ODR=400, osr2, norm-noise, perf-filter
    GYR_RANGE 0x43 = 0x00 => GYR_RANGE=+/-2000dps (4000 total => 16 LSB/dps), OIS_RANGE=+/-250dps

     

    More strangely, deep debug traces show much stable (and better) gyro measures during calibration loop (bmi2_perform_gyro_foc), reading 0x12 as "f8ff0400f2ff" (-0.5/0.2/-0.8) for almost worst cases, using gyro configuration GYR_CONF 0x42=0xCA (ODR400 OSR4 noise-perf, filter-perf) GYR_RANGE 0x43 = 0x00.

    If this gyro measurement disparity per chip is familiar to someone I will be glad to get hints. The same if dump shows something to someone. If needed, I can provide my deeper app logs but a little bit strong to read.

    4 REPLIES 4

    BSTRobin
    Community Moderator
    Community Moderator

    Hi aloiseau,

    Is the BMI270 placed in a stationary state and read gyroscope data during stress testing?
    Additionally, does the design of the BMI270 on the entire machine meet the HSMI specifications(https://www.bosch-sensortec.com/media/boschsensortec/downloads/handling_soldering_mounting_instructi...)?

    During my tests, PCB are in a horizonatlly stationary state on my desk. Stress test performs loops of (1 calibration, 1 measurement).

    Tests results are reproducible : when I take a working PCB is works very well and when a take a defective PCB is does not work using same environment and software.

    For what I know bst-mis-hs001 is taken into account, I will re-ask factory. I have been said by factory that failing products appears spread within production (something like 1 per thousand given stats they gave me).

    Also, among my working and defective boards, I found one working PCB and one defective PCB sharing same marking onto BMI270 chip (details below). I will ask factory to compare process of those two boards, but since the issue appears ~1 spreaded, maybe both PCBs have been produced identically. Also, PCB actually contains 4 pieces before being tested and cutted, therefore all 4 pieces are given same flow, but faulty pieces are mices with working ones on same large PCB, which puzzles my a litttle bit.

    • Working :
      • 5N 4PQ
    • Defective :
      • 5N 340 (rx gyro big noise, rz gyro noise),
      • 5N 3K1 (ry gyro noise),
      • 5N 4PQ (rx gyro noise)

    Hi,

    Yes, I perform my tests identically with several PCBs (one by one):

    • PCBs is placed in a horizontal stationary state
    • its entire software is updated with a well known binary
    • stress tests is started. It does this in loop:
      • calibrate BMI270
      • read one 6 axis sample
      • terminate if one measuremet is outside sanity bounds (+/- 1g, +/- 1 dps) and accululate worst stat otherwise

    To my knowledge, HSMI specifications recomandations are properly handled. I have ask factory to recheck.

     

    Strangely, the issue seems to be spread accross production, around 1 per thousand each month. From the few peices I analyzed, this is always one or two noisy gyroscope axis, no always same one. Also, among few defective samples I received there is at least one PCB which BMI270 printing is isentical to the working sample I use : 

    • Working product example: 5N 4PQ
    • Defective product example: 5N 340, 5L 3K1, 5N 4PQ

    I also asked factory about any differences in production process between both 5N 4PQ-based PCBs I have, but in my opinion there will not be any difference, otherwise issue would not be spreaded 1 per thousand.

    Also, PCBS are actually produced four-per-large-PCB, tested in parallel (4 tests in parallel) then cutted into single pieces. From what I know defects appears in various positions into the large PCB and when one of the four is defective others may not.

    This small message for two purposes:

    • bump the thread hoping it reaches someone having seen (and fixed:) simulair issue
    • one more question: which acceptance bounds would you confidently set for a horizontal static measurement of ax/ay/az/rx/ry/rz? (is my 1dps max acceptance bound too short despite working with the vast majority of chips?)
    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