Hi,

    I want to read RSSI value using analog AUX ADC, I think we can read RSSI
through AUX_ADC_A1 pin of AD9862, I looked through the code
of usrp_read_aux_adc in file
/root/gnuradio/gnuradio-3.1.3/usrp/host/lib/legacy/usrp_primes.cc,

bool
usrp_read_aux_adc (struct usb_dev_handle *udh, int slot,
                   int which_adc, int *value)
{
  *value = 0;
  int   which_codec;
  if (!slot_to_codec (slot, &which_codec))
    return false;
  if (!(0 <= which_codec && which_codec < 2)){
    fprintf (stderr, "usrp_read_aux_adc: invalid adc = %d\n", which_adc);
    return false;
  }
  unsigned char aux_adc_control =
     AUX_ADC_CTRL_REFSEL_A             // on chip reference
    | AUX_ADC_CTRL_REFSEL_B;            // on chip reference
  int   rd_reg = 26;    // base address of two regs to read for result
  // program the ADC mux bits
  if (tx_slot_p (slot))
    aux_adc_control |= AUX_ADC_CTRL_SELECT_A2 | AUX_ADC_CTRL_SELECT_B2;
  else {
    rd_reg += 2;
    aux_adc_control |= AUX_ADC_CTRL_SELECT_A1 | AUX_ADC_CTRL_SELECT_B1;
  }
  // I'm not sure if we can set the mux and issue a start conversion
  // in the same cycle, so let's do them one at a time.
  usrp_9862_write (udh, which_codec, 34, aux_adc_control);
  if (which_adc == 0)
    aux_adc_control |= AUX_ADC_CTRL_START_A;
  else {
    rd_reg += 4;
    aux_adc_control |= AUX_ADC_CTRL_START_B;
  }
  // start the conversion
  usrp_9862_write (udh, which_codec, 34, aux_adc_control);
  // read the 10-bit result back
  unsigned char v_lo = 0;
  unsigned char v_hi = 0;
  bool r = usrp_9862_read (udh, which_codec, rd_reg, &v_lo);
  r &= usrp_9862_read (udh, which_codec, rd_reg + 1, &v_hi);

  if (r)
    *value = ((v_hi << 2) | ((v_lo >> 6) & 0x3)) << 2;        // format as
12-bit
  return r;
}

my question is:
1.The AD 9862 specification says: "The AUX SPI can be enabled and configured
by setting register AUX ADC CTRL. Setting register use pins high enables the
AUX SPI port.", but in the above code AUX_ADC_CTRL_AUX_SPI was not set high(
In my opinion, aux_adc_control should be added with | = AUX_ADC_CTRL_AUX_SPI
because usrp_9862_write and usrp_9862_read all need SPI operation, so we
should enable AUX API), Is this a mistype or another method ?
2.stefan.bruens in the list had said that the low 16 bits is the RSSI value,
I want to know why did the above code combine the high and low 16-bit and
format the data into 12-bit ?
3. Even with the RSSI value (int type), what should I do to convert that
value into dBm unit ?

        Thanks.
-- 
Su Jinzhao
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to