[Top][All Lists]
[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 */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r7466 - usrp2/trunk/firmware/lib,
eb <=