Post Go back to editing

Reduce frequency change time (ADRV9008-1)


I'm using ADRV9008-1 + my custom board.

I developed an application using a IIO driver to change the LO frequency of ADRV9008-1.

Refer to the iio_attr program.(

Since the frequency change time is important, the execution time was measured with the clock_get time function. a code is below.


clock_gettime(CLOCK_MONOTONIC, &t_begin);
sprintf(sCenterFreq, "%llu", center_freq);
if(iio_channel_attr_write(ch, attr, sCenterFreq) < 0){
DebugLog((SLOG_ERROR, "* Error : Can't write frequency attribute\n"));
return TFAIL;
clock_gettime(CLOCK_MONOTONIC, &t_end);
t_result = 1000000000 * (t_end.tv_sec - t_begin.tv_sec) + (t_end.tv_nsec - t_begin.tv_nsec);
printf("iio_channel_attr_write : %lf sec\n", (double)t_result / 1000000000);


As a result, the change time was 100ms.This time is too long.

Is there any way to reduce this time as much as possible?


add thanks.
[edited by: JehoLee at 11:36 AM (GMT -4) on 16 Sep 2021]

Top Replies

Parents Reply
  • Thank you for reply.

    I checked RF PLL FREQUENCY HOPPING section in UG-1295.

    In the document, the TALISE_* function is used, which is a function used in Barmetal environment.

    In linux, ADRV9008-1 is IIO device. I understand that the device is controlled using Libiio.

    However, libiio cannot find an attribute that sets the FHM. (set hopping mode, the bound of the frequency hopping... etc.)

    What method should I use to develop it on Linux?

    How to use the functions used by UG1295 in a Linux environment?