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.

 

 

 

 

 

 

Best reply by ELJAY

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


View original
4 replies
Resolved