Revision 1bef3487 host/lib/usrp/dboard/db_wbx_version3.cpp
| b/host/lib/usrp/dboard/db_wbx_version3.cpp | ||
|---|---|---|
| 114 | 114 |
int v3_tx_mod = ADF4350_PDBRF; |
| 115 | 115 |
|
| 116 | 116 |
//set the gpio directions and atr controls |
| 117 |
self_base->get_iface()->set_pin_ctrl(dboard_iface::UNIT_TX, v3_tx_mod|v3_iobits); |
|
| 118 |
self_base->get_iface()->set_pin_ctrl(dboard_iface::UNIT_RX, RXBB_PDB|ADF4350_PDBRF); |
|
| 119 |
self_base->get_iface()->set_gpio_ddr(dboard_iface::UNIT_TX, TX_PUP_5V|TX_PUP_3V|v3_tx_mod|v3_iobits); |
|
| 120 |
self_base->get_iface()->set_gpio_ddr(dboard_iface::UNIT_RX, RX_PUP_5V|RX_PUP_3V|ADF4350_CE|RXBB_PDB|ADF4350_PDBRF|RX_ATTN_MASK); |
|
| 121 |
|
|
| 122 |
//setup ATR for the mixer enables (always enabled to prevent phase slip between bursts) |
|
| 123 |
//set TX gain iobits to min gain (max attenuation) when RX_ONLY or IDLE to suppress LO leakage |
|
| 124 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, dboard_iface::ATR_REG_IDLE, v3_tx_mod, TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); |
|
| 125 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, dboard_iface::ATR_REG_RX_ONLY, v3_tx_mod, TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); |
|
| 126 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, dboard_iface::ATR_REG_TX_ONLY, v3_tx_mod, TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); |
|
| 127 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, dboard_iface::ATR_REG_FULL_DUPLEX, v3_tx_mod, TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); |
|
| 128 |
|
|
| 129 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, dboard_iface::ATR_REG_IDLE, RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); |
|
| 130 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, dboard_iface::ATR_REG_TX_ONLY, RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); |
|
| 131 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, dboard_iface::ATR_REG_RX_ONLY, RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); |
|
| 132 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, dboard_iface::ATR_REG_FULL_DUPLEX, RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); |
|
| 117 |
self_base->get_iface()->set_pin_ctrl(dboard_iface::UNIT_TX, \ |
|
| 118 |
v3_tx_mod|v3_iobits); |
|
| 119 |
self_base->get_iface()->set_pin_ctrl(dboard_iface::UNIT_RX, \ |
|
| 120 |
RXBB_PDB|ADF4350_PDBRF); |
|
| 121 |
self_base->get_iface()->set_gpio_ddr(dboard_iface::UNIT_TX, \ |
|
| 122 |
TX_PUP_5V|TX_PUP_3V|v3_tx_mod|v3_iobits); |
|
| 123 |
self_base->get_iface()->set_gpio_ddr(dboard_iface::UNIT_RX, \ |
|
| 124 |
RX_PUP_5V|RX_PUP_3V|ADF4350_CE|RXBB_PDB|ADF4350_PDBRF|RX_ATTN_MASK); |
|
| 125 |
|
|
| 126 |
//setup ATR for the mixer enables (always enabled to prevent phase |
|
| 127 |
//slip between bursts). set TX gain iobits to min gain (max attenuation) |
|
| 128 |
//when RX_ONLY or IDLE to suppress LO leakage |
|
| 129 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, \ |
|
| 130 |
dboard_iface::ATR_REG_IDLE, v3_tx_mod, \ |
|
| 131 |
TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); |
|
| 132 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, \ |
|
| 133 |
dboard_iface::ATR_REG_RX_ONLY, v3_tx_mod, \ |
|
| 134 |
TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); |
|
| 135 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, \ |
|
| 136 |
dboard_iface::ATR_REG_TX_ONLY, v3_tx_mod, \ |
|
| 137 |
TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); |
|
| 138 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, \ |
|
| 139 |
dboard_iface::ATR_REG_FULL_DUPLEX, v3_tx_mod, \ |
|
| 140 |
TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); |
|
| 141 |
|
|
| 142 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, \ |
|
| 143 |
dboard_iface::ATR_REG_IDLE, \ |
|
| 144 |
RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); |
|
| 145 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, \ |
|
| 146 |
dboard_iface::ATR_REG_TX_ONLY, \ |
|
| 147 |
RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); |
|
| 148 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, \ |
|
| 149 |
dboard_iface::ATR_REG_RX_ONLY, \ |
|
| 150 |
RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); |
|
| 151 |
self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, \ |
|
| 152 |
dboard_iface::ATR_REG_FULL_DUPLEX, \ |
|
| 153 |
RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); |
|
| 133 | 154 |
} |
| 134 | 155 |
|
| 135 | 156 |
wbx_base::wbx_version3::~wbx_version3(void){
|
Also available in: Unified diff