<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/109918/bluetooth-aoa-iq-samples</link><description>I am a BLE beginner and have some confusion about the IQ data of Bluetooth AOA. I used the example direction_finding_connectionless_rx and direction_finding_connectionless_tx from the SDK and I tried to print raw IQ data which contains 45 samples. 
 1</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 16 May 2024 15:20:13 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/109918/bluetooth-aoa-iq-samples" /><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/484749?ContentTypeID=1</link><pubDate>Thu, 16 May 2024 15:20:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7070f123-744c-48b5-88cc-501bb0a0643c</guid><dc:creator>Zihao</dc:creator><description>&lt;p&gt;Hi Hao Du,&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thank you very much! It has been incredibly helpful for my experiment implementation.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I &amp;lsquo;m sorry for some of my earlier questions, as I realize now that some of them were quite naive, given that I&amp;#39;m new to this...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks again!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Yours,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Zihao&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/482926?ContentTypeID=1</link><pubDate>Mon, 13 May 2024 04:32:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9ec6a6d9-b80c-4ba1-9ab6-a56b6d385cbf</guid><dc:creator>Hao Du</dc:creator><description>&lt;p&gt;Hi Zihao,&lt;br /&gt;&lt;br /&gt;1. If you set&amp;nbsp;&lt;span&gt;ant_patterns={&lt;/span&gt;&lt;span&gt;&amp;nbsp;0x1 0x2 0x3 0x4&amp;nbsp;&lt;/span&gt;&lt;span&gt;},&amp;nbsp;the setting of dfe-antenna-num should be 4.&lt;br /&gt;&lt;br /&gt;2. Yes, you are correct. We need to phase correction.&amp;nbsp;The method of phase correction is to rotate the IQ value on the IQ plane. In your case, f = 250KHZ,&amp;nbsp;sampling interval = 4us, that means we need shift 2*pi*f*t = 6.28.&amp;nbsp;This means that the second antenna needs to be rotated 2PI in the IQ plane relative to the first antenna.&amp;nbsp;In other words, you don&amp;#39;t need to correction under the current parameters, because one rotation is actually equal to the phase before correction.&lt;br /&gt;&lt;br /&gt;3. If you set&amp;nbsp;all twelve antennas in ant_patterns to 0x1, that means all IQ samples comes from 0x1. And according to white paper, the intervel of first 8 samples is 1us, and other samples in your case is 4us.&amp;nbsp;In other words, the first 8 points sample sine at 1M sampling rate, and the following sine is sampled at 250KHZ. Note that the frequency of your sine is set to 250KHZ.&amp;nbsp;This means that if you plot the first 8 points, you will see 4 cycles. Plot the following points and theoretically you will see a straight line. Since the sampling rate is the same as the signal frequency, this means that the same IQ sample is always taken in each cycle.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;4. You mentioned&amp;nbsp;frequency hopping.&amp;nbsp;Frequency hopping is the different carrier frequencies used in Bluetooth communication and has nothing to do with the frequency here.&amp;nbsp;You can imagine that a 250KHZ single tone signal is RF-converted to a certain 2.4G channel. However, there will be a reverse operation during reception, which we call down-conversion, to 250KHZ. The signal we sampled after downconversion.&amp;nbsp;Because the high-frequency 2.4G does not have such a fast ADC, low-frequency signals can be sampled.&lt;br /&gt;&lt;br /&gt;If you have any other questions, I&amp;#39;d be happy to discuss them together.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Kind regards,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Hao&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/482925?ContentTypeID=1</link><pubDate>Mon, 13 May 2024 04:12:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cd5ee310-3ba5-48f7-8128-810f17cf863d</guid><dc:creator>Hao Du</dc:creator><description>&lt;p&gt;Hi Zihao,&lt;br /&gt;&lt;br /&gt;Sorry, I accidentally typed an extra 0x01. Actually, what I meant was&amp;nbsp;&lt;span&gt;if I set&amp;nbsp;&lt;/span&gt;&lt;span&gt;ant_patterns to 0x1 0x2 0x3 0x4,&amp;nbsp;the antenna switching pattern will be&amp;nbsp;0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 (8 times) 0x2 0x3 0x4 0x1 0x2 0x3 0x4&amp;nbsp;0x1 0x2 0x3 0x4(include 0x01).&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/482905?ContentTypeID=1</link><pubDate>Sun, 12 May 2024 11:58:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bbac89a4-df2f-435b-afb9-0e154a09ef2d</guid><dc:creator>Zihao</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Thanks again for the reply.&lt;/p&gt;
&lt;p&gt;I tried to set the ant_patterns={&lt;span&gt;&amp;nbsp;0x1 0x1 0x2 0x3 0x4&lt;/span&gt;}, but the phase_diff seems&amp;nbsp;no rules...&lt;/p&gt;
&lt;p&gt;1、May I ask what is the setting of dfe-antenna-num when you use this &lt;span&gt;ant_patterns&lt;/span&gt;? Is it 4 or 5?&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2、Meanwhile, we expect that different antennas are simultaneously acquiring IQ data, but in reality, it is a time division process. Therefore, when calculating the phase difference between different antennas, the error introduced by this time division needs to be corrected. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;According to WP036, my understanding is that the time interval for sampling IQ data between adjacent antennas is consistent. For example, if the switch slot is set to 2us, then the IQ sampling interval between two antennas will always be 4us. When processing IQ samples, I directly retain the phase for ant1. For ant2, I subtract this △phase; for ant3, I subtract 2* △phases. But how do I calculate △phase? I only know that the CTE frequency is offset by 250 kHz from the center frequency of the channel being used, but BLE has frequency hopping. How do I determine the channel being used? &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;3、Previously, I set all twelve antennas in ant_patterns to 0x1, then measured the phase difference from the same antenna to estimate this △phase, but the results seem irregular, possibly due to frequency hopping effects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1715515098973v1.png" alt=" " /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;So, did you disable frequency hopping when you were doing direction finding?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I appreciate anything you relpy!&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/482884?ContentTypeID=1</link><pubDate>Sat, 11 May 2024 06:48:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7b7a5999-52bf-4185-89ac-3224afdc9669</guid><dc:creator>Zihao</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&lt;span&gt;OK, thank you for your reply! I still don&amp;#39;t understand the benefit of excluding the antenna with index 0 from the loop. With this setup, even though I have 4 antennas, only 3 are used to collect&amp;nbsp;IQ data for DF. I will try experimenting by including 0x1 twice in the ant_patterns.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/482624?ContentTypeID=1</link><pubDate>Thu, 09 May 2024 04:44:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dcef489a-8c0f-4eaf-94ad-0771bedaf334</guid><dc:creator>Hao Du</dc:creator><description>&lt;p&gt;Hi, Zihao&lt;br /&gt;I am also interested in bluetooth aoa. From my&amp;nbsp;experiment，if I set&amp;nbsp;&lt;span&gt;ant_patterns to 0x1 0x1 0x2 0x3 0x4,&amp;nbsp;the antenna switching pattern will be&amp;nbsp;0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 (8 times) 0x2 0x3 0x4 0x1 0x2 0x3 0x4&amp;nbsp;0x1 0x2 0x3 0x4(include 0x01). When I set this&amp;nbsp;ant_patterns, and according to my point of view，plotting the IQ of the same antenna will give a sine wave (although it should be a straight line in theory, the clock deviation causes it to look like a sine wave).&lt;br /&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/_4F5C555E2A62FE56_-2024_2D00_05_2D00_09-124411.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/482496?ContentTypeID=1</link><pubDate>Wed, 08 May 2024 11:10:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f10e45ad-821d-4a99-b0e8-6be754b5da69</guid><dc:creator>Zihao</dc:creator><description>&lt;p&gt;Hi Elfving,&lt;/p&gt;
&lt;p&gt;Thank you once again for your help recently!&lt;/p&gt;
&lt;p&gt;I am working with the Direction Finding Connectionless tx/rx Sample in the ncs.&lt;/p&gt;
&lt;p&gt;You mentioned that the default pattern does not include the reference antenna in the loop. For example, if I set ant_patterns to&amp;nbsp;&lt;span style="font-family:inherit;"&gt;0x1 0x2 0x3 0x4, &lt;span&gt;the antenna switching pattern&amp;nbsp;in one CTE would be:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x2&amp;nbsp;0x3&amp;nbsp;0x4&amp;nbsp;0x2 0x3&amp;nbsp;0x4&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Here, 0x1 is only used for reference, and the actual direction finding data comes from only three antennas, right?&lt;/p&gt;
&lt;p&gt;To include 0x1 in the loop, you said:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;f you are to make a Bluetooth compliant solution then the pattern should always rotate through the reference antenna, this can be done by having the reference antenna (pattern entry 2) as the last entry in the pattern table. It will then be part of the &amp;quot;looped&amp;quot; pattern.&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;However, I am unsure how to configure this. I could not find information about that in the whitepaper.&lt;/p&gt;
&lt;p&gt;Additionally, I would like to confirm whether setting ant_patterns to 0x1 0x1 0x2 0x3 0x4 in the default sample would successfully include 0x1 in the loop. Would the antenna switching pattern then be:&lt;/p&gt;
&lt;p&gt;0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x2 0x3 0x4 0x1 0x2 0x3 0x4&lt;/p&gt;
&lt;p&gt;&lt;span&gt;And are there any other potential disadvantages to this way?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Thank you!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/479477?ContentTypeID=1</link><pubDate>Thu, 18 Apr 2024 13:58:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7d577919-9ceb-4a02-ac5e-5c1a948abead</guid><dc:creator>Elfving</dc:creator><description>&lt;p&gt;Sorry about the wait Hao, I&amp;#39;ve been away for a while.&lt;/p&gt;
[quote user="Hao Du"]&lt;p&gt;1. As I mentioned question 1 before, I use the official Nordic 12 square array, and I only output 45 sampling points, but every time I output, the following IQ values are the same. I think this is not normal. My code is as follows:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;[/quote]
&lt;p&gt;You are right in a way. The &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index.html#CONFIG_BT_CTLR_DF_MAX_ANT_SW_PATTERN_LEN"&gt;buffer we use for this only support switch pattern lengths of 38&lt;/a&gt;. This is unfortunately a hardware limitation. I am not sure why you are seeing&amp;nbsp;one half repeating exactly when you use 45 samples though. Could you try lowering to &amp;lt;=38 and see if you see any issues like this?&lt;/p&gt;
[quote user="Hao Du"]2. You said that&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index.html#CONFIG_BT_CTLR_DF_SAMPLE_OFFSET_PHY_2M_SAMPLING_2US"&gt;CONFIG_BT_CTLR_DF_SAMPLE_OFFSET_PHY_2M_SAMPLING_2US&lt;/a&gt;&lt;span&gt;&amp;nbsp;is measured in&amp;nbsp;&lt;/span&gt;&lt;span&gt;number of 16M cycles.&amp;nbsp;Since the delay is 1.25µs, can it be considered that the actual sampling time is 160us - 1.25us? But I see that the output is still 45 points. Does this mean that the last point alaways invalid?&lt;br /&gt;&lt;/span&gt;[/quote]
&lt;p&gt;I guess that would depend on how you define the sampling time, though as even the guard period is considered a part of the sampling time (and isn&amp;#39;t even used for sampling) then I wouldn&amp;#39;t say so.&amp;nbsp;Though I think you will still end up with the right amount of sample slots sampled, if that is what you are afraid of, this just defines how far into the slot you do the sampling. You simply move from the red to the green arrow in this awful illustration here.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1713448167190v3.png" alt=" " /&gt;&lt;/p&gt;
[quote user="Hao Du"]&lt;p&gt;&lt;span&gt;3.&amp;nbsp;The additional problem is the IQ data processing I mentioned. Because the Bluetooth antenna is time-division multiplexed, I want to do phase correction and beamforming, that is, each antenna rotates 2*pi*f*t on the IQ plane, and t is the time elapsed from the sampling moment of the antenna to the reference antenna sampling.&amp;nbsp;I noticed that the example uses 2M PHY as the broadcast train physical layer. I learned from the white paper that theoretically f is 500kHZ. But considering the frequency offset, I tried to perform FFT on the first 8 points to obtain the actual f. Considering that the reference period is 1us once, which is a 1MHZ sampling rate, this does not seem to be well distinguished on the FFT spectrum. Is there a better way to get actual f or phase correction?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;[/quote]
&lt;p&gt;This is unfortunately something I am unsure about. You might be on your own here.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Elfving&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/479438?ContentTypeID=1</link><pubDate>Thu, 18 Apr 2024 12:51:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:54c886ee-d009-42fa-9b09-146dd74a7964</guid><dc:creator>Elfving</dc:creator><description>&lt;p&gt;Hello Antonio,&lt;/p&gt;
&lt;p&gt;I am not sure if I understand exactly what you are struggling with, but it would be preferable if you made a new case for this.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Elfving&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/479085?ContentTypeID=1</link><pubDate>Wed, 17 Apr 2024 03:14:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a64c426b-3305-4838-b0fb-755c81d17859</guid><dc:creator>Hao Du</dc:creator><description>&lt;p&gt;I think the better way to resolve your problem is consulting gateway developer. Because json data format depends on gateway developer&amp;#39;s design which maybe use raw sdk to obtain data and combine json data.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/478909?ContentTypeID=1</link><pubDate>Tue, 16 Apr 2024 09:33:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:09a919a1-547f-41ca-84e1-5820e617c30c</guid><dc:creator>Antonio Ramos Morales</dc:creator><description>&lt;p&gt;[{ &amp;quot;gateway&amp;quot;:&amp;quot;ac233fc00001&amp;quot;, &amp;quot;timestamp&amp;quot;:&amp;quot;2021-01-08T05:38:05.443Z&amp;quot; },{ &amp;quot;mac&amp;quot;:&amp;quot;c6c504030201&amp;quot;, &amp;quot;timestamp&amp;quot;:&amp;quot;2021-01-08T05:38:05.817Z&amp;quot;, &amp;quot;no&amp;quot;:2, &amp;quot;rssi&amp;quot;:-69, &amp;quot;raw&amp;quot;:&amp;quot;02010605ff3906cafb0809416f412d746167&amp;quot;, &amp;quot;aoa&amp;quot;:{ &amp;quot;frequency&amp;quot;:2402, &amp;quot;iq&amp;quot;:[-97,175,-173,-111,137,-165,168,145,-147,138,-135,-167,169,-143,131,171,-75,-194,66,235,-40,-249,34,228,2,-202,-16,211,36,-190,-36,170,141,-245,-86,180,117,-176,-149,146,178,-178,-204,132,201,-119,-194,83,204,-78,-185,14, 181,-27,-266,-29,201,23,-224,-38,186,89,-229,-94,190,149,-198,-118,134,171,-132,-177,86,165,-103,-157,73,254,-44,-200,42,224,-6,-205] } }&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id="tw-target-text" class="tw-data-text tw-text-large tw-ta" dir="ltr" data-placeholder="Traducci&amp;oacute;n" data-ved="2ahUKEwj8lNKqp8SFAxXARPEDHTCCD6sQ3ewLegQIExAU"&gt;&lt;span class="Y2IQFc" lang="en"&gt;I have used MQTT, I don&amp;#39;t know if you would have any part of the code to get the angle and the xy position of the tag from this data, if I could abuse your wisdom to be able to make the code, I am using python....thanks&lt;/span&gt;&lt;/pre&gt;
&lt;div id="gtx-trans" style="left:-8px;position:absolute;top:115.429px;"&gt;
&lt;div class="gtx-trans-icon"&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/478851?ContentTypeID=1</link><pubDate>Tue, 16 Apr 2024 04:22:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5d0b0d1f-e9db-40f2-9b8d-bac50d5f0160</guid><dc:creator>Hao Du</dc:creator><description>&lt;p&gt;What is the data format you describe? As I known, IQ data can obtain by cte_recv_cb&amp;nbsp;&lt;span&gt;report&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;sample16&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;report&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;sample16&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;q&lt;/span&gt; in SDK and t&lt;span&gt;he sequence of IQ values should from antena&amp;nbsp;2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 5, 6, 1, 4, 12, 9, 14, 13, 8, 10,&amp;nbsp;2, 0, 5, 6, 1, 4, 12, 9, 14, 13, 8, 10,&amp;nbsp;2, 0, 5, 6, 1, 4, 12, 9, 14, 13, 8, 10 ... (until reach the end of CTE).&amp;nbsp;How did you get this data? Are you using the SDK?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/478635?ContentTypeID=1</link><pubDate>Sun, 14 Apr 2024 09:34:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:22bb47c2-d419-479a-b44f-26a6029ec4f4</guid><dc:creator>Antonio Ramos Morales</dc:creator><description>&lt;pre id="tw-target-text" class="tw-data-text tw-text-large tw-ta" dir="ltr" data-placeholder="Traducci&amp;oacute;n" data-ved="2ahUKEwiKiJ2Es8GFAxVTVaQEHf26CgIQ3ewLegQICBAU"&gt;&lt;span class="Y2IQFc" lang="en"&gt;Thank you for responding, in this specific case it would be:&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;for&amp;nbsp; Ant 2 (&lt;span&gt;195,73,-88,187,-170,-95,131,-184,188,137,-105,206,-140, -132,146,-188,-208,95,198,-95&lt;/span&gt;)&lt;/p&gt;
&lt;p&gt;for Ant&amp;nbsp;0 = (&lt;span&gt;,-234,130&lt;/span&gt;)&amp;nbsp; etc......&lt;/p&gt;
&lt;p&gt;&lt;span&gt;[,198,-112,-268,-23,244,21,-242,-33,224,10,-217,-92,226,54,-248,-28,163, 84,-202,-140,178,205,-177,-95,94,117,-154,-131,36,244,-111,-209,53,316,-46,-206,-57,203,-2,-196,-67,268,119, -246,-62,179,165,-219,-84,168,120,-99,-145,171,232,-100,-187,70, 198,-77,-233,48]&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/478632?ContentTypeID=1</link><pubDate>Sun, 14 Apr 2024 05:10:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1d00326d-2a91-4418-9c48-97165e196c8f</guid><dc:creator>Hao Du</dc:creator><description>&lt;p&gt;&lt;span&gt;Please use English. The sequence of IQ values should from antena 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 5, 6, 1, 4, 12, 9, 14, 13, 8, 10,&amp;nbsp;2, 0, 5, 6, 1, 4, 12, 9, 14, 13, 8, 10,&amp;nbsp;2, 0, 5, 6, 1, 4, 12, 9, 14, 13, 8, 10 ... (until reach the end of CTE).&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/478620?ContentTypeID=1</link><pubDate>Sat, 13 Apr 2024 10:24:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:53e890f4-e503-4f66-9de9-c2973f23de3a</guid><dc:creator>Antonio Ramos Morales</dc:creator><description>&lt;p&gt;hola , yo tengo un problema parecido y queria saber si pueden hecharme una mano ,,, tengo estas muestras de IQ:q&amp;quot;: [195,73,-88,187,-170,-95,131,-184,188,137,-105,206,-140,-132,146,-188,-208,95,198,-95,-234,130,198,-112,-268,-23,244,21,-242,-33,224,10,-217,-92,226,54,-248,-28,163,84,-202,-140,178,205,-177,-95,94,117,-154,-131,36,244,-111,-209,53,316,-46,-206,-57,203,-2,-196,-67,268,119,-246,-62,179,165,-219,-84,168,120,-99,-145,171,232,-100,-187,70, 198,-77,-233,48],&lt;/p&gt;
&lt;p&gt;donde&amp;nbsp; CTElength ThelengthoftheCTE&amp;nbsp;Unit:8us;2~20:turnonCTEsampling,0~1:turnoff. Unit:8us;2~20:turnonCTEsampling,0~1:turnoff.&lt;br /&gt;&lt;span&gt;Sampling spacing = 2&lt;br /&gt; Switchspacing = 2&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Sample offset(in number of 16M cycles) = 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Switch offset(in number of 16M cycles) = 0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Switch pattern = 2,2,0,5,6,1,4,12,9,14,13,8,10&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;podria alguien explicarme a que&amp;nbsp;antena pertenece cada IQ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/477176?ContentTypeID=1</link><pubDate>Thu, 04 Apr 2024 14:58:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:91802b54-74c9-4b79-be95-0ede77c1f371</guid><dc:creator>Hao Du</dc:creator><description>&lt;p&gt;Thank you for your help. But I still have some problems.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;1. As I mentioned question 1 before, I use the official Nordic 12 square array, and I only output 45 sampling points, but every time I output, the following IQ values are the same. I think this is not normal. My code is as follows:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1712240888754v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The serial port output is as follows:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1712241105973v2.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The second half, the red part, is always the same, which is not corrrect I think. I began to think that it was because serial port printing took a long time, and the new data overwritten the buffer when the callback function was printing data. But I quickly ruled out this idea because I think the SDK should take this into account, that is, there are multiple buffers and use a queue, because the number of Bluetooth trains is set to 5, which means that 5 Bluetooth trains can arrive in a very short time. The buffers used by the callback function are not recycled until the callback function returns. But why is it always the same?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;2. You said that&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index.html#CONFIG_BT_CTLR_DF_SAMPLE_OFFSET_PHY_2M_SAMPLING_2US"&gt;CONFIG_BT_CTLR_DF_SAMPLE_OFFSET_PHY_2M_SAMPLING_2US&lt;/a&gt;&lt;span&gt;&amp;nbsp;is measured in&amp;nbsp;&lt;/span&gt;&lt;span&gt;number of 16M cycles.&amp;nbsp;Since the delay is 1.25&amp;micro;s, can it be considered that the actual sampling time is 160us - 1.25us? But I see that the output is still 45 points. Does this mean that the last point alaways invalid?&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;The additional problem is the IQ data processing I mentioned. Because the Bluetooth antenna is time-division multiplexed, I want to do phase correction and beamforming, that is, each antenna rotates 2*pi*f*t on the IQ plane, and t is the time elapsed from the sampling moment of the antenna to the reference antenna sampling.&amp;nbsp;I noticed that the example uses 2M PHY as the broadcast train physical layer. I learned from the white paper that theoretically f is 500kHZ. But considering the frequency offset, I tried to perform FFT on the first 8 points to obtain the actual f. Considering that the reference period is 1us once, which is a 1MHZ sampling rate, this does not seem to be well distinguished on the FFT spectrum. Is there a better way to get actual f or phase correction?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Kind regards,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Hao&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth AOA IQ samples</title><link>https://devzone.nordicsemi.com/thread/477059?ContentTypeID=1</link><pubDate>Thu, 04 Apr 2024 10:36:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dda5a957-debd-4e33-a6d4-ac1c6570c424</guid><dc:creator>Elfving</dc:creator><description>&lt;p&gt;Hello Hao,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I am glad to see that you&amp;#39;ve had a look at the whitepaper on direction finding. Multiple customers miss that.&lt;/p&gt;
[quote user=""]&lt;p&gt;1.&amp;nbsp;Why is the data in each frame exactly the same starting from 24?&amp;nbsp;In the picture are 2 sets of data, I used&amp;nbsp;&lt;span&gt;printk&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;report&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;sample16&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;report&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;sample16&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;) to print by console.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;[/quote]
&lt;p&gt;Maybe the same antenna patch is being sampled twice there. What is your antenna pattern? What antenna matrix are you using?&lt;/p&gt;
[quote user=""]&lt;p&gt;2.&amp;nbsp;I also saw the existence of TSAMPLEOFFSET in the white paper, and saw CONFIG_BT_CTLR_DF_SAMPLE_OFFSET_PHY_2M_SAMPLING_2US=20 in the project&amp;#39;s .config. The CTE of sending the beacon is 160us, but OFFSET is 20us. Does this mean that the effective sampling is 160us - 20us = 140us and the IQ samples the last 20us / 4 = 5 pieces of data are invalid?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;[/quote]
&lt;p&gt;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index.html#CONFIG_BT_CTLR_DF_SAMPLE_OFFSET_PHY_2M_SAMPLING_2US"&gt;CONFIG_BT_CTLR_DF_SAMPLE_OFFSET_PHY_2M_SAMPLING_2US&lt;/a&gt;&amp;nbsp;is measured in&amp;nbsp;&lt;span&gt;number of 16M cycles. That is 20* 1/16.000.000 = 20* 62.5ns = 1.25µs.&lt;/span&gt;&lt;/p&gt;
[quote user=""]3.&amp;nbsp;Another question is about antenna switching. If I set ant_patterns to 0x1 0x2 0x3 0x4, will the sampled IQ array be 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x2 0x3 0x4 0x1 0x2 0x3 0x4 0x1 0x2 0x3 0x4 ..., because based on the white paper I&amp;#39;m not quite sure whether 0x1 should be included in the loop or not. And because the example uses a 2us slot by default, the first 8 data are sampled once every 1us, followed by every 4us, and part of the intermediate interval switching is 3us, right？And post-data processing requires phase correction due to the delay in sampling.&lt;br /&gt;[/quote]
&lt;p&gt;The pattern continues from how far its gotten after the reference period has ended. So eight samples with 0x1, then it loops from 0x2.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x1&amp;nbsp;0x2&amp;nbsp;0x3&amp;nbsp;0x4&amp;nbsp;0x2 0x3&amp;nbsp;0x4&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;If you are to make a Bluetooth compliant solution then the pattern should always rotate through the reference antenna, this can be done by having the reference antenna (pattern entry 2) as the last entry in the pattern table. It will then be part of the &amp;quot;looped&amp;quot; pattern. When you have gone through all the patterns loaded then the next IQ sample will be from pattern 3 and this will loop for the length of the CTE duration.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Regards,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Elfving&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>