Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BMA490L questions

    BMA490L questions


    Hello Bosch-Sensortec-forum members,

    We used the BMA280 for several years because its extremely good parameters:
    1.) - 2 kHz ODR

    2.) - max. 1.8ms startup from deep sleep to first valid measurement data

    3.) - integrated offset compensation

    4.) - threshold interrupts

    Sadly the BMA280 is not recommended now for new designs and there is also a huge shortage on the market.

    However, the only replacement for us is the BMA490L as it has 10 years longevity.

    Comparing these important parameters, I have two questions for the BMA490L::

    1.)- 1.6 kHz ODR

    ->  In the datasheet 5.2.29 Register (0x40) ACC_CONF table is also listed:

    0x0d ... odr_3k2 ... reserved

    0x0e ... odr_6k4 ... reserved

    Is it possible to unlock these higher data output rates in any way?

    I really liked the 2kHz 🙂

    2.) - XX ms startup from deep sleep to measurement data

    -> I can't find any similiar wake up time like in the BMA280 datasheet.

    In the BMA490L datasheet I can only find "Power-up Time 1ms"
    How long does the BMA490L take from power up or wake up to first valid measurement?

    Is it dependent from the data rate, power mode or other settings? My application needs a reaction time as fast as possible.

    3.) - integrated offset compensation

    Offset compensation seems to work like in the BMA280.

    4.) - threshold interrupts

    Thresholds and interrupts seem to work a bit differently now with no high/low-g thresholds but a summarizing "any-motion-interrupt and threshold", but I think I will figure this one out.







    4 REPLIES 4

    Community Moderator
    Community Moderator

    Hello ELJAY,

    1. 1.6kHz is the maximum ODR value;
    2. For your question, you could refer chapter "4.3 Device Initiaalization", "Power modes" in BMA490L data sheet;
    3. BMA490L also had offset compensation;
    4. I think you mean "Any motion/No motion" in BMA490L, It has configurable parameters to meet your application.

    Dear Bosch-Sensortec members,

    I received my first BMA490L samples and tested them.

    The measurement itself and all "8bit-Adress" register work really good and as described in the datasheet.

    However, I have several problems/questions:

    1.) I want to change some settings in the register 0x5E "FEATURES_IN":

    According to the datasheet, the BMA490L sets its Register 0x2A "INTERNAL_STATUS" to the value 0x01 when the ASIC-init was successful.

    I found out that the only way to get a successful init is to send the 1300 Byte array "uint8_t bma490l_config_file[]" from your example code API.

    I identified the following byte order in this huge array to be the default setting of Register 0x5E "FEATURES_IN":


    Unfortunately any change in the default array leads to an unsuccessfull asic-init for me.

    I also found that there is read and written from some "asic base adress" registers, which are also not mentioned in the datasheet and I don't really understand how to use them or why they are not described.

    Question 1: Can you explain me, what exact steps are necessary to change the register 0x5E sucessfully?

    Question 2: Is there a checksum in the config-file array which needs also to be changed?

    Question 3: What are the other bytes in the config file for?


    2.) Why is the offset-register only from -0.5g to + 0.5g?
    On planet earth we usually have up to +-1g ... Therefore I'm sorry to say that the offset register in it's current state is pretty useless.

    Is it possible to halve the resolution to say 8mg to achieve a useful range from -1.0g to +1.0g?

    Kind regards,

    EL Jay

    Does really no one have a clue how to change the register 0x5E FEATURES_IN successfully?

    Which Register settings in which order are necessary to change 0x5E successfully?

    Dear Bosch-Sensortec forum members,

    With "try-and-error-method" I finally found out how to initialize the sensor BMA490L and write into the Register 0x5E "FEATURES_IN".
    May my solution help some poor souls, trying to get this thing working without importing the whole example code from Bosch..

    1.) start a Soft-Reset
    register: 0x7E
    write value: 0xB6
    2.) read Chip-ID (Reg 0x00) until it answers "0x1A
    register: 0x00
    read value: 0x1A
    3.) set it into "active" mode (deactivate low power)
    register: 0x7C
    write value: 0x00
    4.) prepare sensor for ASIC-Initialization
    register: 0x59
    write value: 0x00
    5.) burst write the whole ~1300 Byte "config-array" from the Bosch example code API (yes, one ~1300 byte long SPI write message...)
    register: 0x5E
    value: whole ~1300 Byte "config-array" from the Bosch example code
    6.) start the ASIC-Initialization and wait ~200ms
    register: 0x59
    write value: 0x01
    7.) optionally, read Register INTERNAL_STATUS
    register: 0x2A
    read value: 0x01 ( ASIC-Init success) 0x02 (ASIC-Init error)
    8.) now its time to burst write your own features_in settings to adress 0x5E (in little endian)
    register: 0x5E
    here  are for example my settings (anymotion enabled in all axes, 250mg threshold)


    uint8_t BMA490L_features_in_config_anymotion_250mg_lsb_first[] =
       0x00, 0x02, 0x00, 0xE0, 0xAA, 0x00, 0x05, 0x00, 0x40, 0x48, 0x88, 0x00 
    //5E:00        5E:02       5E:04       5E:06       5E:08       5E:0A


    for the threshold: 1 LSB equals to 0.48mg -> 250mg = ~ 512*0,48 -> 0x200 (in 5E:00)

    9.)now do your other settings: configure interrupt-pin-mappings, setting output data rate, measurement range, activate the acceleration sensor unit and so on...

    10.) you can check if your " FEATURES_IN"settings work correctly, by reading out register "INT_STATUS_0"
    register: 0x1C
    read value: depends on your settings, for example if only anymotion-interrupt happened, value will be 0x20

    kind regards

    EL JAY