cancel
Showing results for 
Search instead for 
Did you mean: 

ODR rate on ISM330DHCXTR

DDineshkumar
Associate II

Hello,

 

I'm using (ISM330DHCXTR) accelerometer to calculate the phase difference between two axes to measure the movement of a system. configured ODR at 6.6 KHz and measured the operation frequency of the system which has a 10% error while measuring the FFT and adjusted the ODR on the math lab logic to match the operation frequency of the system but still the phase difference has a major deviation, can someone confirm what is the ODR deviation on this sensor and how to correct the same on the firmware instead of modifying on the paired application.

 

 

3 REPLIES 3
Federica Bossi
ST Employee

Hi @DDineshkumar ,

The ISM330DHCX sensor’s ODR can deviate slightly (typically ±1% to ±3%) from the nominal value due to internal clock tolerances. This deviation may cause errors in frequency and phase measurements. Instead of adjusting the ODR in your application, it is recommended to measure the actual ODR on your hardware and apply a calibration factor in firmware or signal processing to correct for this deviation. This ensures accurate phase difference calculations without altering sensor settings.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
trye001
Associate

Hey! I tested it on my two different sensors and my ODRs (actual vs nominal) were off by ~6.7% on both of them. First, I suspected an error in my code, but something else turned out. Essentially, the tick period can be calibrated, and ST gives the access to a true period of the tick.

 

There is a register INTERNAL_FREQ_FINE (0x63) that stores actual period of one tick. In my case it was 23.485us instead of nominal 25us that yielded this 6.7% error. 

Would it be safe to read TIMESTAMP0, TIMESTAMP1, TIMESTAMP2, TIMESTAMP3 or a word in FIFO and multiply it by INTERNAL_FREQ_FINE to get an actual timestamp?