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:使用 CRC 过滤数据包

Guru**** 2338090 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/1503691/cc1101-packet-filtering-with-crc

部件号:CC1101

工具/软件:

嗨、我正在尝试配置 CC1101、因为它只接收成功的带有地址过滤的 CRC 数据包。 因此、在 PKT1L1寄存器处启用地址滤波后、我查看了 GDOx_CFG 表以将 GPIO 配置为成功的 CRC。   

GDIOx_CFG:

  • 7 (0x07) -  当接收到数据包且 CRC 正常时置为有效。 从 RX FIFO 读取第一个字节时使无效。

  • 15 (0x0F) -  CRC_OK。 最后一次 CRC 比较匹配。 进入/重新启动 RX 模式时清除

因此、每当接收到带有 CRC 的数据包并且 CC1101计算 CRC 并且与接收到的 CRC 匹配时、我的 GPIO 都会产生中断(每当数据包带有 CRC 权限时、它就不会置为有效? 它在计算 CRC 并且正常时置为有效。) 当我读了 fifo 它被清除。

只要 CC1101计算 CRC 并且与接收到的 CRC 匹配、0x0F 就会切换。 但直到重新启动 RX 才会清除。

我对此是否正确? 我不得不确认、因为我刚开始了解无线收发器组件的相关信息、并且设置不容易调试。

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

    您好:

    目前、一级专家已离职。 一旦他们返回,他们将回答你的问题。  

    谢谢、
    Alex F

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

    关于 interpretation.note、您是正确的、当 IOCFGx = 0x07时、当您开始读取 RX FIFO 的第一个字节时、该信号会立即置为无效。

    如果使用该信号而不是 IOCFGx = 0x06、则还需要启用 CRC 滤波(PKT11.CRC_AUTOFLUSH=1)

    如果 CRC 校验失败、CRC 自动刷新功能将清除整个 RX FIFO。 自动刷新 RX FIFO 后、下一个状态取决于 MCSM1.RXOFF_MODE 设置

    如果您不这样做、并且收到一个包含 CRC 错误的数据包、则数据包将留在 FIFO 中、MCU 不会获得中断。 在这种情况下、当您的下一个数据包发出时、FIFO 很可能会溢出。

    BR

    Siri

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

    这已经几天了、我能够使用 WOR 定期发送和接收数据。 对于我的项目、我有锚点和标记配置、我意识到可能使用了错误的方法、这就是我编写此消息的原因。

    在我的配置中、我每秒尝试发送和接收一次。 收到第一个数据并响应后、如果我将 Event0的 WOR 计时器周期设置为950mS 超时和%12.5占空比、如果数据真的每秒出现一次;我没有任何问题。 但当我尝试模拟标签 CC1101将不会在几个时期,然后回来的情况下,它失败。 在我看来,时间滑倒了。 现在、我不使用 Event1超时或 Event0超时中断执行任何操作。

    编辑:我现在明白了问题。 我使用基于 CRC-OK 的中断机制。 因此、我只在数据到达时接收到中断、然后处理数据、将 CC1101设置为 TX 并发送响应。 然后我重新设置 WOR、如果我以一种不会出现下一个数据的方式进行配置、它就会开始建立并丢失延迟的数据。 SWORRST 仅将 wor 计时器复位为 Event1、但实数周期为 Event0。 这意味着、一旦我使用了 WOR 功能并传输了响应、就必须配置新周期、同时牢记(0x07)在数据已经到来时发生中断、并且我还发送了响应、这意味着新周期需要小于之前、或者我必须使用 WOR_EVENT0中断(0x24)来计算该周期(我想、CC1101 AN047 Page5-6也提到了这一点?)。 因此、我每次都必须计算并动态配置它、或者我只需使用微控制器的计时器中断来唤醒、并将 CC1101设置为具有超时功能的接收模式、并使用另一个计时器为微控制器 CC1101超时进入睡眠状态。

    此时、使用 WOR 看起来像我要做的额外工作、因为微控制器必须在 Event0无论如何唤醒、这意味着电流消耗差异将过低。 希望我理解正确  

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

    通常、我或应用中、您将有一个发送器传输较长的前导码、然后接收器以比前导码长度快的速率唤醒、以确保它不会丢失同步字。 在这种情况下、时间是否稍微偏离一点无关紧要。

    您要做的是一个同步系统、其中接收器仅在发送数据包时处于 RX 状态。

    如果由于干扰等原因导致数据包丢失、此类协议很容易出现故障。发生这种情况时、您的固件需要实施某种重新同步算法。

    在不同时序参数之间的差异方式方面、WOR 模式有几个限制、在您的情况下、使用无线电的正常 RX 模式并从 MCU 控制完整的 RX 算法可能同样容易。

    Siri

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

    Siri、

    首先、感谢您的回答。 已经有一段时间了、我能够创建我们计划成功开发的网状网络。 我们有两种不同的 CC1101设计、在创建过程中、我遇到了几种情况、我想询问您的经验以确保我的学习流程。(比如更新和旧的设计)

    1)我使用了相同的设计(标签设计(较新的设计)作为标签和锚,在他们两个我使用了我们的 PCB 天线。 运行良好。

    2)我使用了(较新的设计)标签设计(较旧的设计)旧的锚设计,在 PCB 上有 SMA 连接器。 它具有不同的射频滤波器电路、因此我不得不在锚代码处继续尝试不同的 CC1101偏移配置、以创建正常工作的系统。 微调后,它真的工作真棒.

    3)我用标签设计作为标签和锚。 这次在锚板上、我更改了我们的0欧姆电阻器、使用 U.FL 天线、而不是 PCB 天线。 我没有更改任何寄存器配置、因为我认为滤波器电路仍然相同、我不应该不得不更改。  在尝试使用 U.FL 天线在2个板之间进行通信时、我甚至无法进行正确的设置。 性能惊人地崩溃。 我连接了 SCH 和 PCB 的滤波器部分、因此您可以看到 U.FL 和 PCB 天线之间不应有太大的性能差异。(此外、我使用 U.FL 到 SMA 适配器、并使用我在第二种场景中使用的相同天线、这种情况非常好。 我的 U.FL 到 SMA 适配器已通过其他项目的测试、因此我知道它们可以正常工作。)

    即使滤波器电路相同、我是否必须根据天线进行微调、或者我是否应该出于其他原因而寻找? 如果我必须这样做、将需要时间、因为我没有任何射频设备、所以需要时间来找到正确的配置。

    提前感谢您的帮助。