Adar1000 beam fetch problem

Hi all 

I have a question with adar1000 tx beam fetch in sequentially Step mode。

here is my drive work flow 

1. initial adar1000 register 

2. set starting beam position and stopping beam position. in my application start and stop memory addresses is 0 and 1.

3. initial tx beam0 and beam1 with default parameter .

4. Waiting for external interrupt signal.

5. when the interrupt signal comes, drive will apply ≥6 SCLK cycles and pulse the TXLOAD pin to switch beam.

6. repeat step 4 ,step 5.

when adar1000 using beam0 ,driver will update beam1 with new parameters once and fetch beam1 via spi bus.

Note: drive update beam1 before pulse TXLOAD pins

Figure 1 can help you understand it

 figure1

figure1

However although i fetch beam1 but new parameter do not take effect when adar1000 switched to beam1,it still using old parameter ,The new parameters will only take effect when adar1000 is switched to beam1 again.

figure2 show this problerm

figure2

How to make new parameter take effect in next switched beam1 not switched beam1 twice?

This problem has troubled me for several weeks, I hope someone can help me. Thanks!!!



fix figure error
[edited by: loops at 1:09 AM (GMT -5) on 20 Feb 2021]
Parents
  • +1
    •  Analog Employees 
    on Feb 19, 2021 6:00 PM 1 month ago

    Try keeping the RX_BEAM_STEP_EN = 0 in Register 0x38 while initially pulling from Tx memory.  

    An error seems to happen when fetching the first Tx beam position if the RX_BEAM_STEP_EN bit is also asserted.  The error is that the first beam position is garbage data.  The second beam position is correct.

    This problem is described here:

    https://ez.analog.com/rf/f/q-a/535072/adar1000-beam-switching-start-address/387669#387669

    The answer is almost at the bottom of the forum.

  • Hi jdobler

    Thank for you answer.

    in my application only beam1 parameter need update,beam0 parameter is fixed. so update beam1 is enough.

    i configure Register 0x038 as 0x28, // BIAS_RAM _BYPASS = 1 , T X_BEAM _ST EP_EN = 1

    But the chip behaves the same as before.see figure below

    In order to clearly show the figure ,SCLK signal has been omitted,6 SCLK cycle is also given before each TXLOAD pulse.

  • 0
    •  Analog Employees 
    on Feb 24, 2021 7:08 PM 1 month ago in reply to jdobler

    How many times are you planning on toggling between Beam Position 0 and Beam Position 1?  And do you know what new Parameters (data) will be before you start toggling? And it does not look like you are changing the data in Beam Position 0?

    I ask because if you knew what the data was beforehand, and you needed 121 beam position or less, you could use more beam positions and write in all the data at once into the RAM and then toggle through the Beam Positions with the following data:

    RAM Beam Position Data loaded
    Beam Position 0 Reference Data
    Beam Position 1 Data 1
    Beam Position 2 Reference Data
    Beam Position 3 Data 2
    Beam Position 4 Reference Data
    Beam Position 5 Data 3
    Beam Position 6 Reference Data
    Beam Position 7 Data 4
    Beam Position 9 Reference Data
    Beam Position 10 Data 5
    and so on... and so on...

    So basically, all the even Beam Positions would contain the reference you want to toggle back to, while the odd beam positions have the new data.  Would this work in your application?

  • Hi jdobler 

    Thank for you answer and test.

    1. As long as the product is working, it will always toggling  between Beam position 0 and Beam position 1 .highest toggling frequency is 20KHz.

    2. i want change beam position 1 data when adar1000 work on beam position 0 , I will not reconfigure  beam position 0 after initializing the chip.

    3.in test lab i can control new parameter and tx_load pulse, but In actual application i can't  knew what the data was beforehand,so i can't use this way.

  • 0
    •  Analog Employees 
    on Feb 25, 2021 5:44 PM 1 month ago in reply to loops

    I will need to get into the lab and test this out to see if there is any work around. 

  • +1
    •  Analog Employees 
    on Mar 4, 2021 8:31 PM 1 month ago in reply to loops

    I was able to get into the lab and the only way I got it to work was to write NEW beam position 1 data while in beam position 1.  So the sequence would look like this:

    1. Write reference data to Beam Position 0 and Data1 to Beam Position 1
    2. Load reference data from Beam Position 0, with 6 or more SCLK's and a TX_LOAD pulse
    3. Load Data1 from Beam Position 1, with 6 or more SCLK's and a TX_LOAD pulse
    4. Write Data2 into Beam Position 1
    5. Load reference data from Beam Position 0, with 6 or more SCLK's and a TX_LOAD pulse
    6. Load Data2 from Beam Position 1, with 6 or more SCLK's and a TX_LOAD pulse
    7. Repeat Steps #4, #5 and #6 with (new) Data3, Data4, Data5, etc.

  • Thank for you test!

    The test results do not seem to meet expectations. According to the working timing of our equipment, we must load data when adar1000 in beam position 0 is not in beam position 1.

    Is this a bug in adar1000?

Reply Children
  • +1
    •  Analog Employees 
    on Mar 9, 2021 4:49 PM 1 month ago in reply to loops

    This is not a bug on the ADAR1000.  We never foresaw use of only two beam positions & actively re-writing data while using the beam positions. 

    The following sequence and use of 3 beam positions could work for you if you cannot write new data while in Beam Position 1:

    1. Set beam_start = 0 and beam_stop = 2
    2. Write reference data to Beam Position 0 and Beam Position 2
    3. Write Data1 into Beam Position 1
    4. Load reference data from Beam Position 0
    5. Load Data1 from Beam Position 1
    6. Load reference data from Beam Position 2
    7. Write Data2 into Beam Position 1
    8. Load reference data from Beam Position 0
    9. Load Data2 from Beam Position 1
    10. Load reference data from Beam Position 2
    11. Write Data3 into Beam Position 1
    12. and so on...

    Note that the RF beam does not change when going from Beam Position 2 to Beam Position 0.  This is used so that you can write new data into Beam Position 1 and it provides the necessary amount of load commands. 

  • Hi jdobler

    I will modify the adar1000 drive according to your suggestions and test it in the lab to see if it can solve the problem.

    Thank for you answer!