commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r7467 - usrp2/trunk/firmware/lib


From: eb
Subject: [Commit-gnuradio] r7467 - usrp2/trunk/firmware/lib
Date: Fri, 18 Jan 2008 15:21:32 -0700 (MST)

Author: eb
Date: 2008-01-18 15:21:31 -0700 (Fri, 18 Jan 2008)
New Revision: 7467

Modified:
   usrp2/trunk/firmware/lib/ad9510.c
   usrp2/trunk/firmware/lib/ad9510.h
   usrp2/trunk/firmware/lib/ad9777.c
   usrp2/trunk/firmware/lib/u2_init.c
Log:
Implemented and tested register readback from AD9510 and AD9777.


Modified: usrp2/trunk/firmware/lib/ad9510.c
===================================================================
--- usrp2/trunk/firmware/lib/ad9510.c   2008-01-18 21:40:10 UTC (rev 7466)
+++ usrp2/trunk/firmware/lib/ad9510.c   2008-01-18 22:21:31 UTC (rev 7467)
@@ -20,19 +20,23 @@
 #include "spi.h"
 #include <memory_map.h>
 
+#define RD (1 << 15)
+#define WR (0 << 15)
+
 void
 ad9510_write_reg(int regno, uint8_t value)
 {
-  uint32_t v = ((regno & 0xff) << 8) | (value & 0xff);
+  uint32_t inst = WR | (regno & 0xff);
+  uint32_t v = (inst << 8) | (value & 0xff);
   spi_transact(SPI_TXONLY, SPI_SS_AD9510, v, 24, SPIF_PUSH_FALL);
 }
 
-
-#if 0
 int
 ad9510_read_reg(int regno)
 {
-  // FIXME
-  return 0;
+  uint32_t inst = RD | (regno & 0xff);
+  uint32_t v = (inst << 8) | 0;
+  uint32_t r = spi_transact(SPI_TXRX, SPI_SS_AD9510, v, 24,
+                           SPIF_PUSH_FALL | SPIF_LATCH_FALL);
+  return r & 0xff;
 }
-#endif

Modified: usrp2/trunk/firmware/lib/ad9510.h
===================================================================
--- usrp2/trunk/firmware/lib/ad9510.h   2008-01-18 21:40:10 UTC (rev 7466)
+++ usrp2/trunk/firmware/lib/ad9510.h   2008-01-18 22:21:31 UTC (rev 7467)
@@ -25,6 +25,6 @@
  */
 
 void ad9510_write_reg(int regno, uint8_t value);
-// int  ad9510_read_reg(int regno);
+int  ad9510_read_reg(int regno);
 
 #endif /* INCLUDED_AD9510_H */

Modified: usrp2/trunk/firmware/lib/ad9777.c
===================================================================
--- usrp2/trunk/firmware/lib/ad9777.c   2008-01-18 21:40:10 UTC (rev 7466)
+++ usrp2/trunk/firmware/lib/ad9777.c   2008-01-18 22:21:31 UTC (rev 7467)
@@ -40,6 +40,8 @@
 ad9777_read_reg(int regno)
 {
   uint8_t instr = IB_RD | IB_XFER_1 | (regno & IB_ADDR_MASK);
-  return spi_transact(SPI_TXRX, SPI_SS_AD9777,
-                     (instr << 8) | 0, 16, SPIF_PUSH_FALL);
+  uint32_t r = spi_transact(SPI_TXRX, SPI_SS_AD9777,
+                           (instr << 8) | 0, 16,
+                           SPIF_PUSH_FALL | SPIF_LATCH_RISE);
+  return r & 0xff;
 }

Modified: usrp2/trunk/firmware/lib/u2_init.c
===================================================================
--- usrp2/trunk/firmware/lib/u2_init.c  2008-01-18 21:40:10 UTC (rev 7466)
+++ usrp2/trunk/firmware/lib/u2_init.c  2008-01-18 22:21:31 UTC (rev 7467)
@@ -28,6 +28,7 @@
 #include "mdelay.h"
 #include "ad9777.h"
 #include "ad9510.h"
+//#include "nonstdio.h"
 
 /*
  * We ought to arrange for this to be called before main, but for now,
@@ -169,10 +170,18 @@
   hal_set_leds(0x0, 0x3);
   mdelay(100);
 
-  //int r0 = ad9777_read_reg(r0);
-  //if (r0 & R0_PLL_LOCKED)
-  //  hal_set_leds(0x2, 0x2);
+#if 0
+  // test register readback
+  int rr, vv;
+  vv = ad9777_read_reg(0);
+  printf("ad9777 reg[0] = 0x%x\n", vv);
   
+  for (rr = 0x04; rr <= 0x0d; rr++){
+    vv = ad9510_read_reg(rr);
+    printf("ad9510 reg[0x%x] = 0x%x\n", rr, vv);
+  }
+#endif
+  
   return true;
 }
 
@@ -189,3 +198,4 @@
   asm volatile ("or r0, r0, r0");      // FIXME CPU bug workaround
   asm volatile ("or r0, r0, r0");
 }
+





reply via email to

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