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.

[参考译文] CC1101:原始数据位

Guru**** 2541090 points
Other Parts Discussed in Thread: CC1101

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/853308/cc1101-raw-data-bits

器件型号:CC1101

大家好、

我对 CC1101非常陌生、有大约2周的经验。 我最初购买它是为了完成一个特定的项目、在这两周内、我已经取得了很大进展。

我的项目是获得 Arduino (实际上是 Tensy)来与某些 TPMS 外部阀传感器进行通信。 它们不会用作 TPMS 传感器、但传感器本身完全符合我的目的。 我将传感器作为套件(带有接收器)使用 SDR 软件狗来解码数据。 下一步是从传感器读取数据,这正是 CC1101的用武之地。

传感器发送433.920Mhz FSK 曼彻斯特编码数据、该数据本质上是一个7字节前导码(10 10 10 10 10等)、一个同步字和9字节数据。 这是在曼彻斯特解码之后。 遗憾的是,由于传感器不发送曼彻斯特编码的前导码,CC1101无法处理,因此我不得不读取未编码的数据并在软件中解码曼彻斯特解码。

上述操作已成功完成、我可以在 tensy 上读取数据包。

然后、我遇到了一个问题。 这在第一个传感器上都可以正常工作、但在 CC1101上我根本无法读取其他3个传感器。 我在 SmartRF 中播放设置几个小时、但无法从其他3个传感器获得任何信息、即使我可以在连续 RX (手持式)上看到它们 并在频谱分析仪上看到它们、从 SDR 读取它们、它们都发送相同的数据格式、它们附带的接收器可以将它们全部取回。

再玩几下后、我终于找到了原因。 第一个传感器以19.2k 的数据速率发送数据、但从其他3个传感器中、2个传感器以18.1k 的数据速率发送数据、第四个传感器以18.4k 的数据速率发送数据。 这些是便宜的传感器、因此我猜射频发送器或晶体的容差不是那么精确。 但是、即使数据速率略有不同、附带它的接收器也可以拾取全部4个向上的值。  

无论如何、我可以让 CC1101解调信号并将原始的1和0发送给我、我必须在软件中将其组合在一起。 我想我的意思是忽略数据速率和数据包处理、只提供二进制数据。 如果是、我如何将其连接到 Arduino 或 Tensy 等设备、并在 CC1101上进行设置? 或者、是否有方法可以通过 CC1101来实现这一点?

提前非常感谢您为我提供的任何帮助或建议。

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

    您可以为此尝试 异步串行操作(搜索数据表)

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

    谢谢你。

    我查看过异步模式、但有一些我不理解数据表没有涉及的内容。

    我确定需要将 PKTCTRL0设置为0x32、将 IOCFG0设置为0x0D 以启动异步模式(我正在使用 GDO0连接到我的 MCU)。

    现在、我假设设置的数据速率(19200)现在是 CC1101和 MCU 之间的异步波特率。

    我还假设异步是标准的、我可以将 GDO0连接到 MCU 上硬件 UART 上的 RX 引脚。 我期望 CC1101发送一个起始位、数据位和停止位。

    以上是我尝试过的、我通过 MCU 上的 UART 获取的数据、但没有什么看起来像我所期望的数据。

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

     异步模式的另一个名称是透明模式、这意味着 CC1101将输出偏差高于载波的信号为"1"、偏差低于载波的信号为"0"。 因此,如果您只是在空气中有噪声,则仍会从芯片中获得数据流。 您可以使用 CS 来解决此问题,这意味着只有在输入信号大于 CS 阈值时才会获得数据流。 然后,您必须使用 MCU 对数据流进行解码(查找已知模式以指示传输开始)  

     异步模式不是一个自动无线到 UART 选项。  

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

    非常感谢你的帮助。 我今天成功地让它工作了。 它仍然需要一些微调、但我获得了有效数据。 我还需要对 CS 进行实验。

    我假设在使用异步模式时、寄存器中的数据速率设置会被忽略?

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

    如果您在数据表 中的异步 模式下查看、您将看到您设置的芯片所使用的数据速率在 CC1101中内部设置过采样率、因此最好将其设置为您希望数据流为或更高的数据速率。  

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

    好的、现在已经完全正常工作了。 我必须使用 CS 载波传感来滤除不必要的噪声、但它现在可以接收到我需要的所有内容。

    我还使用标准数据包处理来实现它。 我决定前后阅读数据表、尽可能多地了解数据表。 我发现有一个名为 BSCFG 的寄存器。 这是数据速率偏差百分比。 通过将我的数据速率更改为18.6k 并将 BS_LIMIT 设置为2、它现在可以接收我的所有传感器。

    这是一段很好的旅程、我学到了很多关于 CC1101及其功能的知识。 还有很多需要学习的东西、但我已经走了很长的路。