Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
W
wr2rf-vme
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
5
Issues
5
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
wr2rf-vme
Commits
bba7f5d8
Commit
bba7f5d8
authored
Mar 31, 2021
by
John Robert Gill
Browse files
Options
Browse Files
Download
Plain Diff
merge of v0.5 branch into master_ioupdate
parents
8d7dbe0c
efefdba4
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
74 additions
and
51 deletions
+74
-51
Makefile
software/libwr2rf/Makefile
+4
-4
ad9910_init.c
software/libwr2rf/ad9910_init.c
+9
-5
board.c
software/libwr2rf/board.c
+3
-3
init.c
software/libwr2rf/init.c
+51
-4
api.h
software/libwr2rf/libwr2rf/api.h
+4
-1
board.h
software/libwr2rf/libwr2rf/board.h
+1
-1
wr2rf.c
software/libwr2rf/wr2rf.c
+2
-33
No files found.
software/libwr2rf/Makefile
View file @
bba7f5d8
...
...
@@ -14,13 +14,13 @@ all: libwr2rf.a wr2rf spi_echo
%.o
:
%.c
$(CC)
$(CFLAGS)
-MMD
-c
$<
-o
$@
libwr2rf.a
:
$(OBJS_LIB)
$(AR)
rcv
$@
$
(OBJS_LIB)
libwr2rf.a
:
$(OBJS_LIB)
$(OBJS_HOST)
$(AR)
rcv
$@
$
^
spi_echo
:
$(OBJS_HOST)
spi_echo.o libwr2rf.a
spi_echo
:
spi_echo.o libwr2rf.a
$(CC)
-o
$@
$^
$(LDFLAGS)
wr2rf
:
wr2rf.o libwr2rf.a
$(OBJS_HOST)
wr2rf
:
wr2rf.o libwr2rf.a
$(CC)
-o
$@
$^
$(LDFLAGS)
clean
:
...
...
software/libwr2rf/ad9910_init.c
View file @
bba7f5d8
...
...
@@ -34,7 +34,8 @@ static struct ad9910_config_reg ad9910_default_config[] = {
#define AD9910_REG_CFR2 1
#define AD9910_DEFAULT_CFR2 0x400820
static
void
ad9910_probe
(
struct
libwr2rf_dev
*
dev
)
static
int
ad9910_probe
(
struct
libwr2rf_dev
*
dev
)
{
libwr2rf_dds_write
(
dev
,
0
,
0x0
,
32
);
// unidir mode for SDIO
libwr2rf_dds_write
(
dev
,
0
,
0x02000002
,
32
);
// unidir mode for SDIO
...
...
@@ -47,9 +48,10 @@ static void ad9910_probe(struct libwr2rf_dev *dev)
printf
(
"AD9910: 0x%x (expected 0x%x)
\n
"
,
id
,
AD9910_DEFAULT_CFR2
);
if
(
id
!=
AD9910_DEFAULT_CFR2
)
{
printf
(
"DDS not found
\n
"
);
exit
(
1
)
;
printf
(
"
AD9910: Error:
DDS not found
\n
"
);
return
-
1
;
}
return
0
;
}
static
uint64_t
ad9910_frequency_to_ftw
(
uint64_t
freq_hz
)
...
...
@@ -105,11 +107,12 @@ void libwr2rf_dds_configure_sync(struct libwr2rf_dev *dev, int sync_receiver_ena
libwr2rf_dds_ioupdate
(
dev
);
}
void
int
libwr2rf_dds_init
(
struct
libwr2rf_dev
*
dev
,
unsigned
io_update
)
{
/* Probe. */
ad9910_probe
(
dev
);
if
(
ad9910_probe
(
dev
)
!=
0
)
return
-
1
;
/* Configure sync. */
/* TODO. */
...
...
@@ -119,6 +122,7 @@ libwr2rf_dds_init(struct libwr2rf_dev *dev, unsigned io_update)
uint64_t
ftw
=
ad9910_frequency_to_ftw
(
223500000ULL
);
ad9910_program
(
dev
,
ftw
,
0
,
0x0
,
io_update
);
return
0
;
}
void
...
...
software/libwr2rf/board.c
View file @
bba7f5d8
...
...
@@ -567,9 +567,9 @@ int libwr2rf_vtu_output_enable(struct libwr2rf_dev *dev, unsigned id,
v
=
libwr2rf_read16
(
dev
,
csr_addr
);
if
(
en
)
v
|=
WR2RF_INIT_RF_CH_REGS_CH_CSR_DELAY_OEN
;
else
v
&=
~
WR2RF_INIT_RF_CH_REGS_CH_CSR_DELAY_OEN
;
else
v
|=
WR2RF_INIT_RF_CH_REGS_CH_CSR_DELAY_OEN
;
libwr2rf_write16
(
dev
,
csr_addr
,
v
);
return
0
;
...
...
@@ -888,7 +888,7 @@ libwr2rf_configure_tmgclk(struct libwr2rf_dev *dev, unsigned lemo, unsigned oe,
return
0
;
}
int
int
libwr2rf_configure_lemo_debug
(
struct
libwr2rf_dev
*
dev
,
unsigned
lemo
,
unsigned
dbg
)
{
unsigned
baddr
=
WR2RF_VME_REGS_INIT
;
...
...
software/libwr2rf/init.c
View file @
bba7f5d8
...
...
@@ -2,6 +2,7 @@
#include <stdio.h>
#include <unistd.h>
#include "libwr2rf/board.h"
#include "libwr2rf/api.h"
#include "wr2rf_rfnco_regs.h"
#include "regs.h"
...
...
@@ -163,16 +164,18 @@ libwr2rf_nco_wrcfg (struct libwr2rf_dev *dev, unsigned ch)
return
0
;
}
static
void
static
int
libwr2rf_rf_init_dds
(
struct
libwr2rf_dev
*
dev
)
{
/* 3. DDS (ad9910). */
//libwr2rf_dds_spi_init(dev);
libwr2rf_dds_reset_pulse
(
dev
);
libwr2rf_dds_init
(
dev
,
1
);
if
(
libwr2rf_dds_init
(
dev
,
1
)
!=
0
)
return
-
1
;
usleep
(
1000
);
libwr2rf_dds_sync_calibrate
(
dev
,
0
);
return
0
;
}
static
void
...
...
@@ -206,12 +209,56 @@ libwr2rf_rf_init_rfnco (struct libwr2rf_dev *dev)
libwr2rf_nco_wrcfg
(
dev
,
2
);
}
void
int
libwr2rf_rf_init
(
struct
libwr2rf_dev
*
dev
)
{
libwr2rf_rf_init_dds
(
dev
);
if
(
libwr2rf_rf_init_dds
(
dev
)
!=
0
)
return
-
1
;
libwr2rf_rf_init_dac
(
dev
);
libwr2rf_rf_init_rfnco
(
dev
);
return
0
;
}
int
libwr2rf_api_init
(
struct
libwr2rf_dev
*
dev
)
{
/* Command iodelay-init */
libwr2rf_iodelay_init
(
dev
);
/* Command dac-iqsetpoint */
libwr2rf_dac_iqsetpoint
(
dev
,
1
,
0x4000
,
0
);
libwr2rf_dac_iqsetpoint
(
dev
,
2
,
0x4000
,
0
);
/* Commands:
dds-init (TODO: io_update)
dds-sync-cal
dac-init
dac-timing
dac-iqctrl
nco-source
nco-wrcfg
*/
if
(
libwr2rf_rf_init
(
dev
)
!=
0
)
return
-
1
;
/* Configure RF outputs.
Command set-rfout
*/
libwr2rf_set_rf_out
(
dev
,
1
,
LIBWR2RF_RF_OUT_MIXER
);
libwr2rf_set_rf_out
(
dev
,
2
,
LIBWR2RF_RF_OUT_MIXER
);
/* Command wrs-fixedlat */
libwr2rf_set_wrs_fixed_latency
(
dev
,
1000
);
/* Command wrs-tolat */
libwr2rf_set_wrs_timeout_latency
(
dev
,
2000
);
/* Command nco-reset-delay */
libwr2rf_vtu_nco_reset_delay
(
dev
,
1
,
75
,
9
);
libwr2rf_vtu_nco_reset_delay
(
dev
,
2
,
75
,
0
);
return
0
;
}
void
...
...
software/libwr2rf/libwr2rf/api.h
View file @
bba7f5d8
...
...
@@ -66,7 +66,10 @@ int libwr2rf_nco_reset(struct libwr2rf_dev *dev, unsigned ch, unsigned en);
int
libwr2rf_set_rf_out
(
struct
libwr2rf_dev
*
dev
,
unsigned
ch
,
unsigned
cfg
);
/* Initialize RF (DDS and DAC). */
void
libwr2rf_rf_init
(
struct
libwr2rf_dev
*
dev
);
int
libwr2rf_rf_init
(
struct
libwr2rf_dev
*
dev
);
/* Post WR full initialization. */
int
libwr2rf_api_init
(
struct
libwr2rf_dev
*
dev
);
/* tmg-io connector. */
//#define LIBWR2RF_TMGIO_OUT_RFSYNC 0 /* For channels 1 & 2 */
...
...
software/libwr2rf/libwr2rf/board.h
View file @
bba7f5d8
...
...
@@ -10,7 +10,7 @@ void libwr2rf_pll_write(struct libwr2rf_dev *dev, unsigned reg, uint8_t value);
/* For the dds (ad9910). */
void
libwr2rf_dds_spi_init
(
struct
libwr2rf_dev
*
dev
);
/* Note: common to dds and dac. */
void
libwr2rf_dds_init
(
struct
libwr2rf_dev
*
dev
,
unsigned
io_update
);
/* In ad9910_init.c */
int
libwr2rf_dds_init
(
struct
libwr2rf_dev
*
dev
,
unsigned
io_update
);
/* In ad9910_init.c */
void
libwr2rf_dds_reset
(
struct
libwr2rf_dev
*
dev
,
unsigned
reset
);
void
libwr2rf_dds_reset_pulse
(
struct
libwr2rf_dev
*
dev
);
void
libwr2rf_dds_configure_sync
(
struct
libwr2rf_dev
*
dev
,
int
sync_receiver_enable
,
...
...
software/libwr2rf/wr2rf.c
View file @
bba7f5d8
...
...
@@ -3039,39 +3039,8 @@ api_init (struct libwr2rf_dev *dev, int argc, char **argv)
sleep
(
1
);
}
/* Command iodelay-init */
libwr2rf_iodelay_init
(
dev
);
/* Command dac-iqsetpoint */
libwr2rf_dac_iqsetpoint
(
dev
,
1
,
0x4000
,
0
);
libwr2rf_dac_iqsetpoint
(
dev
,
2
,
0x4000
,
0
);
/* Commands:
dds-init (TODO: io_update)
dds-sync-cal
dac-init
dac-timing
dac-iqctrl
nco-source
nco-wrcfg
*/
libwr2rf_rf_init
(
dev
);
/* Configure RF outputs.
Command set-rfout
*/
libwr2rf_set_rf_out
(
dev
,
1
,
LIBWR2RF_RF_OUT_MIXER
);
libwr2rf_set_rf_out
(
dev
,
2
,
LIBWR2RF_RF_OUT_MIXER
);
/* Command wrs-fixedlat */
libwr2rf_set_wrs_fixed_latency
(
dev
,
1000
);
/* Command wrs-tolat */
libwr2rf_set_wrs_timeout_latency
(
dev
,
2000
);
/* Command nco-reset-delay */
libwr2rf_vtu_nco_reset_delay
(
dev
,
1
,
75
,
9
);
libwr2rf_vtu_nco_reset_delay
(
dev
,
2
,
75
,
0
);
if
(
libwr2rf_api_init
(
dev
)
!=
0
)
printf
(
"ERROR
\n
"
);
}
static
void
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment