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.

[参考译文] CC1101DK868-915:CC1000与 CC1101/CC1111通信问题

Guru**** 2563960 points
Other Parts Discussed in Thread: CC1101, CC1000

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/668776/cc1101dk868-915-cc1000-vs-cc1101-cc1111-communication-issue

器件型号:CC1101DK868-915


您好!

我们有一个 CC1101器件、我们希望与基于 CC1000的旧产品通信、但在尝试使其通信时遇到困难。

CC1101与 CC1101以及 CC1000与 CC1000正常工作。

还尝试使用具有相同关键参数设置的数据包监听器在 CC1111上接收数据、但只能接收来自 CC1101的数据。

链接的关键参数为:

===

868.706MHz 基频
通道0
数据速率38.4kBaud
通道间隔为200kHz
偏差32kHz
RX 滤波器带宽设置为200kHz
2字节同步字0xcb50
4字节前导码
检测到16/16位同步字
FSK-2调制
无 FEC
不美白
曼彻斯特编码

===

远程 CC1000器件在启动时使用以下寄存器设置。

主00:11
FREQ_2A:bf
FREQ_1A:60
FREQ_0A:00
FREQ_2B:58
FREQ_1B:3D
FREQ_0B:B9.
FSEP1:01
FSEP0:AB
电流:8C
前端:32

PA_POW:80
PLL:68
锁定:13.
CAL (校准):26
MODEM2:C1
MODEM1:69
MODEM0:54
匹配:10
FSCTRL:01
预分频器:00
TEST4:3F

是否有人可以评论这些设置是否有任何问题? 如果需要其他信息、请告知我们。

在本论坛的上一个较旧的主题 (标题:"CC1000和 CC1101之间的通信错误")中、讨论了 CC1000上的偏差与频率间隔、但我们尝试将偏差设置为 CC1000频率间隔的一半、但没有成功。

作为参考、我要附加 CC1101的 SmartRF Studio 寄存器设置以及在尝试监听从 CC1111发送的数据包时与 CC1111一起使用的监听器 PRS 文件。

此致、
Mattias

e2e.ti.com/.../config-files.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CC1101设置看起来正常。 不确定 CC1000设置、因为我不知道晶振频率。

    建议您在设置链接之前单独测试 CC1101和 CC1000。 使用频谱分析仪解调传输的信号。 符号速率是否为38.4ksps? 偏差(=间隔/2)是否为32kHz? 您的 CC1000设置建议了不同的偏差。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sverre、您好!

    感谢你的帮助。 我们目前没有任何光谱分析仪、但似乎我们确实需要一个、以便更详细地了解正在发生的情况。 我们非常感谢您在这方面提供的任何帮助或指导。

    晶振频率为14.745600 MHz 内部(+/- 20ppm)。 根据我对寄存器设置的计算、这似乎应该达到64kHz 频率间隔、除非我缺少一些东西。 这也是该器件的规范、该器件是我们尝试与之通信的现有传统产品。

    TX REFDIV = 6
    FSEP = 0x1AB = 427

    频率= 147456000/6 = 2.457MHz
    Fsep = 2457600 * 427 / 16384 => 64.050 kHz

    至于速率,我假设射频上的符号速率实际上是曼彻斯特编码引起的波特率的两倍,但编码在硬件中是透明的,因此从主机端来说,速率应该是 CC1111/CC1101右侧的38400?  还在 CC1111侧尝试了76.8波特率、结果没有任何差异。  

    当 CC1000配置为波特率时、似乎19.2、38.4、76.8都共用相同的寄存器设置、该设置映射了配置的 MODEM0寄存器值0X54。 我是否需要检查其他设置以验证此设置?

    MODEM0[6:4] AUDRATE[2:0]  

    (笑声)
    101:19.2、38.4和76.8kBaud
    110:未使用
    111:未使用

    我们已经尝试在 CC1101/CC1111侧执行大量操作来禁用前导码检查和 syncword 检查、以检测某项内容(尽管未正确解码)、但仍然无法每4秒发现一次 ping 帧。  

    Brgds

    Mattias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用的符号速率为38.4ksps (也称为 kBaud)。 由于采用 MC 编码、这对应于19.2kbps 的比特率。

    对于 CC1000、MC 编码为"0"表示低电平到高电平的转换、"1"表示高电平到低电平的转换。 遗憾的是、我不记得如何在 CC1101上执行 MC 编码、但如果它与 CC1000相反、则需要不同的设置(如果是这种情况、我可以提供帮助)。 简单检查:使用 Studio 并将 CC1101设置为0x55作为同步字、数据包长度足够长、能够捕获同步字和(至少部分)数据有效载荷。 由于0x55是本测试中的同步字、因此该字将出现在传输前导码内的不同位位置、但您应该能够在 TX FIFO 中找到真正的传输同步字(您可能需要进行一些位移...)。

    为了排除频率误差作为根本原因、您可以增加 CC1101 RX 滤波器带宽。 如果这样做、还需要增加寄存器 FSCTRL1中的 IF 滤波器。 例如、对于此测试、将其设置为0x12。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CC1101曼彻斯特: e2e.ti.com/.../295777
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Sverre、

    事实证明、由于通道设置为高侧 LO、远程 CC1000主机在 DIO 上传输反相数据。 这实际上将曼彻斯特编码比特流更改为 IEEE 变体、而不是 CC11xx 能够解码的 G.E Thomas 变体。 因此、当曼彻斯特编码被启用时、CC11xx 不能在前导码、syncword 或解析可变长度字段上正确同步。  

    通过设置 CC11xx 以禁用曼彻斯特编码、固定长度的数据包并将 synctword 设置为前导码的 IEEE 编码变体、我现在始终能够每4秒接收一次 ping 帧。  非常感谢您为您提供有关此内容的指导!

    这种运行模式的缺点是、我们现在必须处理主机上的所有曼彻斯特解码/编码以及 CC11xx 芯片组中的其他数据包处理功能。   

    我尝试在 CC11xx 上找到配置曼彻斯特编码类型的选项、但无法这样做。 有办法吗? 基本上、当 CC1000使用高侧 LO 通道时、CC11xx 器件的建议配置选项是什么?

    此外、如其他线程中所述、CC1000/CC11xx 数据表中未提及曼彻斯特编码类型。 是否可以对其进行更新以尽量减少混乱? 此外、在使用高侧 LO 通道时提及潜在的 CC1000兼容性问题也可能很有用。

    Brgds
    Mattias

     

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

    更新:

    在进行了一些更多的配置调整之后,我也能够在曼彻斯特编码打开时通过使用反同步字0xCB50=>0x34AF 和固定长度选项来持续接收帧。 这允许硬件在帧上同步并触发帧中断。然后主机可以读取长度字节(反转)、接着进行汇编并将帧反转为其原始格式。 仍然想知道是否有任何方法可以避免使用曼彻斯特编码和高侧 LO 通道的 CC11xx 和远程 CC1000器件之间的上述兼容性权变措施。

    Brgds
    Mattias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉之前没有响应、但我们想到了一件事:在 CMD_PROP_RADIO_DIV_SETUP 中、您可以设置 formatConf.bBitVersal // 0 =正偏差为"1";1 =正偏差为"0"。 也许您可以使用它、这样您就不必执行反转 SW。