Hi List,
I'm currently working on a standalone firmware app for USRP2. My goal is
to send a constant signal with the xcvr2450 dboard. I skipped the tuning
via firmware by doing this prior from a host using the simple_usrp c++
interface:
uhd::usrp::simple_usrp::sptr sdev = uhd::usrp::simple_usrp::make(args);
uhd::device::sptr dev = sdev->get_device();
sdev->set_tx_rate(rate);
sdev->set_tx_freq(freq);
sdev->set_tx_gain(gain);
===============
So back to the firmware. Assuming the tuning of the dboard is properly
done from host, I basically understood the way sending is done as follows:
1. Wait for the buffer pool to become idle:
while((buffer_pool_status->status & BPS_IDLE(DSP_TX_BUF_0)) == 0)
;
2. Copy the data which should be send to the DSP into the DSP tx-buffer:
uint32_t *p = buffer_ram(DSP_TX_BUF_0);
uint32_t sample = (32000 << 16) | 0; // for example
for (i = 0; i < BP_NLINE; i++) {
p[i] = sample;
}
3. Send the data to the DSP:
bp_send_from_buf(DSP_TX_BUF_0, PORT_DSP, 1, 0, BP_LAST_LINE);
4. Wait until transaction is done or an error occured
while((buffer_pool_status->status & (BPS_DONE(DSP_TX_BUF_0) |
BPS_ERROR(DSP_TX_BUF_0))) == 0)
;
5. Clear the status flags and redo the whole procedure
bp_clear_buf(DSP_TX_BUF_0);
// goto 1.
===============
Unfortunately this doesn't work for me like expected. I tried it in
several variations and listened with another usrp2 for a signal but
nothing happens. I think I understood something wrong and forgot
something but it's hard for me to see the problem.
So maybe you guys can help me out with that.
Thanks in advance!
Cheers,
Matthias
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio