The initial calibrations for the ADRV9001 enable optimum performance. See the TRANSMITTER/RECEIVER/OBSERVATION RECEIVER SIGNAL CHAIN CALIBRATIONS section in the user guide. The initial calibration uses internal loop back and test tones that have hardware requirements, such as Rx and Tx having 50 ohms termination during calibration, see user guide for more details.
The most common calibration errors during bring up are listed below with some general guidelines to help locate the root cause.
Error Codes and Messages
The error messages below are a few of the common error messages for calibration failures:
- Error numbers in this range 8192 – 16,383 (0x00002000 – 0x00003FFF), give this 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”
- Error numbers in this range 16,384 – 24,575 (0x00004000 – 0x00005FFF), give this error message: "Error occurred during a Tracking Calibration. Disable tracking calibrations, reset and program. If enabled tracking calibrations require external loopback, check loopback connections. If issue persists, contact Analog Devices for support"
- Error number 9729 (0x00002601), Recovery action -2.In file drivers/iio/adc/navassa/devices/adrv9001/private/src/adrv9001_arm.c, in function adrv9001_ArmCmdErrorHandler, in line 2841, 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.
- Error number 11264 (0x00002C00), Recovery action -2.In file ../src/devices/adrv9001/private/src/adrv9001_arm.c, in function adrv9001_ArmCmdErrorHandler, in line 2840, 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.
- Error number 3 (0x00000003), Recovery action -101.In file ../src/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_CmdStatus_Wait, in line 651, variable name device.Error message ArmCmdStatusWait() failed due to thrown ARM error. Is device in correct state for calling command?
General
If correcting the suggestion from the error message did not clear the calibration error then here a few more steps to make sure of:
- Use Silicon Rev C. Verify the revision through API (adi_adrv9001_SiliconVersion) or the TES connection page.
- Always use the latest SDK release.
- When using the TES (Transceiver Evaluation Software), confirm the binary and the profile is from the same TES version.
- Latest TES and binary files location : Wideband RF Transceiver Evaluation Software | Analog Devices
- How to program the SD card: a) Writing SD Card Image Manually (SDK23.1 and Higher) - Documents - TES GUI & Software Support ADRV9001 – ADRV9007 - EngineerZone (analog.com)
- Check all power supply voltages for the ADRV9001 device.
- All power supplies require stability, it is critical for reliable operation. Check all power supplies always stay within the min/max range. Measure at the ball/cap next to ADRV9001 device and verify stability during calibration. Verify at the ADRF9001 device not the power origin.
- All power supplies must be within specification all times. (See Table 5 in the data sheet)
- VDDA_1P0 Analog Supply : 0.975 V to 1.025 V
- VDD_1P0 Digital Supply : 0.95 V to 1.05 V
- VDDA_1P3 Analog Supply: 1.267 V to 1.033 V
- VDDA_1P8 Analog Supply : 1.71V to 1.89 V
- VDD_1P8 Digital Supply : 1.71 V to 1.89 V
- Ensure that the Mode pin (L13) on the ADRV9001 is connected to VSSA and not left floating.
- The Rx and Tx pins must be terminated with 50 ohms during calibration.
- Confirm ARM and stream images are correct for custom boards and use the same version for the profile files.
- The ARM image is contained in the "initialize_binary_10 array in the code generated by TES. Each SDK release has its own ARM image.
- The stream image is contained in the "initialize_binary_09 array in the code generated by TES. Each SDK release has its own stream image.
- When using external LO, make sure it is synchronized to the device clock.
- Check the integrity of SPI clock and data signals. Try reducing the clock and confirm if it improves the
- Refer to Serial Peripheral Interface (SPI) Timing section in the data sheet for clock and SPI timing.
- Refer to Serial-Peripheral Interface (SPI) section in the Users Guide.
- Refer to Hardware Abstraction Layer (HAL) section in the Users Guide.
- Refer to the customer platform section on SPI for details on creation of the customer files. Verify the host controller and the ADRV9001 have compatible configurations.
- Verify the custom profile and hardware configuration with ADI Evaluation boards and TES. Ensure that the indicator on the Device Conficguration tab is green.
- In case of failure with Linux drivers:
- Use the specific Linux driver version for the SDK you are using.
- Make sure that the version of arm and Stream image are correct for given SDK version and is correct for given configuration.
Debug API Function
- There is a debug API that can give more information, “adi_adrv9001_Utilities_SystemDebugPreCalibrate”. You can read about this API and other APIs in the ADRV9001_API.cfm guide. This is in the zip file for the SDK in the production folder.