Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BMA425 issue in I2C fast mode (400kbps)

    BMA425 issue in I2C fast mode (400kbps)

    alexzhangyc
    Member

    Hi expert, recently i am working on our BLE application platform with BMA425 on broad for motion tracking. At the first i configed MCU I2C as standard mode (100kbps) to connect BMA425 and you know 425 is set as header and powersave mode with FIFO enabled (No irq and watermark used). MCU app will read FIFO data when each time my timer handler is serviced per 10 seconds (BMA425 ODR is 6.25Hz).

    So my logic is when timer handler is running, i disable powersave mode firstly plus a minor delay (1ms), after that i issue the brust read of FIFO data. When 10S FIFO data is ate up, i enable the powersave mode again.  The code is working fine under I2C standard mode. So I change the I2C as fast mode (a.k.a. 400Kbps), the issue is coming then, you know, i still can read FIFO data but I find more time is consumed for completion of FIFO read comparing with standard mode. Typically 50ms in standard mode but 125ms in fast mode. That's weird ryt?  Fast mode I2C will consume FIFO date faster than the standard. Could you give me some clues about this issue? Thanks.

    6 REPLIES 6

    @Vincent As my team member posted here, we digged out that the issue is because we enable BMA425 lower power (LP) mode.
    If we disable LP mode, the issue will be gone. You can see in above figure, the FIFO length read out is incorrect as for 10 sensonds data, the lenght should be at least 10*6.25*7 = 437 but the one we got is 420. That is, the BMA425's clock is slower than our MCU.

    Vincent
    Community Moderator
    Community Moderator

    Thanks for sharing. 

    In the previous description,  you mentioned you will disable low power mode before reading FIFO. 

    Actually,  in the low power mode,  if you want to read FIFO,  you need either enable "fifo_self_wakeup" bit or switch to sensor to normal mode. 

    When you want to switch sensor to normal mode,  you need to wait 250us.  Those might be the reason you need longer time here in 400KHz bus speed. 

    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