]> git.gag.com Git - debian/gnuradio/commitdiff
Allow setting of non-standard FPGA master clock frequency for USRP1
authorjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Mon, 5 Jan 2009 18:05:17 +0000 (18:05 +0000)
committerjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Mon, 5 Jan 2009 18:05:17 +0000 (18:05 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10193 221aa14e-8319-0410-a670-987f0aec2ac5

gr-usrp/src/usrp_base.cc
gr-usrp/src/usrp_base.h
gr-usrp/src/usrp_base.i
usrp/host/lib/legacy/usrp_basic.cc
usrp/host/lib/legacy/usrp_basic.h

index 1709c7a44c959236ce9ac57fcbbac02c4ca497d0..a4cf64ed736797c3261c32787646527f0b66dbdd 100644 (file)
@@ -82,6 +82,12 @@ usrp_base::fpga_master_clock_freq() const
   return d_usrp_basic->fpga_master_clock_freq();
 }
 
+void
+usrp_base::set_fpga_master_clock_freq(long master_clock)
+{
+  d_usrp_basic->set_fpga_master_clock_freq(master_clock);
+}
+
 void
 usrp_base::set_verbose (bool verbose)
 {  
index 83aa699abf3bf162ca231b1bba8af5c7016c7453..c106739d019a20e68579dbdf7cbeb8305e76b80c 100644 (file)
@@ -98,7 +98,16 @@ public:
   /*!
    * \brief return frequency of master oscillator on USRP
    */
-  long  fpga_master_clock_freq() const;
+  long fpga_master_clock_freq() const;
+
+  /*!
+   * Tell API that the master oscillator on the USRP is operating at a non-standard 
+   * fixed frequency. This is only needed for custom USRP hardware modified to 
+   * operate at a different frequency from the default factory configuration. This
+   * function must be called prior to any other API function.
+   * \param master_clock USRP2 FPGA master clock frequency in Hz (10..64 MHz)
+   */
+  void set_fpga_master_clock_freq (long master_clock);
 
   void set_verbose (bool on);
 
index 8f0c8368d4a7d76065efccd3ce519bb7cf60e6dc..d0ece1fb25d3f04ecd54aafd6790d015b1f7ab5a 100644 (file)
@@ -38,7 +38,8 @@ public:
   db_base_sptr db(int which_side, int which_dev);
   %rename (_real_selected_subdev) selected_subdev;
   db_base_sptr selected_subdev(usrp_subdev_spec ss);
-  long  fpga_master_clock_freq() const;
+  long fpga_master_clock_freq() const;
+  void set_fpga_master_clock_freq(long master_clock);
   void set_verbose (bool on);
   static const int READ_FAILED = -99999;
   bool write_eeprom (int i2c_addr, int eeprom_offset, const std::string buf);
index e63a097ac913e45535f2026ef1472d7d9364ed27..883e5ede483e2c04796334394a1036a0f9d51959 100644 (file)
@@ -112,7 +112,7 @@ usrp_basic::usrp_basic (int which_board,
   : d_udh (0),
     d_usb_data_rate (16000000),        // SWAG, see below
     d_bytes_per_poll ((int) (POLLING_INTERVAL * d_usb_data_rate)),
-    d_verbose (false), d_db(2)
+    d_verbose (false), d_fpga_master_clock_freq(64000000), d_db(2)
 {
   /*
    * SWAG: Scientific Wild Ass Guess.
index c5e3d282415351435970ba040583676a91ca7876..2caac7b66537d409ba3f30ce6c6acee255208eab 100644 (file)
@@ -1,4 +1,3 @@
-
 /* -*- c++ -*- */
 /*
  * Copyright 2003,2004,2008 Free Software Foundation, Inc.
@@ -69,6 +68,7 @@ protected:
   int                   d_usb_data_rate;       // bytes/sec
   int                   d_bytes_per_poll;      // how often to poll for overruns
   bool                  d_verbose;
+  long                   d_fpga_master_clock_freq;
 
   static const int      MAX_REGS = 128;
   unsigned int          d_fpga_shadows[MAX_REGS];
@@ -177,7 +177,16 @@ public:
   /*!
    * \brief return frequency of master oscillator on USRP
    */
-  long  fpga_master_clock_freq () const { return 64000000; }
+  long fpga_master_clock_freq () const { return d_fpga_master_clock_freq; }
+
+  /*!
+   * Tell API that the master oscillator on the USRP is operating at a non-standard 
+   * fixed frequency. This is only needed for custom USRP hardware modified to 
+   * operate at a different frequency from the default factory configuration. This
+   * function must be called prior to any other API function.
+   * \param master_clock USRP2 FPGA master clock frequency in Hz (10..64 MHz)
+   */
+  void set_fpga_master_clock_freq (long master_clock) { d_fpga_master_clock_freq = master_clock; }
 
   /*!
    * \returns usb data rate in bytes/sec