主题中讨论的其他器件: CC1101
您好!
我仍在致力于优化 CC110L 接收器应用(请参阅 该线程)、但仍有一些未解决的问题。
摘要:我已设置 CC110L 以1kHz 数据速率接收曼彻斯特编码数据。 由于内置曼彻斯特解码无法可靠地用于这种旧数据格式(30%的数据包丢失)、因此我只需使用两倍的数据速率(2 lHz)和一个2字节的同步字0x55 0x56。
我期望4个字节曼彻斯特编码的有效载荷、因此我将 RX_LENGTH 设置为8个字节、这些字节在软件中解码为原始的4个字节。 我还附加了 RSSI 和 CRC 字节、因此我预计总共能在 RX _FIFO 中接收10字节的数据包。 处理后、将得到4字节有效载荷、外加一个字节的 RSSI (我还不使用 CRC 值)。这是成功接收有效载荷的一个示例:
0x01 0x53 0xA4 0xFF 0x53
有效载荷为0x01 53 A4 FF (按预期)、RSSI 值为0x53 (-32、5dB、~1米距离)
此设置可以正常工作、数据包丢失几乎为零、但有一点除外: 接收器还会拾取虚假数据包("重影数据包")、通常每分钟会拾取几个、但这可能会有很大差异。有时、10分钟后没有收到任何数据包、然后在10秒内就有3个或4个数据包到达。 我认为这只是接收器噪音、有时会被错误地识别为同步字、但我不确定-它的噪音相当不规则。
这是在过去2分钟内收到的:
0x60 0x94 0x91 0x07 0xB5
0x15 0x02 0x00 0x04 0xBD
0xA2 0x04 0x0C 0x00 0xB7
0xC0 0x05 0x3C 0xD4 0xBF
0x00 0x4C 0x0B 0x02 0xBD
0x44 0x10 0x00 0xC4 0xC0
RX 有效载荷字节基本上是噪声、而 RSSI 值低得多(大约-105dBm)。 每个伪数据包大约需要70毫秒的时间被接收和处理。 在此期间、无法接收到其他数据包、因此如果每分钟有3个伪数据包、接收器可能会"丢失"约0.2秒/分钟。 这意味着300个合法数据包中缺少1个数据包。 这不是戏剧性的,但仍然恼人,特别是因为我不知道这是否可能变得更糟在一个更嘈杂的环境。
我曾尝试修整 AGCCTRL2和 AGCCTRL1寄存器、尤其是增大 MAGN_TARGET 和 CARRITER_SENSE_ABS_THR 似乎有所改善、但低 dBm 电平的虚假数据包仍然可以解决。 所需的功能是设置一个 RSSI 阈值、低于该阈值则这些数据包会被忽略(例如0xD0或-98dBm 以下的所有内容)。 我还可以降低 LNA 和/或 DVGA 增益、 但我恐怕这样会缩小射频链路的整体范围。坦率地说、我不知道更改这些值会有什么其他影响、那么我很难通过这种方式获得最佳解决方案。
当我查看 CS 和 RX-SYNC (对于 GDO0、我将使用 RX-SYNC =配置0x06来表示数据包的到达、对于 GDO2、我将在硬件层面上注意到另外一件奇怪的事情、CS = 0x0E)。
当接收到合法数据包时、我看到载波侦听(黄色轨迹)和 RX-SYNC (蓝色轨迹):
但是、当接收到伪数据包时、我只看到 RX-SYNC、而没有载波侦听:
此数据表建议使用 CS 来评估是否接收到有效信号:
"5.18.3载波侦听(CS)
载波检测(CS)用作同步字限定符、并用于清零通道评估(请参阅第5.18.4节)。"
但这与我看到的情况相反:即使 CS 无效、仍能识别同步字、RX FIFO 中充满噪声。 我曾尝试在论坛和互联网上的此处查看更多信息以及如何使用这些 AGCCTRL 寄存器设置接收器阈值的示例、但找不到任何有用信息。 还不清楚 CC110L 接收器的 CS 和 RX-SYNC 的内部逻辑如何工作。
那么基本上这个问题就是:如何设置一个 RSSI 阈值、低于哪个数据包会被忽略? 数小时的试错没有带来解决方案(甚至更好的见解)、尽管这也是由这些虚假数据包的随机性造成的。 进行更改后、可能需要半个小时或更长时间才能确定是否有任何 更改。
再次感谢销售线索、
理查德