ADRV9029
Recommended for New Designs
The ADRV9029 is a highly integrated, radio frequency (RF) agile transceiver offering four independently controlled transmitters, dedicated observation...
Datasheet
ADRV9029 on Analog.com
Dear AD support:
I am working on ADRV9029 EVB with ADS9-V2EBZ. I would like to load tone file and capture buffer in Rx/Orx for AM/PM plots by TES python script or Sample C code based API. Could you support it?
Regards,
Josh
You are looking for the DPD capture dump or Rx capture ?
DPP dump captures the samples at the DPD actuator input, output and ORX samples.
RX capture captures just the RX samples.
Let me know what exactly you are looking for so i can share them with you.
I am looking for DPD capture. Thanks
Here you go, hope this helps.
################################################################################# #GUI Version: 5.1.0.30 #DLL Version: 5.1.0.21 #Cmd Server Version: 5.1.0.21 #FPGA Version: 0xD9000007 #ARM Version: 5.1.0.9(ADI_ADRV9025_ARMBUILD_TESTOBJ) #StreamVersion: 8.1.0.1 ################################################################################# #Import Reference to the DLL import System import clr import time from System import Array clr.AddReferenceToFileAndPath("C:\\Program Files\\Analog Devices\\ADRV9025 Transceiver Evaluation Software_x64_FULL\\adrvtrx_dll.dll") #clr.AddReferenceToFileAndPath("C:\\Program Files\\Analog Devices\\ADRV9029 Transceiver Evaluation Software_x64_FULL\\adrvtrx_dll.dll") from adrv9010_dll import AdiEvaluationSystem from adrv9010_dll import Types from adrv9010_dll import Ad9528Types filename = "C:\\Users\\rbitra\\OneDrive - Analog Devices, Inc\\Ram_Onedrive\\Madura\\DPD_Dump" #The target directory and filename for storing the captured data in a tab separated IQ format def fileDataWriter(fileHandle, numSamples, iData = None, qData = None): if (len(iData) != 1 and len(qData) != 1): print "Writing to filename:", fileHandle dataFile = open(fileHandle, "w") for ii in range(0,numSamples): iSample = str(iData[ii]) qSample = str(qData[ii]) dataFile.write(iSample+"\t"+qSample+"\n") dataFile.close() def dpdBufferCaptureDataDump(numSamples = 4096, fileHandle = filename): iData = Array[System.Int16]([-1]*numSamples) qData = Array[System.Int16]([-1]*numSamples) data = Types.adi_adrv9010_ExtDpdCaptureData_t() dataList = [data.txAlternateCaptureData, data.txCaptureData, data.orxCaptureData] fileHandleList = [fileHandle+["_Tx_PreDpd_cap1","_Tx_PostDpd_cap1","_ORx_cap1"][nn] for nn in range(3)] retVal = adrv9010.ExternalDpd.ExtDpdCaptureDataGet(data) if (retVal[0] != 0): print "DPD buffer read failed result = ", retVal return -1 data = retVal[1] for ii in range(3): buffer = dataList[ii] iData, qData, numSamples = [buffer.extDpdCaptureDataI, buffer.extDpdCaptureDataQ, buffer.extDpdCaptureSampleArrSize] fileDataWriter(fileHandleList[ii]+".txt", numSamples, iData, qData) def spiRead(address): data = adrv9010.Hal.SpiByteRead(address, 0) print "SPI Read Address " + hex(address) + ": " + hex(data[1]) def spiWrite(address, data): adrv9010.Hal.SpiByteWrite(address, data) print "SPI Write Address " + hex(address) + ": " + hex(data) #Create an Instance of the Class link = AdiEvaluationSystem.Instance connect = False if (link.IsConnected() == False): connect = True link.platform.board.Client.Connect("192.168.1.10", 55556) print "Connecting" if (link.IsConnected()): adrv9010 = link.Adrv9010Get(1) print "Connected" ##### YOUR CODE GOES HERE ##### dpdBufferCaptureDataDump() else: print "Not Connected" if (connect): link.platform.board.Client.Disconnect() print "Disconnected"
Thanks a lot. I will try it later. By the way, is it possible I can load customer wave file in Tone Parameters? If yes, can you also share sample code for reference? I also would like to how can I align Tx and DPD capture? Any progress in the issue?
i write one version on my own. Is it correct?
TxTone = open(TxFile, 'r')
# Replicate the single IQ pair for all 8 Tx ADCs
NUM_TX_ADC = 8
lines = TxTone.readlines()
I_data = []
Q_data = []
for line in lines:
line = line.strip('\n')
data = line.split('\t')
I_data.append(int(data[0]))
Q_data.append(int(data[1]))
I_array = Array[int](I_data)
Q_array = Array[int](Q_data)
toneData = List[Array[int]]()
for _ in range(NUM_TX_ADC/2):
toneData.Add(I_array)
toneData.Add(Q_array)
# Verify toneData before calling PerformTx
try:
link.platform.board.PerformTx(FpgaTypes.adi_fpga9010_TxTollgateTrigSources_e.ADI_FPGA9010_TX_IMM_TRIG, toneData, 0)
except Exception as e:
print(e)
You wanted to load tone in Tx path using Python script- If so, we don't have it. You can use GUI to load the custom vectors, right. See snippet below.
Dear Ramaro,
I would like to ask whether the functionality of the Python script DpdCaptureBufferDump_ADRV9025.txt can be implemented using the C code API.
Currently, I am using API version 5.0.0.57, but I could not find a related API that allows me to perform operations similar to adrv9010.ExternalDpd.ExtDpdCaptureDataGet.
Could you please advise if there is an equivalent function in the C API or an alternative approach?
Thank you for your support.
Dear Ramaro,
I would like to ask whether the functionality of the Python script DpdCaptureBufferDump_ADRV9025.txt can be implemented using the C code API.
Currently, I am using API version 5.0.0.57, but I could not find a related API that allows me to perform operations similar to adrv9010.ExternalDpd.ExtDpdCaptureDataGet.
Could you please advise if there is an equivalent function in the C API or an alternative approach?
Thank you for your support.
Yes, we do not have C-based API for DPD capture as of now. User need to use SPI register based dump, attached the python example script for your reference.