我一直在GNU Radio配套软件的Signal Source块中尝试消息传递。我可以从它的源代码中看到,我们可以传递消息来改变源的频率、幅度、偏移量和相位。例如,从消息选通发送的以下消息PMT可以将信号的幅度改变为0.5。
pmt.dict_add(pmt.make_dict(), pmt.intern("ampl"), pmt.from_double(0.5))
但当我查看UHD USRP Sink的代码时,我无法清楚地知道哪些命令可以发送到这个块,或者哪些参数可以更改。我在文件中的一些地方读到,USRP接收器的频率、增益、LO偏移、时间戳、中心频率和其他与收发器相关的设置可以通过命令消息进行操作。
哪些命令可以从消息选通(以pmt格式(发送到USRP Sink块,哪些参数(及其密钥(可以修改?
这是官方记录的:
https://www.gnuradio.org/doc/doxygen/page_uhd.html#uhd_command_syntax
命令名 | 值类型 | 描述 | |
---|---|---|---|
chan | int | 指定通道。如果未给出此选项,则根据操作选择所有通道或通道0。如果可能,值-1将强制"所有通道"> | |
增益 | double | 设置Tx或Rx增益(以dB为单位(。默认为所有通道 | |
power_dbm | 双 | 设置Tx或Rx功率参考电平(以dbm为单位(。默认为所有通道。仅适用于某些设备,并且仅当校准数据可用时 | |
频率 | double | 设置Tx或Rx频率。默认为所有通道。如果在没有lo_offset的情况下指定,则会将lo偏移设置为零||
lo_offset | double | 设置lo偏移。默认为所有通道。请注意,这不会影响有效中心频率 | |
tune | tune_request | 类似freq,但设置全调谐请求(即中心频率和DSP偏移(。默认为所有通道 | |
mtune | tune_quest_t类似tune,但支持完整的手动tune请求,如uhd::tune_request_t。默认为所有通道 | ||
lo_freq | 双 | 对于完全手动调谐:设置lo频率(RF频率(。与freq、lo_offset和tune冲突 | |
dsp_freq | 双 | 对于完全手动调谐:设置dsp频率(CORDIC频率(。与freq、lo_offset和tune冲突 | |
方向 | string | 用于定时收发器调谐,以确保保持调谐顺序。除"TX"或"RX"以外的值将被忽略 | |
速率 | double | 请参阅usrp_block::set_samp_rate((。始终影响所有通道||
带宽 | double | 请参阅usrp_block::set_bandwidth((。默认为所有通道||
时间 | timestamp | 设置命令时间。请参见usrp_block::set_command_time((。PMT_NIL的值将清除命令时间||
mboard | int | 指定mboard索引(如适用( | |
天线 | string | 请参阅usrp_block::set_antenna((。默认为所有通道 | |
gpio | gpio | PMT字典,包括gpio的库、属性、值和掩码。请参阅注释 |