Retrieve data from USRP N210 device

旧巷老猫 提交于 2019-12-01 14:49:36

Answer from the USRP/GNU Radio mailing lists:

Dear Abs,

you've asked this question on discuss-gnuradio and already got two answers. In case you've missed those, and to avoid that people tell you what you already know:

Sylvain wrote that, due to a large number of factors contributing to what you see as digital amplitude, you will need to calibrate yourself, using exactly the system you want to use to measure power:

You mean you want the signal power as a dBm value ?

Just won't happen ... Too many things in the chain, you'd have to calibrate it for a specific freq / board / gain / temp / phase of the moon / ...

And I explained that if you have a mathematical representation of how your estimator works, you might be able to write a custom estimator block for both of your values of interest:

>

I assume you already have definite formulas that define the estimator for these two numbers. Unless you can directly "click together" that estimator in GRC, you will most likely have to implement it. In many cases, doing this in Python is rather easy (especially if you come from a python or matlab background), so I'd recommend reading at least the first 3 chapters of https://gnuradio.org/redmine/projects/gnuradio/wiki/Guided_Tutorials

If these answers didn't help you out, I think it would be wise to explain what these answers are lacking, instead of just re-posting the same question.

Best regards, Marcus

I suggest that you write a python application and stream raw UDP bytes from the USRP block. Simply add a UDP Sink block and connect it to the output of the UDH: USRP Source block. Select an appropriate port and stream to 127.0.0.1 (localhost)

Now in your python application open a listening UDP socket on the same port and receive the data. Each sample from the UDH: USRP Source is a complex pair of single prevision floats. This means 8 bytes per sample. The I float is first, followed by the Q float.

Note that the you need to pay special attention to the Payload Size field in the UDP Sink. Since you are streaming localhost, you can use a very large value here. I suggest you use something like 1024*8 here. This means that each packet will contain 1024 IQ Pairs.

I suggest you first connect a Signal Source and just pipe a sin() wave over the UDP socket into your Python or C application. This will allow you to verify that you are getting the float bytes correct. Make sure to check for glitches due to overflowing buffers. (this will be your biggest problem).

Please comment or update your post if you have further questions.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!