commit-gnuradio
[Top][All Lists]
Advanced

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

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


From: eb
Subject: [Commit-gnuradio] r7466 - usrp2/trunk/firmware/lib
Date: Fri, 18 Jan 2008 14:40:12 -0700 (MST)

Author: eb
Date: 2008-01-18 14:40:10 -0700 (Fri, 18 Jan 2008)
New Revision: 7466

Modified:
   usrp2/trunk/firmware/lib/ad9510.c
   usrp2/trunk/firmware/lib/ad9777.c
   usrp2/trunk/firmware/lib/lsdac.c
   usrp2/trunk/firmware/lib/memory_map.h
   usrp2/trunk/firmware/lib/spi.c
   usrp2/trunk/firmware/lib/spi.h
Log:
Changed last arg of spi_transact from inv_tx to flags that specifies
the relationship between sclk, mosi and miso.


Modified: usrp2/trunk/firmware/lib/ad9510.c
===================================================================
--- usrp2/trunk/firmware/lib/ad9510.c   2008-01-18 21:11:24 UTC (rev 7465)
+++ usrp2/trunk/firmware/lib/ad9510.c   2008-01-18 21:40:10 UTC (rev 7466)
@@ -24,7 +24,7 @@
 ad9510_write_reg(int regno, uint8_t value)
 {
   uint32_t v = ((regno & 0xff) << 8) | (value & 0xff);
-  spi_transact(SPI_TXONLY, SPI_SS_AD9510, v, 24, 0);
+  spi_transact(SPI_TXONLY, SPI_SS_AD9510, v, 24, SPIF_PUSH_FALL);
 }
 
 

Modified: usrp2/trunk/firmware/lib/ad9777.c
===================================================================
--- usrp2/trunk/firmware/lib/ad9777.c   2008-01-18 21:11:24 UTC (rev 7465)
+++ usrp2/trunk/firmware/lib/ad9777.c   2008-01-18 21:40:10 UTC (rev 7466)
@@ -32,12 +32,14 @@
 ad9777_write_reg(int regno, uint8_t value)
 {
   uint8_t instr = IB_WR | IB_XFER_1 | (regno & IB_ADDR_MASK);
-  spi_transact(SPI_TXONLY, SPI_SS_AD9777, (instr << 8) | (value & 0xff), 16, 
0);
+  spi_transact(SPI_TXONLY, SPI_SS_AD9777,
+              (instr << 8) | (value & 0xff), 16, SPIF_PUSH_FALL);
 }
 
 int
 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, 0);
+  return spi_transact(SPI_TXRX, SPI_SS_AD9777,
+                     (instr << 8) | 0, 16, SPIF_PUSH_FALL);
 }

Modified: usrp2/trunk/firmware/lib/lsdac.c
===================================================================
--- usrp2/trunk/firmware/lib/lsdac.c    2008-01-18 21:11:24 UTC (rev 7465)
+++ usrp2/trunk/firmware/lib/lsdac.c    2008-01-18 21:40:10 UTC (rev 7466)
@@ -39,13 +39,13 @@
 inline static void
 _write_rx(uint32_t v)
 {
-  spi_transact(SPI_TXONLY, SPI_SS_RX_DAC | SPI_SS_DEBUG, v, 24, 1);
+  spi_transact(SPI_TXONLY, SPI_SS_RX_DAC | SPI_SS_DEBUG, v, 24, 
SPIF_PUSH_RISE);
 }
 
 inline static void
 _write_tx(uint32_t v)
 {
-  spi_transact(SPI_TXONLY, SPI_SS_TX_DAC | SPI_SS_DEBUG, v, 24, 1);
+  spi_transact(SPI_TXONLY, SPI_SS_TX_DAC | SPI_SS_DEBUG, v, 24, 
SPIF_PUSH_RISE);
 }
 
 void 

Modified: usrp2/trunk/firmware/lib/memory_map.h
===================================================================
--- usrp2/trunk/firmware/lib/memory_map.h       2008-01-18 21:11:24 UTC (rev 
7465)
+++ usrp2/trunk/firmware/lib/memory_map.h       2008-01-18 21:40:10 UTC (rev 
7466)
@@ -90,11 +90,8 @@
 #define SPI_CTRL_TXNEG    (1<<10)
 #define SPI_CTRL_RXNEG    (1<< 9)
 #define SPI_CTRL_GO_BSY   (1<< 8)
-#define SPI_CTRL_CHAR_LEN 0x7F
+#define SPI_CTRL_CHAR_LEN_MASK 0x7F
 
-#define SPI_TXONLY 0
-#define SPI_TXRX  1
-
 ////////////////////////////////////////////////
 // I2C, Slave 3
 // See Wishbone I2C-Master Core Specification.

Modified: usrp2/trunk/firmware/lib/spi.c
===================================================================
--- usrp2/trunk/firmware/lib/spi.c      2008-01-18 21:11:24 UTC (rev 7465)
+++ usrp2/trunk/firmware/lib/spi.c      2008-01-18 21:40:10 UTC (rev 7466)
@@ -34,27 +34,23 @@
     ;
 }
 
-int
-spi_transact(int readback, int slave, int data, int length, int inv_tx) 
+uint32_t
+spi_transact(bool readback, int slave, uint32_t data, int length, uint32_t 
flags) 
 {
-  int flags;
+  flags &= (SPI_CTRL_TXNEG | SPI_CTRL_RXNEG);
+  int ctrl = SPI_CTRL_ASS | (SPI_CTRL_CHAR_LEN_MASK & length) | flags;
 
-  if(inv_tx)
-    flags = SPI_CTRL_ASS | (SPI_CTRL_CHAR_LEN & length);
-  else
-    flags = SPI_CTRL_ASS | (SPI_CTRL_CHAR_LEN & length) | SPI_CTRL_TXNEG;
-
   spi_wait();
 
-  // Tell it which SPI device to access
+  // Tell it which SPI slave device to access
   spi_regs->ss = slave & 0xff;
 
   // Data we will send
   spi_regs->txrx0 = data;
 
   // Run it -- write once and rewrite with GO set
-  spi_regs->ctrl = flags;
-  spi_regs->ctrl = flags | SPI_CTRL_GO_BSY;
+  spi_regs->ctrl = ctrl;
+  spi_regs->ctrl = ctrl | SPI_CTRL_GO_BSY;
 
   if(readback) {
     spi_wait();

Modified: usrp2/trunk/firmware/lib/spi.h
===================================================================
--- usrp2/trunk/firmware/lib/spi.h      2008-01-18 21:11:24 UTC (rev 7465)
+++ usrp2/trunk/firmware/lib/spi.h      2008-01-18 21:40:10 UTC (rev 7466)
@@ -16,6 +16,37 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#ifndef INCLUDED_SPI_H
+#define INCLUDED_SPI_H
+
+#include <memory_map.h>
+#include <bool.h>
+
+/*!
+ * \brief One time call to initialize SPI
+ */
 void spi_init(void);
+
+/*! 
+ * \brief Wait for last SPI transaction to complete.
+ * Unless you need to know it completed, it's not necessary to call this.
+ */
 void spi_wait(void);
-int spi_transact(int readback, int slave, int data, int length, int inv_tx);
+
+#define SPI_TXONLY false       // readback: no
+#define SPI_TXRX   true                // readback: yes
+
+/*
+ * Flags for spi_transact
+ */
+#define SPIF_PUSH_RISE   0             // push tx data on rising edge of SCLK
+#define SPIF_PUSH_FALL   SPI_CTRL_TXNEG        // push tx data on falling edge 
of SCLK
+#define SPIF_LATCH_RISE  0             // latch rx data on rising edge of SCLK
+#define SPIF_LATCH_FALL  SPI_CTRL_RXNEG        // latch rx data on falling 
edge of SCLK
+
+
+uint32_t
+spi_transact(bool readback, int slave, uint32_t data, int length, uint32_t 
flags);
+
+
+#endif /* INCLUDED_SPI_H */





reply via email to

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