FXLS8471Q Transient

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

FXLS8471Q Transient

Jump to solution
3,260 Views
davidsherman
Senior Contributor I

I am trying to create a transient event using the FXLS8417Q.  I have been following the AN4461, and although it is written for a different chip, it seems to be similar.

I have this code:

AccelWriteByte(ACCEL_CTRL_REG2_REG, ACCEL_CTRL_REG2_RST_BIT); // reset chip
while(AccelReadByte(ACCEL_CTRL_REG2_REG) & ACCEL_CTRL_REG2_RST_BIT);
AccelWriteByte(ACCEL_TRANSIENT_THS_REG, 0x8f); // should trigger on >0.945g
AccelWriteByte(ACCEL_TRANSIENT_COUNT_REG, 0x1); // debounce of 1


AccelWriteByte(ACCEL_TRANSIENT_CFG_REG, (ACCEL_TRANSIENT_CFG_ELE_BIT | ACCEL_TRANSIENT_CFG_ZEFE_BIT | ACCEL_TRANSIENT_CFG_YEFE_BIT | ACCEL_TRANSIENT_CFG_XEFE_BIT | ACCEL_TRANSIENT_CFG_HPF_BYP_BIT)); // trigger on any axis, high pass bypassed


AccelWriteByte(ACCEL_CTRL_REG4_REG, ACCEL_CTRL_REG4_INT_EN_TRANS_BIT); // enable transient interrupt


AccelWriteByte(ACCEL_CTRL_REG5_REG, ACCEL_CTRL_REG5_INT_CFG_TRANS_BIT);  // route transient interrupt to INT1


AccelWriteByte(ACCEL_CTRL_REG1_REG, (ACCEL_CTRL_REG1_DATA_RATE_50HZ | ACCEL_CTRL_REG1_ACTIVE_BIT)); // set for 50 Hz ODR, set to active

 

I can't get any event to happen, even if I enable the high pass filter.  No interrupt occurs, and no event is ever reported in the TRANSIENT_SRC_REG when shaking or bumping the board.  I have even tried adjusting the threshold to the minimum, but nothing ever happens.

 

 I know the accelerometer is working because with this code:

 

byDummy = AccelReadByte(ACCEL_WHO_AM_I_REG);
AccelWriteByte(ACCEL_CTRL_REG1_REG, 0x0); // set to standby


AccelWriteByte(ACCEL_XYZ_DATA_CFG_REG, byFSRange); // set full scale range
AccelWriteByte(ACCEL_CTRL_REG1_REG, (ACCEL_CTRL_REG1_DR(ACCEL_CTRL_REG1_DATA_RATE_200HZ) | ACCEL_CTRL_REG1_LNOISE_BIT | ACCEL_CTRL_REG1_ACTIVE_BIT)); // set for 200Hz ODR, set active

I can read live accelrometer data from the FIFO that is reporting correctly.

 

What am I missing?

0 Kudos
1 Solution
3,255 Views
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi David,

 

Please have a look at my simple example code and let me know if it works on your side or not. 

 

Best regards,

Tomas

View solution in original post

0 Kudos
2 Replies
3,251 Views
davidsherman
Senior Contributor I

Thank you Tomas, I think I got it working.  I don't think it liked the software reset from the app note, I think it stopped talking SPI when I did that because I couldn't even read the ID byte.  I took out the software reset and I get the interrupt now.  Thank you!

0 Kudos
3,256 Views
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi David,

 

Please have a look at my simple example code and let me know if it works on your side or not. 

 

Best regards,

Tomas

0 Kudos
%3CLINGO-SUB%20id%3D%22lingo-sub-1136458%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EFXLS8471Q%20Transient%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1136458%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20am%20trying%20to%20create%20a%20transient%20event%20using%20the%20FXLS8417Q.%26nbsp%3B%20I%20have%20been%20following%20the%20AN4461%2C%20and%20although%20it%20is%20written%20for%20a%20different%20chip%2C%20it%20seems%20to%20be%20similar.%3C%2FP%3E%3CP%3EI%20have%20this%20code%3A%3C%2FP%3E%3CP%3EAccelWriteByte(ACCEL_CTRL_REG2_REG%2C%20ACCEL_CTRL_REG2_RST_BIT)%3B%20%2F%2F%20reset%20chip%3CBR%20%2F%3Ewhile(AccelReadByte(ACCEL_CTRL_REG2_REG)%20%26amp%3B%20ACCEL_CTRL_REG2_RST_BIT)%3B%3CBR%20%2F%3EAccelWriteByte(ACCEL_TRANSIENT_THS_REG%2C%200x8f)%3B%20%2F%2F%20should%20trigger%20on%20%26gt%3B0.945g%3CBR%20%2F%3EAccelWriteByte(ACCEL_TRANSIENT_COUNT_REG%2C%200x1)%3B%20%2F%2F%20debounce%20of%201%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EAccelWriteByte(ACCEL_TRANSIENT_CFG_REG%2C%20(ACCEL_TRANSIENT_CFG_ELE_BIT%20%7C%20ACCEL_TRANSIENT_CFG_ZEFE_BIT%20%7C%20ACCEL_TRANSIENT_CFG_YEFE_BIT%20%7C%20ACCEL_TRANSIENT_CFG_XEFE_BIT%20%7C%20ACCEL_TRANSIENT_CFG_HPF_BYP_BIT))%3B%20%2F%2F%20trigger%20on%20any%20axis%2C%20high%20pass%20bypassed%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EAccelWriteByte(ACCEL_CTRL_REG4_REG%2C%20ACCEL_CTRL_REG4_INT_EN_TRANS_BIT)%3B%20%2F%2F%20enable%20transient%20interrupt%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EAccelWriteByte(ACCEL_CTRL_REG5_REG%2C%20ACCEL_CTRL_REG5_INT_CFG_TRANS_BIT)%3B%26nbsp%3B%20%2F%2F%20route%20transient%20interrupt%20to%20INT1%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EAccelWriteByte(ACCEL_CTRL_REG1_REG%2C%20(ACCEL_CTRL_REG1_DATA_RATE_50HZ%20%7C%20ACCEL_CTRL_REG1_ACTIVE_BIT))%3B%20%2F%2F%20set%20for%2050%20Hz%20ODR%2C%20set%20to%20active%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EI%20can't%20get%20any%20event%20to%20happen%2C%20even%20if%20I%20enable%20the%20high%20pass%20filter.%26nbsp%3B%20No%20interrupt%20occurs%2C%20and%20no%20event%20is%20ever%20reported%20in%20the%20TRANSIENT_SRC_REG%20when%20shaking%20or%20bumping%20the%20board.%26nbsp%3B%20I%20have%20even%20tried%20adjusting%20the%20threshold%20to%20the%20minimum%2C%20but%20nothing%20ever%20happens.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%26nbsp%3BI%20know%20the%20accelerometer%20is%20working%20because%20with%20this%20code%3A%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EbyDummy%20%3D%20AccelReadByte(ACCEL_WHO_AM_I_REG)%3B%3CBR%20%2F%3EAccelWriteByte(ACCEL_CTRL_REG1_REG%2C%200x0)%3B%20%2F%2F%20set%20to%20standby%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EAccelWriteByte(ACCEL_XYZ_DATA_CFG_REG%2C%20byFSRange)%3B%20%2F%2F%20set%20full%20scale%20range%3CBR%20%2F%3EAccelWriteByte(ACCEL_CTRL_REG1_REG%2C%20(ACCEL_CTRL_REG1_DR(ACCEL_CTRL_REG1_DATA_RATE_200HZ)%20%7C%20ACCEL_CTRL_REG1_LNOISE_BIT%20%7C%20ACCEL_CTRL_REG1_ACTIVE_BIT))%3B%20%2F%2F%20set%20for%20200Hz%20ODR%2C%20set%20active%3C%2FP%3E%3CP%3EI%20can%20read%20live%20accelrometer%20data%20from%20the%20FIFO%20that%20is%20reporting%20correctly.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EWhat%20am%20I%20missing%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1139579%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20FXLS8471Q%20Transient%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1139579%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EThank%20you%20Tomas%2C%20I%20think%20I%20got%20it%20working.%26nbsp%3B%20I%20don't%20think%20it%20liked%20the%20software%20reset%20from%20the%20app%20note%2C%20I%20think%20it%20stopped%20talking%20SPI%20when%20I%20did%20that%20because%20I%20couldn't%20even%20read%20the%20ID%20byte.%26nbsp%3B%20I%20took%20out%20the%20software%20reset%20and%20I%20get%20the%20interrupt%20now.%26nbsp%3B%20Thank%20you!%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1138361%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20FXLS8471Q%20Transient%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1138361%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20David%2C%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EPlease%20have%20a%20look%20at%20my%20simple%20%3CA%20href%3D%22https%3A%2F%2Ffreescale.jiveon.com%2Fdocs%2FDOC-329684%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Eexample%20code%3C%2FA%3E%26nbsp%3Band%20let%20me%20know%20if%20it%20works%20on%20your%20side%20or%20not.%26nbsp%3B%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EBest%20regards%2C%3C%2FP%3E%0A%3CP%3ETomas%3C%2FP%3E%3C%2FLINGO-BODY%3E