FXLS8974CF - cannot exit from high permormance mode (bug?)

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

FXLS8974CF - cannot exit from high permormance mode (bug?)

529件の閲覧回数
AdrianChmiel
Contributor I

Hi,

I cannot change current consumption of FXLS8974CF, it's always 150uA, like never get out from high performance mode.

I try to reset registry value and set only lowest ODR to CONFIG3 registry, but nothing happened.

tmp = FXLS8974CF_SENS_CONFIG1_RST_RST;
fxls8974cf_write_reg(&FXLS_driver, FXLS8974CF_SENS_CONFIG1, 1, &tmp); // software reset
tmp = 0xFF;
fxls8974cf_write_reg(&FXLS_driver, FXLS8974CF_SENS_CONFIG3, 1, &tmp); // 0.781Hz

What could be wrong?
Other functions work, but I'm unable to reduce its power consumption.

ラベル(1)
タグ(1)
0 件の賞賛
返信
3 返答(返信)

447件の閲覧回数
JackITB
NXP Employee
NXP Employee

Hi Adrian,

The behavior you're reporting is definitely abnormal but I don't think this is due to sensor being stuck in HPM.

Unless the sensor is damaged, its default operating state after a POR is either in standby mode (if BT_MODE = GND) or Active mode in LPM at ODR = 0.78Hz (if BT_MODE = VDD). In both cases, the total sensor current will be below 1µA anyway.

Let me ask a few questions to try to identify your issue:

- can you give more details about your configuration, e.g. BT_MODE and Interface selection

- when you do a reset (either full POR through Vdd or programmatically with Config1_RST bit field), the sensor will issue a boot pulse soon after (see datasheet for details). Do you observe this boot pulse on the Interrupt line.

- you mentioned that register reading is functional but did you also confirm that register write is ok. For example, you can simply change the interrupt pin polarity and check that the pin ouput level is toggling accordingly.

- could the extra current be caused by external connection or component, such as pull-up /down resistor, conflicting logic levels, etc... 

Regards,   Jacques

 

 

0 件の賞賛
返信

509件の閲覧回数
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi Adrian,

Is there a delay between these two writes?

Capture.JPG

Can you please try to read the SLEEP_PM[1:0] bits in the SENS_CONFIG2 register to make sure the device is in low-power mode (SLEEP_PM[1:0] = 0b00)?

BR, Tomas

0 件の賞賛
返信

503件の閲覧回数
AdrianChmiel
Contributor I

I add 500ms delay:

tmp = FXLS8974CF_SENS_CONFIG1_RST_RST;
fxls8974cf_write_reg(&FXLS_driver, FXLS8974CF_SENS_CONFIG1, 1, &tmp); // software reset
tmp = 0xFF;
delay_ms(500);
fxls8974cf_write_reg(&FXLS_driver, FXLS8974CF_SENS_CONFIG3, 1, &tmp); //

But nothing happened, also I read SENS_CONFIG2 registry, return value 0x00.

I also tried restarting the accelerometer by cutting off the power supply (the project allows this) without resetting by software, but the effect is the same.

FXLS_PWR_DOWN;
delay_ms(50);
FXLS_PWR_UP;
delay_ms(50); // wait a moment

tmp = 0xFF;
delay_ms(500);
fxls8974cf_write_reg(&FXLS_driver, FXLS8974CF_SENS_CONFIG3, 1, &tmp); //

 

BTW.
communication works fine, I read WHO_I_AM and PROD_REV correctly (PROD_REV return 0x14)

0 件の賞賛
返信