大家好、我正在尝试找到我从另一个发送器传输到的确切频率、RSSI 近似值高达+- 0.5 MHz、
但是、仅仅正确解码信号是不够的。 是否有任何价值来帮助我更准确地找到它、或以更高的容差范围进行解码?
谢谢你
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Javier、
CC1101中有一个寄存器、用于估算任何给定数据包的 TX 节点和 RX 节点之间的频率差(或误差)。
下面是我们的 SmartRF Studio 在线指南的快照。
下面是一个我们开发的函数、用于将此信息转换为赫兹。
/*为硬件选择正确的 XTAL 频率*/
#define SCALE_FREQ (float)((RF_XTAL)/65.536)
#define SCALE_FREQEST (无符号长整型)((RF_XTAL)/16.384)
/*********
*@fn radio_freq_error
*
*@通过两个补码编码来估算频率误差
以赫兹为单位的*数据到频率误差
*
*输入参数
*
*@param freq_reg_error -来自收发器的两个补码格式数据
*
*输出参数
*
*@返回 freq_error -表示的32位有符号整数值
以赫兹为单位的*频率误差
*
*
int radio_freq_error (void){
long freq_error_est;
unsigned char regState;
/*读取 marcstate 以检查频率误差估计值*/
trx8BitRegAccess (radio_read_access | radio_burg_access、FREQEST、regState、&1);
/*以 Hz 为单位计算频率误差*/
FREQ_ERROR_EST = regState;
/*传入数据为8位二进制补码格式,单独的“符号”*/
if (freq_error_est > 128){
FREQ_ERROR_EST = FREQ_ERROR_EST - 256;
}
/*以两个步骤将数据转换为赫兹格式,以避免整数过冲*/
FREQ_ERROR_EST = FREQ_ERROR_EST *(长) SCALE_FREQEST;
返回((int) freq_error_est);
}
希望这对您有所帮助。
此致、
/TA