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.

[参考译文] 编译器/CC430F5137:如何检查 RSSI 值?

Guru**** 1830600 points
Other Parts Discussed in Thread: CC430F5137
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/864289/compiler-cc430f5137-how-to-check-rssi-value

器件型号:CC430F5137

工具/软件:TI C/C++编译器

您好!

我使用的是 CC430f5137 SoC。 我应用了文档中的一些逻辑来获取 RSSI 值。

请查看以下功能。

空 RSSI_Check (空)

IF (RSSIcheckFlg)

RSSIcheckFlg = 0;
RSSI_reg = RxBuffer[RSSI_IDX];
RSSI_onescomp = RSSI_reg ^0xFF;  
RSSI_onescomp =+RSSI_onescomp;  

IF (RSSI_reg >= 128)

RSSI_dBm =(long)((long)(RSSI_reg -256)/ 2)- 74;//RSSI_OFFSET;


其他

RSSI_dBm =(RSSI_reg /2)- 74;/RSSI_OFFSET;

当我使用接收到的标志进行检查时、它显示了一个高于65000的值、因此如何获得正确的 dBm 值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否增加了查阅以下 应用手册的机会? 我还建议您查看 此主题

    我希望这将有所帮助、

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    非常感谢。

    我已经查看了相关的注释和应用文档。

    我根据下面的函数修改了我的代码、我看到我的 RSSI 值变为负值、它显示了这个值。

    它在-160至-33之间变化。

    正确吗?

    空 RSSI_Check (空)

    IF (RSSIcheckFlg)

    RSSIcheckFlg = 0;
    //RSSI_reg = RxBuffer[RSSI_IDX];
    //RSSI_onescomp = RSSI_reg ^0xFF;//我认为这可以,RSSI_IDX
    //RSSI_onescomp =+RSSI_onescomp;//add 1 rxPosition - 1.

    RSSI_reg = ReadSingleReg (RXFIFO);

    IF (RSSI_reg >= 128)

    RSSI_reg =(int)((int)(RSSI_reg -256)/ 2)- 74;//RSSI_OFFSET;


    其他

    RSSI_reg =(RSSI_reg /2)- 74;//RSSI_OFFSET;

    RSSI_HB = RSSI_reg >> 8;

    RSSI_LB = RSSI_reg & 0xff;



    void pktRxHandler (void){
    unsigned char RxStatus;
    unsigned char bytesInFifo;

    //哪种状态?
    RxStatus =选通(RF_SNOP);

    开关(RxStatus 和 CC430_State_MASK)

    CC430_State_RX 案例:
    //如果 RX FIFO 中有任何内容....
    if (bytesInFifo = min (rxBytesLeft、RxStatus 和 CC430_FIFO_Bytes_Available 掩码))

    //更新要接收的剩余字节数
    rxBytesLeft-= bytesInFifo;

    //从 RX FIFO 读取数据并将数据存储在 rxBuffer 中
    while (bytesInFifo--){
    RxBuffer[rxPosition ]= ReadSingleReg (RXFIFO);  
    rxPosition++;

    if (!rxBytesLeft){
    LED_RX_ON
    电池组接收器= 1;
    FrameReceived = true;
    RSSIcheckFlg = 1;
    接收= 0;
    lengthByteRead = 0;
    ReceiveOff();
    DataRcvFlg =真;
    ReceiveOn();
    LED_RX_OFF


    中断;
    默认值:
    if (!packetReceived)(已接收)

    电池组接收器= 1;


    rxBytesLeft = 0;
    接收= 0;
    ReceiveOff();

    中断;

    }// pktRxHandler

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您的结果看起来很好!

    总是很乐意提供帮助。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    这是一个很好的帮助说明和讨论。

    其余的事情我有一些疑问、我的 RSSI 值继续滚动并不重要、它将是1米或50米。

    该值在任何距离上的稳定性。 就像您说的1m、它是70dBm 到80dbm。

    我只有这个问题。

    如果需要、我将向您提供任何代码详细信息。

    请回来。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们正在等待答复。

    请回来。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好  、(这里有兴趣的外部人员...)

    感受您的痛苦-不规则和/或不一致/意外的"RSSI"读数无法(不)建立信心。

    由于我的团队不使用您的设备-这些建议可能(完全)不适用。   (但在使用射频时通常有用)

    • 什么是"后台 RSSI 读数"-当您的远程设备处于"非活动状态"时?
    • 您可以通过比较(上面)"背景读数与活动读数"来受益。   (即、当您的遥控器正在传输时处于活动状态)  它是真正重要的"数字增量"(差值)。
    • 您是否有射频信号发生器-可将其设置为"已知(和稳定)射频输出?"   如果您的 RSSI 读数(仍然)证明不稳定、您的"RSSI 测量方法可能有故障。"
    • 您是否有第二个"CC430F5137"可用于进行实验?   同样的不稳定性是否会继续?
    • 您可以从~10米的"心包"中获益-清晰的"视线"-设备之间的分离。   与您的"标准"不同、会在混合中添加不需要的信号变量-通常会"询问"您的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    谢谢你。

    很抱歉后续操作。

    我只想提交我的项目、但如果没有 RSSI、则需要延迟。

    我想知道在4-5米距离处每隔70ms 发送一次数据后、RSSI 的确切值是多少。

    根据查询、请查看以下内容。

    1) 1) 我在本讨论结束后提供的背景读数。当遥控器处于非活动状态时、它将不会有任何值、我仅在 Rx 打开后才使用。

    2) 2)现在我没有信号发生器、你是否有其他方法。

    3)我已经检查 2-3板读数相同。

    我放置了一个缓冲器、每隔70ms 数据接收一次、RSSI 值到达2米的距离。

    我的发送器和接收器还有一件事是全双工模式。 不要混淆。

    缓冲器 无符号 int[50] RSSI 值 十进制数的二进制补码
    [0] unsigned int 0x0000 0
    [1] unsigned int 0xFF9E -98
    [2] unsigned int 0xFF9F -97
    [3] unsigned int 0xFF7E -130
    [4] unsigned int 0xFFD8 -40
    [5] unsigned int 0xFFB6 -74.
    [6] unsigned int 0xFFC8 -56.
    [7] unsigned int 0xFFA8. -88
    [8] unsigned int 0xFFBD -67
    [9] unsigned int 0xFFE8. -24岁
    [10] unsigned int 0xFFB9. -71.
    [11] unsigned int 0xFF94 -108.
    [12] unsigned int 0xFFB1 -79
    [13] unsigned int 0xFFDD -35.
    [14] unsigned int 0xFFF1 -15
    [15] unsigned int 0xFF93 -109.
    [16] unsigned int 0xFF77 -137.
    [17] unsigned int 0xFFAF -81.
    [18] unsigned int 0xFF93 -109.
    [19] unsigned int 0xFF91 -111.
    [20] unsigned int 0xFF7A -134.
    [21] unsigned int 0xFFAD -83.
    [22] unsigned int 0xFFAF -81.
    [23] unsigned int 0xFFEE -18.
    [24] unsigned int 0xFFA0 -96.

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、上一页、

    感谢您-您的数据列表和对问题的回答可能会对(我的团队)和供应商代理有帮助。   (拥有实际的设备经验/专业知识)

    我们可以问:"您的图表上的第一个列表"0"是如何获得的?"   (当远程设备未发射且接收设备正在"接收"时、怀疑这不是"背景和/或残余噪声信号电平读数"。)   读数"0"似乎不太可能(很高)-因此我们的问题。

    您的结果显示'RSSI Signal Range'为'-137 to -15'、据信为'过度和/或错误装载'。   我们注意到7个读数为-100或更多、5个读数为-40或更少(占24个读数总数的50%)。   在我所在集团(合理)的射频经验中-信号电平的差异引起了人们的关注。

    根据这些结果、您是否可以尝试:

    • 如果可能(仅用于我们的测试)、请从全双工切换到半双工
    • 并将传输之间的延迟增加10倍(即增加至700mS)  据信、70mS 可能无法为您的器件提供足够的时间来"设计"-影响读数。
    • 在这些条件下(两者都处于)、当您的遥控器正在(不)传输时、测量并报告 RSSI 值。   (我们搜索背景本底噪声级别)

    您是否在"仅一个"器件上进行"所有"此类测量?   (即不测量两个器件-仅测量一个)

    假设您的器件接受标准的"射频信号发生器"输出(减去任何唯一的器件"模型")、该输出仍然是确定接收器灵敏度的"经典"方法-以及"建议的射频传输链路或路径可能成功"。   减去信号发生器、您将受益于获取"更低成本"的射频检测器 IC 和/或适当的射频电压表-规格为在您的工作频率下工作。   在这种情况下、您可能需要合适的"带通滤波器"-能够大幅抑制"带外"噪声和信号-这将影响您的读数...

    还有-是否没有(部分)论坛-它更注重此类射频器件?   预计"其他设备用户"遇到了您的"确切问题"、他们的报告和调查结果是"确保为您的 RSSI (和通用设备)调查增加良好价值"。