In their chart there is a time of arrival difference that has nano second accuracy. The ESP32 runs at 240MHZ max, and usually it takes several cycles to read certain values, so I really wonder how they were able to pull it off.
Please enlighten me.
In their chart there is a time of arrival difference that has nano second accuracy. The ESP32 runs at 240MHZ max, and usually it takes several cycles to read certain values, so I really wonder how they were able to pull it off.
Please enlighten me.
Additionally, you can use the phase information in the estimated channel coefficients (CSI) to determine the more precise time of arrival. Very briefly, a time delay in time domain will be visible as a frequency(=subcarrier)-dependent phase shift in frequency(=subcarrier)-domain. Now synchronization is only limited by impairments like thermal noise and phase noise. In practice in nice lab conditions, the time of arrival accuracy is on the level of <<1m.
On top of phase differences between subcarriers (--> timing information), we also measure phase differences between antennas, which provides angle of arrival and, with multiple arrays, phase of arrival information.
You can go even further by measuring phase differences between subsequent packets, which provides frequency offset and Doppler (--> velocity) information. I have some nice results on that, but that's a topic for the future ;)
- The Espargos code uses rxstart_time_cyc & rxstart_time_cyc_dec for the ns timestamp calculation
- Both values are not documented in the Espressif code and just marked as /*< reserved */
- The timestamp parameter is documented but it is in "microseconds"
Is there anywhere I can find more documentation on the "rxstart_time_cyc" and "rxstart_time_cyc_dec" fields? Are these cycle counters from the wifi chip?
You can often get some sample timing resolution from a sampled signal by interpolating the result of a complex correlation. You start by searching the correlation output for the loudest hypotenuse lag, then take he worked tangent of the quadrature information of that lag to estimate the sub-sample event time
Luckily for 802.11mc, host CPU speed is not used in the distance estimation.
TL;DW: the ESP’s WiFi driver provides per incoming packet the carrier’s phase and amplitude. All ESPs are calibrated relatively to each other.