discuss-gnuradio
[Top][All Lists]
Advanced

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

[Discuss-gnuradio] USRP in TDD mode


From: Andrey A
Subject: [Discuss-gnuradio] USRP in TDD mode
Date: Tue, 22 Sep 2009 21:47:10 +0400

Hello.
I'm trying to build a two-way TDD system with two USRP1 boxes in pure C++ using libusrp and inband_2rxhb_2tx.rbf firmware.

Now I have working system where one USRP1 box transmits data and other box receives.
I try to make the second box transmit data after it received certain frames. The issue is that when I try to enable transmitter on the second box the receive signal level significantly decreases. Typically received samples are in range [-15000; 15000], after enabling transmitter they are in range [-1000; 1000].

Does anyone have a clue of what I'm doing wrong?

Thanks.

The code I'm using:

        std::string rbf_fname = "inband_2rxhb_2tx.rbf";

        m_uTx = usrp_standard_tx::make(m_usrpNumber,
                       (unsigned int)m_interpolationRate,
                       1,
                       -1,
                       4096,
                       4096,
                       rbf_fname);

        if (!m_uTx.get())
        throw std::runtime_error("Couldn't create TX");

        usrp_subdev_spec tx_spec(0, 0);
        unsigned int tx_mux = m_uTx->determine_tx_mux_value(tx_spec);
        m_uTx->set_mux(tx_mux);
       
        db_base_sptr tx_subdev = m_uTx->selected_subdev(tx_spec);
       
        m_txGain = tx_subdev->gain_max();
        tx_subdev->set_gain(m_txGain);
       
        if (!m_uTx->tune(tx_subdev->which(), tx_subdev, g_tuneFrequency, &m_txTuneResult))
        throw std::runtime_error("TX tune failed\n");
       
        tx_subdev->set_enable(true);

        // Enable RX
        m_uRx = usrp_standard_rx::make(m_usrpNumber,
                       (unsigned int)m_decimationRate,
                       1,
                       -1,
                       usrp_standard_rx::FPGA_MODE_NORMAL,
                       4096,
                       4096,
                       rbf_fname);
       
        if (!m_uRx.get())
        throw std::runtime_error("Couldn't create RX");
       
        // Select dautherboard
        usrp_subdev_spec rx_spec(0, 0);

        unsigned int rx_mux = m_uRx->determine_rx_mux_value(rx_spec);
        m_uRx->set_mux(rx_mux);
        m_rxGain = 60.0;
       
        db_base_sptr rx_subdev = m_uRx->selected_subdev(rx_spec);
       
        rx_subdev->set_gain(m_rxGain);

        if(!m_uRx->tune(rx_subdev->which(), rx_subdev, g_tuneFrequency, &m_rxTuneResult))
        throw std::runtime_error("RX tune failed\n");
               
        rx_subdev->set_enable(true);

reply via email to

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