in sigma studio, is there a way of flagging a negative number?
I need an output if the number is negative so I can encode it.
in sigma studio, is there a way of flagging a negative number?
I need an output if the number is negative so I can encode it.
I saw some old literature regarding ADSST-GPSRF01. It's not clear to me if it is still in production or it was only announced. Also, is there any Analog Devices similar replacement for GNNS signals?
Thanks
Hi Sir,
As Data sheet, the IP3 is 45dBm(typ.) and I would like to know how many dBc in this IP3 spec. ?
Thanks~
I am designing an active loop filter using ADIsimPLL for ADF4159. In the topology, there is a voltage level of Vr.
From help document, Vr is calculated as 0.5(Vmax+Vmin).
In the ADIsimPLL interface, there is a group of Vmax and Vmin values, as shown in the attachment.
Can I use them for Vr calculation?
Specifically, does it mean Vr = 0.5*3.3 = 1.65V in my design? Thanks
dlath Please I was using CT before and now using shunt resistor, I have configured the ADE7953 EVAL board as directed in the UG-194. I used shunt resistor of 200microOhms. on the board there is no way to bypass the 51ohms burden resistor, so I removed it. I used the filter circuit of 1K resistor with 0.033microFarads capacitor. pls kindly attend to the challenges I'm facing using shunt, I look forward to reading from you.
Here are my configuration values and error readings.
error reading at
error reading at
reading ( after PHACAL and AWGAIN calibration) it gives correct accuracy at 5A, p.f of 1 and 0.5L.
my question goes does;
HI,
I'd like to make a change request. I'm specifically interested in using the ADI_ENABLE signal (signal "up_adc_enable" in hdl/up_adc_channel.v at dev · analogdevicesinc/hdl · GitHub ) for synchronization/packetization on a DMA channel.
This signal is currently set when "update_scan_mode()" is called for a particular IIO device. From a LIBIIO perspective, this happens when "iio_device_create_buffer()" is run, after which "up_adc_enable" is asserted. However, when executing "iio_buffer_destroy()", "up_adc_enable" is unchanged and will remain asserted.
Can there please be a call an "update_scan_mask" when destroying a buffer so that "up_adc_enable" is de-asserted?
Thanks!
Hi!
I have an ADRV9371-W/PCBZ card from Analog Devices. It is a 2 channel radio card.
So I am using Linux to control the radio, and I want to write a bash script to automate what I am doing(I don't know much about C programming). I'm using the commands from this page which lets me change the frequency that comes out of the transmitter.
There is also a bunch of header pins labelled P502 which look like they are supposed to be GPIOs. I'd like to use these pins for blinking some status LEDs. What I'm worried about is that I think the radio chip on this card can sometimes use these GPIOs for other things, and I don't want to break anything.
On the IIO Oscilloscope webpage it looks like you can manually configure the GPIOs to do what you want, so I figure there must be some kind of command to make the radio chip not use the GPIO pins.
Can someone tell me what the command line instruction would be to set the GPIOs to user mode? And what the command would be to set the voltage level?
I'm guessing the command should be something like
root:/sys/bus/iio/devices/iio:device3> echo 0 > out_altvoltage1_GPIO
because that's kind of what all the other commands look like. I just don't know what exactly it is.
Thanks for your help!
-Ryan
Hello!
My DUT is PicoZed SDR development kit board. I am trying to read "axi_ad9361 block" 32-bit register inside ad9361-iiosream.c example with a help of iio_device_reg_read() API provided by Libiio framework, but still no succeed with error code -13. I do it like this:
assert(get_ad9361_stream_dev(ctx,RX,&rx) && "No rx dev found"); // from ad9361-iiostream.c example
ret = iio_device_reg_read(rx,0x800000BC,&value);
Trying to find solution I found the followind post why iio_device_reg_read() doesn't work? and as I understood I have two options using these API:
1) if I use physical addresses starting from 0x0 for specific device I get access to its SPI registers
2) if I use virtual addresses starting from 0x80000000 I get access to the AXI registers, because they are mmaped by Libiio drivers to this virtual address in OS.
In my case I would like to use the 2-nd option. Here are my AXI blocks:
In order to check my understanding I used iio-oscilloscope software provided by AD (debug tab) in order to write 32-bit value inside register 0x790200BC of "axi_ad9361" block. This register I choosed from hld reg map. I found that "cf-ad9361-lpc" is the exact device which is MMAPED to axi block and used 0x800000BC virtual address in order to write values there. And I can succesfully read these values with AXI-JTAG debugger from Vivado using address 0x790200BC. I would like to do the same but inside ad9361-iiostream.c. So my questions are:
1) Is my understaning of the whole workflow correct ?
2) How to read and write AXI registers with a help of iio_device_reg_read()/write() if it is possible?
3) Are all these axi blocks already mmaped in ad9361-iiostream.c to some specific devices. For example axi_ad9361 to cf-ad9361-lpc device?
4) What do I need to do in order to mmap custom AXI block if I would like to do it somewhen ?
I will be very grateful to receive any advice and help. Thank you!
I made a magnetic field module using the AD22151 sensor based on the bipolar configuration in the datasheet. The sensitivity S is determined by R3 and R2. Theoretically speaking, my sensor module should be able to measure -8000 to +8000 Gauss.
However, when I measured the magnetic field over a hard magnet, the output voltage easily got to 4.69 V which is the maximum output of the sensor. I measured the same magnet using a Gaussmeter, the reading is 3300 Gauss. Do I misunderstand the gain equation given by the datasheet?
Someone asked questions about AD22151 in the forum. The answer said the sensor could only measure -2500 to +2500 Gauss in bipolar configuration and 0 to +5000 Gauss in the unipolar configuration. If this is true, then it may answer my question. But the thing is that the datasheet shows that the magnetic flux density that can be measured is Unlimited which is different from what was answered in the forum.
If the sensor has a limitation on the measured flux density, is there any other magnetic field sensor that has a larger range of measurement?
I am building a detector that has two output voltages that I need to divide. The numerator could have positive or negative voltage depending on the location of a laser beam on the detector. The denominator will always be positive.
I have been trying to build a circuit to divide two voltages using the AD538 Real-Time Analog Computational Unit (ACU). The circuit diagram for two quadrant division using the AD538 is shown below and the data sheet is attached.
The trimming potentiometer labeled R2 10kOhms, should this have a center at 10kOhms or a maximum at 10kOhms? In the data sheet it says that the center of the trimming potentiometer should give a gain of 1.4, and I am not sure if that means set the resistance to 5kOhms or 10kOhms.
Further, I have tried many values for the R2 potentiometer, but have not been able to accurately divide two voltages consistently. I am able to get a correct value for negative numerator voltages when I adjust R2, but when I change the fraction I do not get the correct value. And when I test with positive numerator voltages, I am never able to get an accurate value. The output voltage is a small negative value (I don't know why it would be negative if both voltages in the fraction are positive?) and doesn't change when I vary the input voltage values.
Any help with the two quadrant division circuit would be greatly appreciated.
Thank you!
Hello,
We are using with HMC840 PLL in Fractional Mode and 100MhZ REF. We experience some issues at vibration&shock even when Reference don't pass through same vibration environment. I see some spurious near carrier and even loss of lock with RF power loss at some situation until I write all the registers again. Please suggest if you have some vibration sensitivity tests?
I experienced that kind of problems in cavity resonator VCO is the same problem I experience now at integrated VCO?
Hi,
I have a ADIS-16488AMLZ with ADIS-EVAL board. I didnt use it for more than 2 years and grab it out few weeks ago and connect to pc and start IMU Evaluation software. Everything works OK but 10 days ago after I start Eval software, it says "updating EVAL-ADIS Firmware" and then "waiting for operation to complete and reattach". It was not done after 8 hours.
Now when I connect to USB and start the IMU software then I get always the update message. When I abort the updtae then no connection is made to ADIS-16488.
Any Idea how can I solve this problem?
Thanks,
Osto
Hello, I am new with RF, I need to generate 2.00 GHz to 2.20 square wave depending upon selection through controller. On every 10us(minimum time) new data come and frequency change between given range. so i need frequency change time <1us Is there any suitable IC which can interface with controller for frequency selection with that much speed?frequency generation rf blockseticghz
Hello,
My application needs to operate in the ISM-915 MHz on the RF side. At the same time,my application requires analog baseband with 1 V p2p IQ (for each IN, IP, QN, QP).
I'm using ADRF6850 as RX front-end since it provides analog IQ. The internal gain from 0 to 60 dB is set by external voltage (VGAIN) from 0 to 1.5V. ADRF6850 provides baseband outputs up to 2.5 V p2p.
I need a circuit that adjusts the gain such that baseband output stays around 1 V p2p, regardless of RF input power (unless it is too low). I see two possible options:
1) Get automatic AGC on the RF side and manually set VGAIN such that baseband never exceeds 1 V p2p. This option is less desirable since combined RF from all frequencies will be used to set the gain.
2) Set up closed loop feedback from baseband to VGAIN. This option is proffered since gain is set based on the in-band down-converted power.
Ideally, I want to use a part that can be configured to my specifications, instead of designing my own feedback loop (I don't know what is the feed-forward function of ADRF6850 is to properly design the closed loop).
As a note, 1 V p2p signal will be interfacing with the low-voltage integrated circuit. Attenuator. from 2.5 V to 1 V is not desired because it will lower SNR of the signal, which is critical. Similarly, clipping the BB at 1 V is not possible since it will alter the signal.
Thank you,
Ivan
Hi,
I am trying to control the DAC EVAL-AD5372 from the MATLAB software environment.
I was able to do this successfully from 32bit MATLAB using the loadlibrary function and DLL ADI_CYUSB_USB4.dll found from http://ez.analog.com/thread/11105 and a wrapper I created.
However, when I try to do the same for 64bit MATLAB, the board fails to be detected. Has anyone been successful using this DLL in a 64bit application? Is it a problem of MATLAB using a specific compiler?
Thanks,
Luke
I am looking for the design files for the ADRV9364-Z7020, and was told by AD support to post a request on this forum.
For reference, the email I received is below.
------------------
Hi Frank,
I was informed to have you post your questions regarding the reference design pricing on our Engineer Zone forum.
https://ez.analog.com/community/wide-band-rf-transceivers/design-support-ad9371
They will likely take this out of the forum and email you directly but this is where they noted you should request this since it is still not fully released.
Hello,
I am following 'Multicore support->Loading of multicore apps by the boot ROM' from Document 'Linux_Add-in_User's_Guide-1.1.0' to Generate LDR image.If the generated LDR image is flashed the device hangs/does not boot.
Below is the message displayed after board reset.
sc # reset
resetting ...
Below are steps followed :
1) To generate LDR image
elfloader.exe -proc ADSP-SC589 -si-revision 0.1 -b spimaster -f binary -width 8 -bcode 1 -init init-sc58x-ezkit-hpc.elf -core0=u-boot-sc58x-ezkit-hpc -core1=mcapi_send_recv_Core1.dxe -NoFinalTag=u-boot-sc58x-ezkit-hpc -o u-boot-sc58x-ezkit-hpc-init-sc58x-ezkit-hpc-elf-mcapi.ldr
Note:
The init and u-boot files are copied taken from Linux environment after installing adi-CrossCoreEmbeddedStudio-linux-x86-2.3.0.deb and adi-LinuxAddinForCCES-linux-x86-1.1.0.deb files (PATH:\opt\analog\cces-linux-add-in\1.1.0\uboot-sc58x-1.1.0\bin\)
The mcapi_send_recv_Core1.dxe file is generated using import function from CCES studio (PATH:/opt/analog/cces-linux-add-in/1.1.0/examples/cces_mcapi_test)
2) To flash generated LDR image
The generated LDR image is copied to SD card for writing it into flash
a) ext2load mmc 0:1 ${loadaddr} u-boot-sc58x-ezkit-hpc-init-sc58x-ezkit-hpc-elf-mcapi.ldr
b) sf probe 2:1
c) sf erase 0 0x80000
d) sf write ${loadaddr} 0 ${filesize}
3) TO flash dtb command
The dtb file is copied to SD card for writing it into flash
a) ext2load mmc 0:1 ${loadaddr} sc58x-ezkit-hpc.dtb
b) sf probe 2:1
c) sf erase 0x900000 0x40000
d) sf write 0xc2000000 0x900000 ${filesize}
4) TO boot Linux
To save environment and reset
a) set sdargs set bootargs root=/dev/mmcblk0p1 rw rootwait rootfstype=ext3 clkin_hz=(25000000) earlyprintk console=ttySC0,57600
b) set sdboot 'run sdargs; sf probe 2:1;sf read 0xc4000000 0x900000 0x40000;ext2load mmc 0:1 0xc2000000 vmImage-sc58x-ezkit-hpc;bootm ${loadaddr} - ${dtbaddr}'
c) set bootcmd run sdboot
d) save
e) reset
Please help me to resolve this issue.
Thank You,
Deepak Agasibagil
Hey Guys,
i am using for a custom evaluation board the ADF5355 as a LO for a QAM modulator/demodulator. Allthough I use the programming software there is something wrong.
I want the ADF5355 to give a LO at 8,571428GHz using RFOutB and a 20MHz reference. Here is my programming sequence. Sadly I don't see my error:
/**
* @brief ADF5355 for 8,5714 GHz operation configuration function during power up
* @author Benjamin Brammer
* @date 15.05.2017
*
* This function configures the ADF5355 for 8,5714 GHz operation during power up.
*
*/
voidADF5355_8_5714GHz_config_startup(void)
{
/* asserting CE */
ENABLE_ADF5355;
/* configure register 12 (default value) */
adf5355_data[0]=1;
adf5355_data[1]=0x041C;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 11 (reserved! don't change!) */
adf5355_data[0]=0x0061;
adf5355_data[1]=0x300B;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 10 (ADC_CLK_DIV = 50) */
adf5355_data[0]=0x00C0;
adf5355_data[1]=0x0CBA; //ToDo: maybe there is a mistake here!
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 9 (VCO Band Division = 9 ;
* ALC = 30 ; Synth lock timeout = 12 ; timeout = 34) */
adf5355_data[0]=0x0908;
adf5355_data[1]=0xBCC9; // ToDo: maybe there is a mistake here!
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 8 (reserved! don't change!) */
adf5355_data[0]=0x102D;
adf5355_data[1]=0x0428;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 7 (LE sync = 1 ; LDC = 2048 ;
* LOL = 1 ; LDP = 12ns ; LDM = Fractional N) */
adf5355_data[0]=0x1200;
adf5355_data[1]=0x0067; // ToDo: maybe there is a mistake here!
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 6 (gated bleed = 0 ; negative bleed = 1 ;
* feedback select = 1 ; divider select = 1 ; CPbc = 15µA ;
* Mute till lock = 0 ; RFoutB = On ; RFoutA = Off ; Output Power = -4dBm) */
adf5355_data[0]=0x3500;
adf5355_data[1]=0x8036; // ToDo: maybe Output power is too weak and Register is double buffered!
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/*DOUBLE BUFFERING!!!!!*/
/* configure register 0 (AUTOCAL = 1 ; PrescalerValue = 1 ; INT = 214) */
adf5355_data[0]=0x0030;
adf5355_data[1]=0x0D60;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 5 (reserved! don't change!) */
adf5355_data[0]=0x0080;
adf5355_data[1]=0x0025;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 4 (MUXOUT = Three-state ; RefDoubler = 0;
* RDIV = 0 ; R Counter = 1 ; Doublebuffer = 0 ; CPcs = 0,9mA ;
* RefMode = single ended ; Lvlselect = 3,3V ; PDp = 1 ; PWRDown = 0 ;
* CPThree-state = 0 ; CounterReset = 0) */
adf5355_data[0]=0x3000;
adf5355_data[1]=0x8984; // ToDo: maybe there is a mistake here!
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/*DOUBLE BUFFERING!!!!!*/
/* configure register 0 (AUTOCAL = 1 ; PrescalerValue = 1 ; INT = 214) */
adf5355_data[0]=0x0030;
adf5355_data[1]=0x0D60;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 3 (SDLoadReset = 0 ; PhaseResync = 0 ; PhaseAdjust = 0 ;
* PhaseValue = 0) */
adf5355_data[0]=0x0000;
adf5355_data[1]=0x003; // ToDo: maybe there is a mistake here!
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/*DOUBLE BUFFERING!!!!!*/
/* configure register 0 (AUTOCAL = 1 ; PrescalerValue = 1 ; INT = 214) */
adf5355_data[0]=0x0030;
adf5355_data[1]=0x0D60;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 2 (FRAC2 = 571 ; MOD2 = 2000) */
adf5355_data[0]=0x9C77;
adf5355_data[1]=0xFFF2;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/*DOUBLE BUFFERING!!!!!*/
/* configure register 0 (AUTOCAL = 1 ; PrescalerValue = 1 ; INT = 214) */
adf5355_data[0]=0x0030;
adf5355_data[1]=0x0D60;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 1 (FRAC2 = 571 ; MOD2 = 2000) */
adf5355_data[0]=0x0492;
adf5355_data[1]=0x3A21;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
/* configure register 0 (AUTOCAL = 1 ; PrescalerValue = 1 ; INT = 214) */
adf5355_data[0]=0x0030;
adf5355_data[1]=0x0D60;
CS_ADF5355_LOW;
HAL_SPI_Transmit_DMA(&hspi2,&adf5355_data[0],2);//transfer
while(HAL_SPI_GetState(&hspi2)== HAL_SPI_STATE_BUSY_TX);
CS_ADF5355_HIGH;
}
With this sequence I get a LO at 4,71394GHz at RFOUTB . Why?
I would really appreciate some help, because I don't see my fault here..
best regards
Benbjamin