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**** 2539050 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/1107952/cc1101-different-packet-format

器件型号:CC1101

您好!

是否可以使用 CC1101从 另一个具有不同数据包格式的发送器件接收数据包?

我有一些器件在433.301Mhz、2-FSK、250Kbs 和93.75Khz 偏移上传输

我想在我的产品中使用 CC1101。  

数据包长度为15字节。

前导码为0x55、0x55、0x55、0x55

Sync 字为0x54、0x21、0xA4、0x23

以下7个字节是数据有效载荷。

无论我到目前为止尝试的 SmartRF Studio 中的设置是什么、都不会接收到任何数据。

如果没有内置的数据包处理程序的帮助、我很乐意接收原始的15个字节、但没有找到这样做的方法。

我们非常感谢您提供任何指导。

我的背景是 MCU 不是射频、因此、如果以上 内容看起来很愚蠢、我深表歉意。 此外、由于我在这一领域感到非常不满意、因此我们也希望得到详细的回答。

谢谢

Alan

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

    你好、Alan

    我在使用 SmartRF Studio 测试 CC1101的地方进行了测试。 我将频率编程为433.301、将数据速率编程为250kbps (2-FSK)。

    不确定 93.75kHz 偏移的含义(这是哪个偏移?)

    CC1101只有两个同步寄存器、因此对于4字节同步字、只需重复2个字节。 这意味着它不能查找  0x54、0x21、0xA4、0x23作为同步。

    您需要做的是将对讲机配置为2字节同步字并将同步字设置为0x54、0x21

    当您有这样一个短同步字时、您将会有很多错误同步检测、为了避免这种情况、您可以使用地址过滤并将地址设置为0xA4 (同步字中的第3个字节)。 然后、在开始接收 RX FIFO 中的数据之前、同步字中4个字节中的3个字节必须匹配。

    在接收7个有效载荷字节之前、FIFO 中将包含地址(0xA4)和0x23。 这意味着您需要使用固定数据包长度模式并将数据包长度设置为9。

    在测试时、我仍然收到一些假数据包、因此我启用了同步字的载波侦听(CS)门控(MDMCFG2.SYNC_MODE = 6)。 使用此功能时、您需要确保您对合理的 CS 阈值进行编程、因为您不会检测到 RSSI 低于此阈值的同步字。 我尚未在下面的设置中对此进行优化。

    您最后需要做的是禁用 CRC。

    设置如下:

    // Address Config = No address check 
    // Base Frequency = 433.300934 
    // CRC Autoflush = false 
    // CRC Enable = false 
    // Carrier Frequency = 433.300934 
    // Channel Number = 0 
    // Channel Spacing = 199.951172 
    // Data Format = Normal mode 
    // Data Rate = 249.939 
    // Deviation = 126.953125 
    // Device Address = a4 
    // Manchester Enable = false 
    // Modulated = true 
    // Modulation Format = 2-FSK 
    // PA Ramping = false 
    // Packet Length = 9 
    // Packet Length Mode = Fixed packet length mode. Length configured in PKTLEN register 
    // Preamble Count = 4 
    // RX Filter BW = 541.666667 
    // Sync Word Qualifier Mode = 16/16 + carrier-sense above threshold 
    // TX Power = 0 
    // Whitening = false 
    // PA table 
    #define PA_TABLE {0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
    
    static const registerSetting_t preferredSettings[]= 
    {
      {CC1101_IOCFG0,        0x06},
      {CC1101_SYNC1,         0x54},
      {CC1101_SYNC0,         0x21},
      {CC1101_PKTLEN,        0x09},
      {CC1101_PKTCTRL0,      0x00},
      {CC1101_ADDR,          0xA4},
      {CC1101_FSCTRL1,       0x12},
      {CC1101_FREQ2,         0x10},
      {CC1101_FREQ1,         0xAA},
      {CC1101_FREQ0,         0x59},
      {CC1101_MDMCFG4,       0x2D},
      {CC1101_MDMCFG3,       0x3B},
      {CC1101_MDMCFG2,       0x86},
      {CC1101_DEVIATN,       0x62},
      {CC1101_MCSM0,         0x18},
      {CC1101_FOCCFG,        0x1D},
      {CC1101_BSCFG,         0x1C},
      {CC1101_AGCCTRL2,      0xC7},
      {CC1101_AGCCTRL1,      0x00},
      {CC1101_AGCCTRL0,      0xB0},
      {CC1101_WORCTRL,       0xFB},
      {CC1101_FREND1,        0xB6},
      {CC1101_FSCAL3,        0xEA},
      {CC1101_FSCAL2,        0x2A},
      {CC1101_FSCAL1,        0x00},
      {CC1101_FSCAL0,        0x1F},
      {CC1101_TEST0,         0x09},
      {CC1101_RSSI,          0x80},
      {CC1101_MARCSTATE,     0x01},
      {CC1101_VCO_VC_DAC,    0x94},
    };


    Siri

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

    您好、Siri、

    感谢您的详细答复。 我将需要通过此方法使用我的发送器对其进行测试。 我将告诉您结果。 我想发送器制造商在提到93.75Khx 偏移时所说的是偏差。

    Alan

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

    好的。 然后尝试将 DEVIATN 寄存器设置为0x57。 这将为您提供95.21 KHz 的偏差

    BR

    Siri

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

    您好、Siri、

    发送器前导码字节为0x55而不是0xAA 是否无关紧要?

    请提供建议

    谢谢

    Alan

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

    不需要,CC1101只需要.... 1010110.....即可实现位同步和 AGC 稳定。

    Siri

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

    Siri、

    感谢您的观看。 当发送器发送数据包时、接收器硬件未将 GDO0置为有效。 这表示我没有检测到同步字、有某种原因。 我必须深入挖掘、以了解正在发生的情况。

    Alan

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

    您是否制作了自己的硬件或是否使用 CC1101 EM 进行了测试? 如果您已经制作了自己的电路板、我想您需要验证电路板的射频性能是否正常。  

    如果您有一个 EM、我会先让它工作。 在这里、您知道硬件良好、您可以集中精力正确配置器件。

    如果您没有可用的 EM、则应检查定制板上的频率、以确保发送器和接收器之间没有太大的偏移。  

    您还可以尝试禁用同步字的 CS 门控、以防错误的参考设计为您提供的接收信号与编程的阈值相比太弱。

    祝您调试顺利。

    BR

    Siri

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

    Siri、

    很抱歉耽误你的回答。 我已经离开了几天。

    我有自己的硬件。 我已经使用类似的发送器对其进行了测试、该发送器的工作频率稍有不同、并且数据包格式稍有不同。 我似乎接收到这些数据包是正常的。 我将尝试禁用 CS 门控、看看这对我有什么作用。 如果失败、我将提供几个 EM 并与他们一起使用。

    谢谢

    Alan

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

    您好、Siri、

    "在 FIFO 中、您将拥有地址(0xA4)和0x23、然后再接收7个有效载荷字节。 这意味着您需要使用固定数据包长度模式并将数据包长度设置为9。"

    查看数据包格式、我们有4字节前导码、2字节同步字、1字节长度字段、1字节地址字段+数据+可选 CRC。

    如果是同步字0x54、0x21、0xa4、0x23、那么我是否不必使用长度可变的数据包将 PKTLEN 设置为0xa4 (或默认值0xff)、地址设置为0x23?

    请提供建议

    谢谢

    Alan

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

    我意识到我在上一封电子邮件中犯了一个错误、因此请允许我再次解释  

    数据包长度为15字节。

    前导码为0x55、0x55、0x55、0x55

    Sync 字为0x54、0x21、0xA4、0x23

    以下7个字节是数据有效载荷。

    0x55 0x55 0x55 0x55 0x54 0x21 0xA4 0x23 Data1 Data2 Data3 Data4 Data5 Data6 Data7  

    我假设数据(有效载荷)不包含任何长度信息、因为您没有提到它、因此您必须使用固定数据包长度模式

    您只能搜索2个字节的同步、因为 CC1101只有2个寄存器用于对同步字进行编程。

    理论上、您可以选择以下任一选项

    SYNC1  SYNC0

    0x55     0x54

    0x54    0x21

    0x21    0xA4

    0xA4    0x23

    由于一个2字节同步字将提供一些错误的同步命中、我还建议使用地址过滤

    SYNC1  SYNC0  ADDR

    0x55     0x54      0x21

    0x54    0x21      0xA4

    0x21    0xA4     0x23

    即使上述所有组合都可以正常工作、使用最后一个组合(0x21、0xA4、0x23)也是很有意义的、因为这样您就不会在 RX FIFO 中获得同步字的一部分。

    使用0x21A4作为同步字、使用0x23作为地址、意味着您应该使用固定数据包长度模式并将数据包长度设置为8。

    您将在 RX FIFO 中获得0x23 (地址)、然后是7个数据字节。

    序言               同步      RX FIFO

    0x55 0x55 0x55 0x55 0x54 0x21 0xA4 0x23 Data1 Data2 Data3 Data4 Data5 Data6 Data7  

    我不明白为什么您认为要在您知道数据包的长度并且数据包不包含长度信息(或者是否?)时使用可变数据包长度

    如果使用可变数据包长度、同步后接收到的第一个字节将被解释为长度。 将0x21A4作为 SYNC、0x23将是长度、当有效载荷仅为7字节时、您不希望接收0x23字节的数据。 将同步字更改为0xA423将使 Data1被解释为长度、如果这小于7、您甚至不会接收到完整的数据包。

    BR

    Siri

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

    您好、Siri、

    非常感谢您的详细回答。 这确实帮助我更好地理解了数据包处理。

    我现在能够在我的硬件上接收数据包。 但是、我遇到了很多错误数据包。 我已经将寄存器设置为地址检查、16/16同步字检测+载波检测高于阈值。 这已经取得了一些改进。

    我不确定如何设置 AGC 以及可能需要帮助这种情况的任何其他设置。 我已经查找了应用手册、但找不到任何内容。 您是否能够让我知道我需要查看和 设置的内容、以便我可以消除大多数错误数据包。 然后、我应该全部进行排序和解决。

    谢谢

    Alan

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

    很抱歉耽误你的回答。 我不是射频工程师、因此我不知道需要调整哪些寄存器来改善这一点。 也不确定是否可能、因为问题是由于短同步字、因此没有什么可做的。

    我将会看到我是否能找到具有射频专业知识评论的人。

    BR

    Siri

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

    您好、Siri、

    像您一样、我也不是射频工程师。

    以便对 SYNC 进行错误检测
    不太可能出现的字、这是一种被调用的机制
    可以使用前导码质量指示(PQI)
    来限定同步字。 的阈值
    中必须超过前导码质量
    接受检测到的同步字的顺序。
    更多细节请见17.2节。

    载波侦听可用作同步字
    要求信号电平为的信号电平
    高于同步字的阈值
    要执行的搜索并通过设置进行设置
    MDMCFG2。

    我已经尝试调整 pqi 和载波侦听相对设置。

    这些都有了很大的改进。

    但是、我想知道我是否走对了道路、是否获得了有关该主题的足够知识、以便在有教育意义的情况下决定使用什么价值观。

    我想看到一个与您之前在数据包处理方面提供的内容类似的回复、但与所需的射频设置有关。

    谢谢

    Alan

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

    你好、Alan

    首先、我已经与射频团队的某个人交谈过、没有 AGC 寄存器或其他任何建议您进行调整以尝试克服这一问题的东西。

    正确的是、同步字的 PQT 门控可以提供帮助。 没有想到这一点。 我将尝试解释它的工作原理。

    对于您接收到的与前一位不同的每个位、计数器将递增1、并且以相同的方式、每当两个位相等时、计数器将递减8。 当 该计数器处于或高于 PQT 阈值(4*PQT)并且只要计数器高于阈值、该信号就会保持高电平。 当低于阈值时、它仍然保持高电平、以增加等于同步字长度的位数、在您的情况下为16位。

    必须将 PQT_REPEDTED 置为有效才能接受同步字。

    下面显示了两个示例以及您的数据包。 我假设计数器从0开始(不知道同步字之前的数据是什么)。

    假定 PQT 设置为7、因此阈值为28

    如果对讲机能够正确解调所有前导码位、则 PQT_REPEDn 将从同步字之前的最后1.5个字节生效、并用于完整的同步字。 在这种情况下、将接受同步字。

    在第二种情况下、不接收前导码的第一个位(无线电需要一些时间进行位同步等)、并且 PQT_REPEed 比第一个情况晚4位被置为有效。 由于这个 PQT_REPEDn 后来被置为有效、当你在0x54中得到0时、计数器的值较低、并且在达到完整阈值之前、PQT_REPEDn 被置为无效、因此不接受同步字。

    从这些示例中、我希望您了解门控的工作原理。 使用此功能将减少错误同步检测、但设置过于严格也会导致实际数据包丢失。

    BR

    Siri

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

    Siri、

    感谢您的回答。 我仍然不清楚如何根据您所说的内容在 PKTCTRL1中选择正确的阈值(7:5)。 '该计数器的阈值为4∙PQT 用于门同步字检测。' 您如何确定将 PQT 设置为7 (阈值= 28)? 我在数据表中找不到这方面的任何解释。

    PQT = 7是这3位的最大值吗? 这是否不会被视为过于严格?

    此外,载波侦听设置在改进同步字检测方面是否没有任何作用?

    请提供建议

    谢谢

    Alan

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

    我并不是要告诉您应该将 PQT 设置为7。 我只是为您提供了一个示例、以说明该功能的工作原理(正如您所要求的那样)。

    如果您查看数据表、您将看到 PQT 为3位、这意味着它可以取0到7的值、其中0表示无门控。

    阈值始终为4*PQT,这意味着它可以取0、4、8、12、...的值。 28.

    您可以使用您的设置进行测试、以查看是否可以同时找到一个值来限制错误同步检测、因为您不会丢失要接收的同步字。

    CS 还会在同步检测中发挥作用、我在6月9日的电子邮件中提到了这一点。

    Siri

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

    Siri、

    感谢您的反馈。 我将通过实验完成 PQT 设置。 CS 也是如此。

    我非常感谢您的所有努力和帮助。

    Alan