Why does the phase value collected by a single antenna at different times fluctuate so significantly in Bluetooth AOA (Angle of Arrival) measurements?

When using Bluetooth AOA, I configured only two antennas to collect IQ data. Below are the curves formed by the 37 IQ data points collected from the two antennas during the sampling phase, including the phase (arctan(Q/I)) and the phase difference between the two antennas. Based on my understanding, the phase collected by each antenna should be consistent, but the data here shows surprisingly large fluctuations. Is this normal?

Thank you very much for your reply!

Parents Reply Children
  • So all frequencies used in Direction Finding are "typical" and your calculation will only be true if they are all the typical value. If any of them are slightly off then it's not true.

    You need to use the data from the reference period to calculate the actual frequency of the system and also calculate a reference point in time where you know the phase (may need to do some filtering to make sure the anchor point is solid). Then you can use this to calculate the theoretical phase for all sampling points in the normal period. Then you can calculate the phase shift for each of these points.

  • I understand. To confirm, you're suggesting that even if the theoretical frequency is 250KHz, the actual signal frequency may deviate slightly (higher or lower), causing a shift in the cycle. This results in the phase of the data sampled from the same antenna during the sampling phase not being a perfect 2π. By first using reference cycle data to fit the actual frequency of the current signal, we can establish a known phase-correlated time point. Then, all subsequent phases can be calculated based on the sampling timestamps.

    Apologies, I have one additional question: Is this known phase time point derived from the fitted signal curve generated using the data collected during the reference phase?

  • Yes, the phase at the reference point in time should be extracted from the data in the reference period, you may need to filter it somewhat to make sure that noise in a single sample doesn't impact the point too much as this would impact all you data later on.

    Note: the issue is not only for the 250/500KHz, there will also be small errors for the RF base frequency so you won't have exaclty 2.410.000.000 Hz, the accuracy of the crystal is some ppms and this will change the frequency. This will be different part to part and vary over temperature and voltage. This is why you use the reference period to remove all these issues so the solution is self correcting.

  • Thank you very much for your response—it has been extremely helpful! I do have one follow-up question and hope it won’t cause too much disruption:

    Bluetooth AoA (Angle of Arrival) positioning relies on CTE (Constant Tone Extension) signals transmitted over BLE advertising channels (37, 38, 39), which correspond to frequencies of 2402 MHz, 2426 MHz, and 2480 MHz, respectively. Since angle-of-arrival calculations depend on frequency (and thus wavelength), as shown in the figure below, how can I identify which specific channel the current Bluetooth CTE signal is using? (I am working with the direction_finding_connectionless_rx and direction_finding_connectionless_tx examples from the NCS SDK 3.0.1.)

Related