Hi all, We have some problems when working on the MIMO implementation based on USRP1 and XCVR2450. With the default XCVR2450 driver and settings, the receiver cannot receive anything most of the time (sometimes it can). But when I comment out this line usrp()->_common_write_oe(C_RX, d_which, RX_OE_MASK, 0xffff); in xcvr2450::set_gpio(), the receiver can receive packets without any problem. However, this modification introduces another problem on the transmitter side. The transmitter can receive every packet it sends out, which is not what we want to see.
I checked the mailing lists and Eric said XCVR2450 does not support full duplex. So how come the radio can receive something while it’s transmitting? If I don’t touch set_gpio(), how can I fix the problem that the receiver cannot receive? BTW, the same source code works perfectly on RFX2400 daughterboards. Any help will be appreciated. void xcvr2450::set_gpio() { // We calculate four values: // // io_rx_while_rx: what to drive onto io_rx_* when receiving // io_rx_while_tx: what to drive onto io_rx_* when transmitting // io_tx_while_rx: what to drive onto io_tx_* when receiving // io_tx_while_tx: what to drive onto io_tx_* when transmitting // // B1-B7 is ignored as gain is set serially for now. int rx_hp, tx_antsel, rx_antsel, tx_pa_sel; if(d_rx_hp_pin) rx_hp = RX_HP; else rx_hp = 0; if(d_tx_ant) tx_antsel = ANTSEL_TX2_RX1; else tx_antsel = ANTSEL_TX1_RX2; if(d_rx_ant) rx_antsel = ANTSEL_TX2_RX1; else rx_antsel = ANTSEL_TX1_RX2; if(d_five_gig) tx_pa_sel = LB_PA_OFF; else tx_pa_sel = HB_PA_OFF; // Reset GPIO and ATR // FIXME: dont set io, oe, atr mask once basic code stops overriding our settings usrp()->common_write_io(C_TX, d_which, TX_SAFE_IO, TX_OE_MASK); usrp()->_common_write_oe(C_TX, d_which, TX_OE_MASK, 0xffff); usrp()->common_write_atr_txval(C_TX, d_which, tx_pa_sel|tx_antsel|TX_EN|AD9515DIV); usrp()->common_write_atr_rxval(C_TX, d_which, HB_PA_OFF|LB_PA_OFF|rx_antsel|AD9515DIV); usrp()->common_write_atr_mask(C_TX, d_which, TX_OE_MASK); usrp()->common_write_io(C_RX, d_which, RX_SAFE_IO, RX_OE_MASK); // This is the line I commented out // usrp()->_common_write_oe(C_RX, d_which, RX_OE_MASK, 0xffff); usrp()->common_write_atr_txval(C_RX, d_which, EN|rx_hp); usrp()->common_write_atr_rxval(C_RX, d_which, EN|rx_hp|RX_EN); usrp()->common_write_atr_mask(C_RX, d_which, RX_OE_MASK); } _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio