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:Rx 与启用的曼彻斯特解码不一致

Guru**** 2543750 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/930845/cc1101-rx-inconsistent-with-manchester-decoding-enabled

器件型号:CC1101

总结:
我正在尝试使用 CC1101接收来自多家制造商的各种不同发送器传输的数据。 我无法控制正在传输的数据。 传输的数据不包含前导码、但包含2字节同步字。 使用下面的射频设置、我将定期接收有效/完整的数据包、但在大多数情况下、接收到的数据包是无效的。 出于测试目的、我使用器件传输上述数据(FFFEAABBCCDD7FD0)。


高级射频设置:
频率:345MHz
数据速率:7.518kbaud
ASK/OOK
曼彻斯特编码
靠近接待处


正在传输的数据:
0xFF 0xFE 0xAA 0xBB 0xCC 0xDD 0x7F 0xD0


SmartRF 设置(RX 不一致):

#define SmartRF_setting_IOCFG2 0x0B
#define SmartRF_setting_IOCFG1 0x2E
#define SmartRF_setting_IOCFG0 0x06
#define SmartRF_setting_FIFOTHR 0x67 //设计手册 DN022

#define SmartRF_setting_SYNC1 0xFF
#define SmartRF_setting_SYNC0 0xFE

#define SmartRF_setting_PKTLEN 0x06
#define SmartRF_setting_PKTCTRL1 0x00
#define SmartRF_setting_PKTCTRL0 0x00

#define SmartRF_setting_ADDR 0x00
#define SmartRF_setting_CHANNR 0x00
#define SmartRF_setting_FSCTRL1 0x06
#define SmartRF_setting_FSCTRL0 0x00

#define SmartRF_setting_FREQ2 0x0D
#define SmartRF_setting_FREQ1 0x44
#define SmartRF_setting_FREQ0 0xEC

#define SmartRF_setting_MDMCFG4 0x88 //似乎最接近#define
SmartRF_setting_MDMCFG3 0x2E //时序似乎小于0x2F

#define SmartRF_setting_MDMCFG2 0x3A
#define SmartRF_setting_MDMCFG1 0x02
#define SmartRF_setting_MDMCFG0 0xf8

#define SmartRF_setting_DEVIATN 0x34 //在 OOK/ASK
#define SmartRF_setting_MCSM2中对 TX 或 RX 没有影响 0x07
#define SmartRF_setting_MCSM1 0x30
#define SmartRF_setting_MCSM0 0x18
#define SmartRF_setting_FOCCFG 0x16
#define SmartRF_setting_BSCFG 0x6C

#define SmartRF_setting_AGCCTRL2 0x07 //设计手册 DN022,应介于0x03和0x07
#define SmartRF_setting_AGCCTRL1之间 0x00 //设计手册 DN022,请勿更改
#define SmartRF_setting_AGCCTRL0 0x91 //设计说明 DN022,应介于0x91和0x92

#define SmartRF_setting_WOREVT1之间 0x87
#define SmartRF_setting_WOREVT0 0x6B
#define SmartRF_setting_WORCTRL 0xFB
#define SmartRF_setting_FREND1 0x56 //设计手册 DN022,请勿更改
#define SmartRF_setting_FREND0 0x11 //到 PA 的 TX LO 缓冲器输入、要使用的 PA 索引(对 OOK/ASK 使用1)

#define SmartRF_setting_FSCAL3 0xE9
#define SmartRF_setting_FSCAL2 0x2A
#define SmartRF_setting_FSCAL1 0x00
#define SmartRF_setting_FSCAL0 0x1f

#define SmartRF_setting_RCCTRL1 0x41
#define SmartRF_setting_RCCTRL0 0x00
#define SmartRF_setting_FSTEST 0x59 //不要写入该寄存器
#define SmartRF_setting_ptest 0x7f
#define SmartRF_setting_AGCTEST 0x3F //不要写入该寄存
器#define SmartRF_setting_TEST2 0x81 //设计手册 DN022
#define SmartRF_setting_TEST1 0x35 //设计手册 DN022
#define SmartRF_setting_TEST0 0x09 


我创建了一个测试程序、用于打印数据包信息和 CC1101 RXFIFO 的内容

dataSize = 6
FBFFFFF9FFFF

dataSize = 6
接收到有效数据包:AABBCCDD7FD0

dataSize = 6
7B977AA10F7D

dataSize = 6
AA886645005F

dataSize = 6
FFF7FFFFC7FF

dataSize = 6
AA886645005F


我尝试禁用曼彻斯特解码、将 SmartRF_setting_MDMCFG3更改为0x2D、将数据包长度加倍、并将同步字更改为0x55 0x56 (0xFE 曼彻斯特编码)。 通过这些更改、我成功且始终如一地接收到预期(曼彻斯特)编码数据:6665655A5A59599559AA。 启用曼彻斯特解码时、是否有人可以告诉我上述设置可能有什么问题? 发送器件是否仅发送 FFFE 同步字? 是否有一个可独立打开/关闭前导码和同步字的类似收发器?

提前感谢您。

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

    CC1101在数据包模式下需要4字节前导码才能接收具有良好性能的数据包。 由于您没有前导码、我怀疑接收链中的循环尚未稳定。 对于这种类型的协议、异步模式很可能是最佳选择。 (请参阅数据表中的"异步和同步串行操作"一章)  

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

    非常感谢您的回复。  

    我认为、在异步模式下使用 CC1101将需要 MCU 处理所有采样、前导码/同步字检测以及解码。 基本上、除了可能发生的硬件变化之外、还将收发器用作常规接收器、而不具有"智能"功能。 是这样吗?

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

    是的、异步模式需要 MCU 来处理大多数数据流处理、在此模式下不提供"智能功能"。 CC1101和更新的器件旨在处理"现代"数据包格式。 为了能够在没有前置/同步的情况下处理旧协议、通常需要异步。 此外、芯片通常需要一些位来查找 OOK 的"切片器"电平(什么是"1"和"0")