Post Go back to editing

TES Configuration for ADRV9002 Custom TDD HDL Design

Category: Software

Hi EZ,

I am working with ADRV9002 Evaluation Board. For that, I have customized the FPGA reference design, removing all the DMA IP cores and including custom TX/RX AXI-Stream IP cores and a custom TDD HDL design that will include frequency hopping. When I say custom TDD design I mean that my custom design is generating HOP, TX_SETUP and RX_SETUP signals with specific constraints outside AXI ADRV9001 IP Core, so I have disconnected these outputs from the AXI ADRV9001 IP. These signals are generated inside my HDL IP Core. 

For the software comanding the ADRV9001 initialization, I am generating the C99 sample code from the TES.

My question is: Do I need to configure the Auto TDD tab in the TES even if I am not using the HOP, TX_SETUP and RX_SETUP signals provided by the AXI ADRV9001 IP core?

I ask this because I am facing some problems related to the RX data, the same problem that is exposed in this post:

 ADRV9002 FH-TDD solutions 

The answer for that post was that the Auto TDD state machine should be enabled, but I am not sure if that will solve my problem (at the moment is not solving it) as I am generating the FH signals externally to the AXI ADRV9001 IP core.

Thank you in advance!

Kind Regards,

Sergio.

Parents
  • Hi Sergio,

    The state machine enabled in the Auto-TDD tab exists entirely on the FPGA, and is separate from the ADRV9002. All it does is toggle the selected pins at the specified timings, so it should not need to be enabled for the ADRV9002 to perform TDD - that's determined in the "Device Configuration" tab where you define your profile.

    In short, my understanding is you don't need to configure the Auto-TDD tab in the TES, unless you are using some of those signals, or you want the configuration to appear in the sample code that you generate.

    It sounds to me like you're building your own Auto-TDD state machine (custom TDD HDL) to generate the HOP, TX_SETUP, and RX_SETUP signals, so you should define your Auto-TDD configuration there instead.

    Can you be more specific about the problem that you're facing? I'm not very knowledgeable on the FPGA side of things, but if I have a well defined problem, I can reach out internally for help.

    Kind Regards,
    Michał

  • Dear  ,

    Thank you for your reply.

    I just wanted to be sure that Auto TDD tab does not generate any C99 code related to the ADRV9002, just to the FPGA, so your answer solve that doubt.

    What I am experiencing is the following: after generating, compiling and executing the C99 generated code, I command the ADRV9002 to start frequency hopping with every frame set to RX (through RX_SETUP and  HOP signals, in compliance with the timing exposed for these signals in the UG). To receive some valid analog data, I have a signal generator generating a sine wave on a fixed frequency connected to the RX1A input (as I have configured this input in the "Device Configuration" tab). The frequency hopping is performed always to the same frequency, wich means that I have configured all the entries in the FH tables to the same value. 

    After the initialization process (run the C99 generated main.c file) for the first time, everything works correctly and I am able to visualize the sine wave in the rx0_sd AXI ADRV9001 port. When I tried to relaunch the initialization process without reprogramming the FPGA, sometimes the rx0_sd port outputs the sine wave, and sometimes, after lauching the exact same initialization process (I want to make emphasis that without reprogramming the FPGA) the rx0_sd port outputs only zeros. I want to be able to launch the initialization process at any time during ADRV9002 operation without needing to reprogram the FPGA.

    Maybe I should reformulate my question as: Does the initialization process described in the generated C99 code needs that the FPGA was programmed inmediately before the launch or the initializaition process can be launched several times without reprogramming the FPGA?

    Again, thank you for your answer.

    Kind regards,

    Sergio.

  • Hi Sergio,

    I'll take it that when you talk about programming and reprogramming the FPGA, you are referring to the parts of the initialize function that refer the FPGA. If I'm wrong, please correct me.

    At a very basic level, you can reset the ADRV9002 as many times as you need after one FPGA initialization. I consulted with my team, and the consensus is that your issue may have arisen when you split the initializations of the FPGA and ADRV9002 into separate parts of code.

    Can you clarify with code and/or pseudocode exactly what it is that you're doing?

    Also, I should add to my previous statement about the Auto-TDD tab: your Auto-TDD frame timings can affect which tracking calibrations are enabled, which will in turn be reflected in the ADRV9002 configuration. So even though the Auto-TDD tab only controls the FPGA, the TES can use that information to determine whether or not your frame lengths are too short to run certain tracking cals.

    Kind Regards,
    Michał

  • Dear  ,

    Sorry for the confusion. When I say "reprogram the FPGA" in my previous message I mean "load the bitstream file into the FPGA". 

    I am following this two processes, where process 1 is successful (rx0_sd port outputs the sine wave) and process 2 fails (outputs 0x0 at some point):

    Process 1

    · Load bitstream file (program FPGA).

    · Launch main.c C99 generated code --> rx0_sd port in AXI ADRV9001 outputs the sine wave correctly (visualize through ILA).

    · Load bitstream file (program FPGA).

    · Launch main.c C99 generated code --> rx0_sd port in AXI ADRV9001 outputs the sine wave correctly (visualize through ILA).

    · Repeat N times.

    Process 2

    · Load bitstream file (program FPGA).

    · Launch main.c C99 generated code --> rx0_sd port in AXI ADRV9001 outputs the sine wave correctly (visualize through ILA).

    · Launch main.c C99 generated code without loading the bitstream file into the FPGA --> rx0_sd port in AXI ADRV9001 outputs all 0x0 (visualize through ILA).

    · Launch main.c C99 generated code without loading the bitstream file into the FPGA --> rx0_sd port in AXI ADRV9001 outputs all 0x0 (visualize through ILA).

    · Repeat previous step N times.

    The difference between the two processes is that in process 1 the bitstream file is loaded always before running the main.c file, while in process 2 the bitstream file is loaded only once and main.c is launched several times, because I want to be able to relaunch the main.c file without loading the bitstream file each time.

    Does this clarify the situation?

    Thank you for your support.

    Kind regards,

    Sergio.

  • Hi Sergio,

    That sounds like an OS or HDL-level problem, rather than anything to do with the ADRV9002. In our reference design, we can reliably run the same C99 code many times without rebooting the FPGA, and see no differences in performance.

    On the ADRV9002 level, toggling the reset pin is results in a clean slate for the chip. You can reset the part many times, even within the same C99 program, and get consistent and reliable behaviour.

    To me, it sounds like there's something left over when you finish running your C99 code, which is cleared when you reprogram the FPGA.

    Instead of re-running your C99 program, can you try to include your multiple reset/program cycle test in a single C99 program, and see if the problem persists? Additionally, to isolate the FPGA as the variable, I suggest that you split the parts of C99 that initialize the FPGA from those that initialize the ADRV9002, so that you're only resetting the ADRV9002.

    Kind Regards,
    Michał

Reply
  • Hi Sergio,

    That sounds like an OS or HDL-level problem, rather than anything to do with the ADRV9002. In our reference design, we can reliably run the same C99 code many times without rebooting the FPGA, and see no differences in performance.

    On the ADRV9002 level, toggling the reset pin is results in a clean slate for the chip. You can reset the part many times, even within the same C99 program, and get consistent and reliable behaviour.

    To me, it sounds like there's something left over when you finish running your C99 code, which is cleared when you reprogram the FPGA.

    Instead of re-running your C99 program, can you try to include your multiple reset/program cycle test in a single C99 program, and see if the problem persists? Additionally, to isolate the FPGA as the variable, I suggest that you split the parts of C99 that initialize the FPGA from those that initialize the ADRV9002, so that you're only resetting the ADRV9002.

    Kind Regards,
    Michał

Children
  • Dear  ,

    I have activated the log of errors and after the initialization processes that do not work it says:


    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -101.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_CmdStatus_Wait, in line 700, variable name device.Error message ArmCmdStatusWait() failed due to thrown ARM error. Is device in correct state for calling command?.

    2023-11-22 13:51:57: ERROR:Error number 9731 (0x00002603), Recovery action -2.In file c_src/devices/adrv9001/private/src/adrv9001_arm.c, in function adrv9001_ArmCmdErrorHandler, in line 2853, variable name mailboxErrCode.Error message Error occurred during an Init Calibration. Check that no signal is being applied to the Rx ports. Check that correct external LOs are applied, and synchronized, where appropriate.

    2023-11-22 13:51:57: ERROR:Error number 9731 (0x00002603), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_cals.c, in function adi_adrv9001_cals_InitCals_Run, in line 117, variable name NULL.Error message Error occurred during an Init Calibration. Check that no signal is being applied to the Rx ports. Check that correct external LOs are applied, and synchronized, where appropriate.

    2023-11-22 13:51:57: ERROR:Error number 9731 (0x00002603), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Byte_Read, in line 252, variable name NULL.Error message Error occurred during an Init Calibration. Check that no signal is being applied to the Rx ports. Check that correct external LOs are applied, and synchronized, where appropriate.

    2023-11-22 13:51:57: ERROR:Error number 9731 (0x00002603), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Read, in line 409, variable name NULL.Error message Error occurred during an Init Calibration. Check that no signal is being applied to the Rx ports. Check that correct external LOs are applied, and synchronized, where appropriate.

    2023-11-22 13:51:57: ERROR:Error number 9731 (0x00002603), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_MailboxBusy_Get, in line 1103, variable name NULL.Error message Error occurred during an Init Calibration. Check that no signal is being applied to the Rx ports. Check that correct external LOs are applied, and synchronized, where appropriate.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Cmd_Write, in line 798, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_cals.c, in function adi_adrv9001_cals_InternalPathDelay_Get, in line 642, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Read, in line 409, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_MailboxBusy_Get, in line 1103, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Cmd_Write, in line 798, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_cals.c, in function adi_adrv9001_cals_InternalPathDelay_Get, in line 642, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Byte_Read, in line 252, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_rx_gaincontrol.c, in function adi_adrv9001_Rx_GainControl_MinMaxGainIndex_Get, in line 765, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Byte_Read, in line 252, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_rx.c, in function adi_adrv9001_Rx_GainTable_Read, in line 406, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_tx.c, in function adi_adrv9001_Tx_DataPath_Loopback_Set, in line 2085, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_ssi.c, in function adi_adrv9001_Ssi_Loopback_Set, in line 720, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_auxdac.c, in function adi_adrv9001_AuxDac_Configure, in line 42, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_auxdac.c, in function adi_adrv9001_AuxDac_Configure, in line 46, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_auxdac.c, in function adi_adrv9001_AuxDac_Configure, in line 50, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_auxdac.c, in function adi_adrv9001_AuxDac_Configure, in line 54, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Read, in line 409, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/private/src/adrv9001_arm.c, in function adrv9001_DmaMemWrite, in line 2003, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Memory_Write, in line 450, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_rx.c, in function adi_adrv9001_Rx_Loid_Configure, in line 1980, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_rx_gaincontrol.c, in function adi_adrv9001_Rx_GainControl_Configure, in line 296, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Byte_Read, in line 252, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_gpio.c, in function adi_adrv9001_gpio_GpIntMask_Get, in line 36, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Byte_Write, in line 149, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_gpio.c, in function adi_adrv9001_gpio_GpIntMask_Set, in line 29, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_tx.c, in function adi_adrv9001_Tx_AttenuationMode_Set, in line 205, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Byte_Read, in line 252, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_radio.c, in function adi_adrv9001_Radio_Channel_State_Get, in line 488, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_tx.c, in function adi_adrv9001_Tx_AttenuationMode_Get, in line 228, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_tx.c, in function adi_adrv9001_Tx_Attenuation_Set, in line 419, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Read, in line 409, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/private/src/adrv9001_arm.c, in function adrv9001_DmaMemWrite, in line 2003, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Memory_Write, in line 450, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_rx.c, in function adi_adrv9001_Rx_InterfaceGain_Configure, in line 814, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Read, in line 409, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_MailboxBusy_Get, in line 1103, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Cmd_Write, in line 798, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_powersavingandmonitormode.c, in function adi_adrv9001_powerSavingAndMonitorMode_ChannelPowerSaving_Configure, in line 140, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Read, in line 409, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/private/src/adrv9001_arm.c, in function adrv9001_DmaMemWrite, in line 2003, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Memory_Write, in line 450, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_radio.c, in function adi_adrv9001_Radio_ChannelEnablementDelays_Configure, in line 1269, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Read, in line 409, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/private/src/adrv9001_arm.c, in function adrv9001_DmaMemWrite, in line 2003, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Memory_Write, in line 450, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_radio.c, in function adi_adrv9001_Radio_ChannelEnablementDelays_Configure, in line 1269, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Read, in line 409, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/private/src/adrv9001_arm.c, in function adrv9001_DmaMemWrite, in line 2003, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Memory_Write, in line 450, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Config_Write, in line 471, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_bbdc.c, in function adi_adrv9010_bbdc_LoopGain_Set, in line 170, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Read, in line 409, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/private/src/adrv9001_arm.c, in function adrv9001_DmaMemWrite, in line 2003, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Memory_Write, in line 450, variable name NULL.Error message Invalid Get for armCommandBusy.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_cals.c, in function adi_adrv9001_cals_Tracking_Set, in line 243, variable name NULL.Error message Failed to write ARM mem.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Failed to write ARM mem.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_rx_gaincontrol.c, in function adi_adrv9001_Rx_GainControl_Mode_Set, in line 71, variable name NULL.Error message Failed to write ARM mem.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Byte_Write, in line 149, variable name NULL.Error message Failed to write ARM mem.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_rx.c, in function adi_adrv9001_Rx_Gain_Set, in line 552, variable name NULL.Error message Failed to write ARM mem.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Failed to write ARM mem.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_tx.c, in function adi_adrv9001_Tx_AttenuationMode_Set, in line 205, variable name NULL.Error message Failed to write ARM mem.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Byte_Read, in line 252, variable name NULL.Error message Failed to write ARM mem.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_radio.c, in function adi_adrv9001_Radio_State_Get, in line 413, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_radio.c, in function adi_adrv9001_Radio_Channel_ToPrimed, in line 884, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Byte_Read, in line 252, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_radio.c, in function adi_adrv9001_Radio_State_Get, in line 413, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_radio.c, in function adi_adrv9001_Radio_Channel_ToPrimed, in line 884, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_radio.c, in function adi_adrv9001_Radio_ChannelEnableMode_Set, in line 331, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_spi.c, in function adi_adrv9001_spi_Field_Write, in line 351, variable name NULL.Error message Error while reading byte from SPI.

    2023-11-22 13:51:57: ERROR:Error number 3 (0x00000003), Recovery action -2.In file c_src/devices/adrv9001/public/src/adi_adrv9001_radio.c, in function adi_adrv9001_Radio_ChannelEnableMode_Set, in line 339, variable name NULL.Error message Error while reading byte from SPI.

    Do these errors provide any clue? The problem also arises when the main.c file is launched for the first time after FPGA bitstream load. In my previous messages I thought that the first time always works correctly, but it does not. Sometimes, after running the main.c file these errors appear and sometimes they do not.

    Kind regards,

    Sergio.

  • Hi savalos,

    I'm afraid that information is of little use. 

    Can you verify that the ADRV9002 is experiencing identical conditions when it fails, compared to when it succeeds?

    Kind Regards,
    Michał

  • Dear  ,

    I made some progress on my question and I think I can focus it a little bit more. It seems I am experiencing some problems with the initial calibrations. To reduce the source of errors, I have switched to an environment working with both the FPGA reference design and the TES (not using my custom design), and I was able to replicate the exact same error.

    I was able to succesfully program (in this context: program = click program button in TES)  from the TES the ADRV9002 with a specific FH configuration using the predefined hop tables:

    ADRV9001_FH_LTE_40M_High_Frequency_TableA.csv

    4500000000,0,0,255,255,0,0
    4501000000,0,0,255,255,0,0
    4502000000,0,0,255,255,0,0
    4503000000,0,0,255,255,0,0

    ADRV9001_FH_LTE_40M_High_Frequency_TableB.csv

    4505000000,0,0,255,255,0,0
    4506000000,0,0,255,255,0,0
    4507000000,0,0,255,255,0,0
    4508000000,0,0,255,255,0,0

    When I use these tables, everything works correctly with no initial calibration fail.

    If I change slightly the information inside the tables to:

    ADRV9001_FH_LTE_40M_High_Frequency_TableA_MODIFIED.csv

    4000000000,0,0,255,255,0,0
    4001000000,0,0,255,255,0,0
    4002000000,0,0,255,255,0,0
    4003000000,0,0,255,255,0,0

    ADRV9001_FH_LTE_40M_High_Frequency_TableB_MODIFIED.csv

    4005000000,0,0,255,255,0,0
    4006000000,0,0,255,255,0,0
    4007000000,0,0,255,255,0,0
    4008000000,0,0,255,255,0,0

    In this situation, where the only difference are the new values for the frequencies with the exact same configuration for the rest of the parameters, I sometimes get an initial calibration fail when clicking in the TES program button and sometimes I do not get the initial calibration fail. Does the initial calibration process shall be relaunched when it sometimes fails or it should always work for the first time?

    Kind regards,

    Sergio.

  • Hi Sergio,

    This is a very interesting issue. The initial calibration process should always work the first time around. If it fails and you'd like to retry, you must implement this yourself.

    By the way, it looks like we will have the updated HDL code available in the next release of the TES, so you'll be able to use the most recent software out of the box.

    Kind Regards,
    Michał