commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r7334 - gnuradio/branches/developers/jcorgan/xcvr2450/


From: jcorgan
Subject: [Commit-gnuradio] r7334 - gnuradio/branches/developers/jcorgan/xcvr2450/gr-usrp/src
Date: Thu, 3 Jan 2008 21:03:45 -0700 (MST)

Author: jcorgan
Date: 2008-01-03 21:03:45 -0700 (Thu, 03 Jan 2008)
New Revision: 7334

Modified:
   gnuradio/branches/developers/jcorgan/xcvr2450/gr-usrp/src/db_xcvr2450.py
Log:
Work in progress.  Lock detect at 2.448G @ 22 dBm, 5.480G @ 14 dBm.

Modified: 
gnuradio/branches/developers/jcorgan/xcvr2450/gr-usrp/src/db_xcvr2450.py
===================================================================
--- gnuradio/branches/developers/jcorgan/xcvr2450/gr-usrp/src/db_xcvr2450.py    
2008-01-03 22:53:23 UTC (rev 7333)
+++ gnuradio/branches/developers/jcorgan/xcvr2450/gr-usrp/src/db_xcvr2450.py    
2008-01-04 04:03:45 UTC (rev 7334)
@@ -19,7 +19,7 @@
 # Boston, MA 02110-1301, USA.
 # 
 
-from gnuradio import usrp1
+from gnuradio import usrp1, gru
 import time,math, weakref
 
 from usrpm import usrp_dbid
@@ -35,6 +35,9 @@
 ANTSEL_TX1_RX2 = (1 << 13)  # 1 = Ant 1 to TX, Ant 2 to RX
 ANTSEL_TX2_RX1 = (1 << 12)    # 1 = Ant 2 to TX, Ant 1 to RX
 TX_EN = (1 << 11)           # 1 = TX on, 0 = TX off
+TX_OE_MASK = HB_PA_OFF|LB_PA_OFF|ANTSEL_TX1_RX2|ANTSEL_TX2_RX1|TX_EN
+TX_SAFE_IO = HB_PA_OFF|LB_PA_OFF|ANTSEL_TX1_RX2
+TX_TEST_IO = LB_PA_OFF|ANTSEL_TX1_RX2|TX_EN
 
 # RX IO Pins
 LOCKDET = (1 << 15)         # This is an INPUT!!!
@@ -48,7 +51,10 @@
 B5 = (1 << 7)
 B6 = (1 << 6)
 B7 = (1 << 5)
+RX_OE_MASK = EN|RX_EN|RX_HP|B1|B2|B3|B4|B5|B6|B7
+RX_SAFE_IO = EN
 
+
 """
 A few comments about the XCVR2450:
   It is half-duplex.  I.e., transmit and receive are mutually exclusive.
@@ -92,7 +98,6 @@
         self.mimo = 1              # 0 = OFF, 1 = ON
         self.int_div = 192         # 128 = min, 255 = max
         self.frac_div = 0          # 0 = min, 65535 = max
-        self.auto_bsw = 1          # 0 = OFF, 1 = ON
         self.cp_current = 0        # 0 = 2mA, 1 = 4mA
         self.ref_div = 4           # 1 to 7
         self.rssi_hbw = 0          # 0 = 2 MHz, 1 = 6 MHz
@@ -112,7 +117,7 @@
         self.pabias_delay = 15     # 0 = 0, 15 = 7uS
         self.pabias = 0            # 0 = 0 uA, 63 = 315uA
         self.rxgain = 64           # 0 = min, 127 = max
-        self.txgain = 32           # 0 = min, 63 = max
+        self.txgain = 63           # 0 = min, 63 = max
 
         # Initialize chipset
         # TODO: perform reset sequence to ensure power up defaults
@@ -142,7 +147,9 @@
     def set_reg_int_divider(self):
         self.reg_int_divider = (
             ((self.frac_div & 0x03)<<16) | 
-            (self.int_div<<4)            | 3)
+             (self.int_div<<4)           | 3)
+        print "int_div=",self.int_div
+        print "reg_int_divider=",self.reg_int_divider
         self._send_reg(self.reg_int_divider)
 
     # Fractional-Divider Ratio (4)
@@ -167,7 +174,7 @@
             (self.mimo<<17)      |
             (1<<16)              |
             (1<<15)              |
-            (self.auto_bsw<<11)  |
+            (1<<11)              |
             (self.highband<<10)  |
             (self.cp_current<<9) |
             (self.ref_div<<5)    |
@@ -262,12 +269,10 @@
         db_base.db_base.__init__(self, usrp, which)
         self._xcvr = _get_or_make_MAX2829(usrp, which)
 
-        # FIXME -- the write reg functions don't work with 0xffff for masks
-        #self._rx_write_oe(int(), 0x7fff)
-        #self._rx_write_io((), ())
-        #self._tx_write_oe((), 0x7fff)
-        #self._tx_write_io((), ())
-        #self.set_auto_tr(True)
+        self._rx_write_io(RX_SAFE_IO, RX_OE_MASK)
+        self._tx_write_io(TX_TEST_IO, TX_OE_MASK)
+        self._rx_write_oe(RX_OE_MASK, ~0)
+        self._tx_write_oe(TX_OE_MASK, ~0)
         
     def __del__(self):
         pass
@@ -293,19 +298,19 @@
 
     def _tx_write_oe(self, value, mask):
         return self._u._write_fpga_reg((FR_OE_0, FR_OE_2)[self._which],
-                                       ((mask & 0xffff) << 16) | (value & 
0xffff))
+                                       gru.hexint((mask << 16) | value))
 
+    def _tx_write_io(self, value, mask):
+        return self._u._write_fpga_reg((FR_IO_0, FR_IO_2)[self._which],
+                                       gru.hexint((mask << 16) | value))
+
     def _rx_write_oe(self, value, mask):
         return self._u._write_fpga_reg((FR_OE_1, FR_OE_3)[self._which],
-                                       ((mask & 0xffff) << 16) | (value & 
0xffff))
+                                       gru.hexint((mask << 16) | value))
 
-    def _tx_write_io(self, value, mask):
-        return self._u._write_fpga_reg((FR_IO_0, FR_IO_2)[self._which],
-                                       ((mask & 0xffff) << 16) | (value & 
0xffff))
-
     def _rx_write_io(self, value, mask):
         return self._u._write_fpga_reg((FR_IO_1, FR_IO_3)[self._which],
-                                       ((mask & 0xffff) << 16) | (value & 
0xffff))
+                                       gru.hexint((mask << 16) | value))
 
     def _tx_read_io(self):
         t = self._u._read_fpga_reg((FR_RB_IO_RX_A_IO_TX_A, 
FR_RB_IO_RX_B_IO_TX_B)[self._which])
@@ -343,12 +348,25 @@
         """
         return True
 
-    #FIXME: temporary for debugging
+
     def freq_range(self):
-       return (2.4e9, 2.5e9, 1e6)
+       return (2.4e9, 6e9, 1e6)
 
-    #FIXME: temporary for debugging
+
     def set_freq(self, freq):
+        if freq < 2.4e9 or freq > 6e9:
+            raise ValueError("Frequency out of range")
+
+        self._xcvr.freq = freq
+        self._xcvr.ref_div = 2
+        self._xcvr.frac_div = 0
+        self._xcvr.int_div = 137
+        
+        self._xcvr.set_reg_int_divider()
+        self._xcvr.set_reg_frac_divider()
+        self._xcvr.set_reg_bandselpll()
+
+        print self._lock_detect()
        return (True, freq)
        
     #FIXME: temporary for debugging





reply via email to

[Prev in Thread] Current Thread [Next in Thread]