急求解CC1101信道干扰问题
小弟在测试基于CC1101在434频段的系统,测试发现6信道的传感器节点收发数据时,2信道的节点会产生中断(中断led闪烁),测试时只开启了6信道和2信道的节点,6信道节点是组成的无线网络,2信道只开启节点。通过频谱分析仪测试信道频率都设置正确,我的频率寄存器配置为:#define SMARTRF_SETTING_FREQ2 0x10 #define SMARTRF_SETTING_FREQ1 0xB1#define SMARTRF_SETTING_FREQ0 0x3B,信道间隔为199.9K。目前需要大规模组网,这个问题会严重干扰我们的进度,希望各位前辈能帮助给些意见,不甚感激!
听起来很奇怪,不太可能。 你用TI的参考板试试。把 TI 参考板用SmartRF 连接,设置到你的6信道,所有设置都要跟你的相同,看会不会收到包。可以预见的是肯定不会的。所以要么是射频设置有哪里出错了,要么是你的中断产生机制有问题。
另外请问大规模组网是什么应用?
非常抱歉,目前暂没有TI参考板,射频设置是严格按照Smart RF配置的,除了选择CCA、GDO0、数据包长度用手动配置的以外。大规模组网是项目需求,由于特殊性,不能详解,非常抱歉。这也是我自己疑惑的,信道之间相差几百K,每当6信道协调器开启,2信道的节点就会产生中断,导致2信道通信量大增,严重影响网络通信。
一下是我的寄存器配置,今天还检测发现偶数信道间,如8、6、4对2信道都有干扰,抓包发现数据还能被接收,实在困惑不已
#define SMARTRF_SETTING_FSCTRL1 0x08////0x06
#define SMARTRF_SETTING_FSCTRL0 0x00
#define SMARTRF_SETTING_MDMCFG4 0xC8 // channel filter bandwidth ChanBW = 26M / (8 * (4 + Chanbw_M) * 2^Chanbw_E) = 101.5k
#define SMARTRF_SETTING_MDMCFG3 0x93 // Drate = (256 + Drate_M) * 2^Drate_E / 2^28 * 26M = 9.99k
#define SMARTRF_SETTING_DEVIATN 0x34 // frequency deviation = 26M * (8 + DEVIATION_M) * 2^DEVIATION_E / 2^17 = 19k
#define SMARTRF_SETTING_MDMCFG2 0x93//0x13
#define SMARTRF_SETTING_MDMCFG1 0x22
#define SMARTRF_SETTING_MDMCFG0 0xF8
#define SMARTRF_SETTING_CHANNR 0x00
#define SMARTRF_SETTING_FREND1 0x56 //
#define SMARTRF_SETTING_FREND0 0x10
#define SMARTRF_SETTING_MCSM1 0x3c
#define SMARTRF_SETTING_MCSM0 0x18
#define SMARTRF_SETTING_FOCCFG 0x16//0x36
#define SMARTRF_SETTING_BSCFG 0x6C
#define SMARTRF_SETTING_AGCCTRL2 0x43
#define SMARTRF_SETTING_AGCCTRL1 0x40
#define SMARTRF_SETTING_AGCCTRL0 0x91
#define SMARTRF_SETTING_FSCAL3 0xE9
#define SMARTRF_SETTING_FSCAL2 0x2A
#define SMARTRF_SETTING_FSCAL1 0x00//0x02
#define SMARTRF_SETTING_FSCAL0 0x1F
#define SMARTRF_SETTING_FSTEST 0x59
#define SMARTRF_SETTING_TEST2 0x81// 0x88
#define SMARTRF_SETTING_TEST1 0x35//0x31
#define SMARTRF_SETTING_TEST0 0x09//0x0B
#define SMARTRF_SETTING_FIFOTHR 0x07//
#define SMARTRF_SETTING_IOCFG2 0x29
#define SMARTRF_SETTING_IOCFG0D 0x06
#define SMARTRF_SETTING_PKTCTRL1 0x04
#define SMARTRF_SETTING_PKTCTRL0 0x05
#define SMARTRF_SETTING_ADDR 0x00
#define SMARTRF_SETTING_PKTLEN 0xFF
尊敬的TI team:
目前还检测出诡异的问题,奇数信道节点会互相窜扰,偶数信道同样也会,但奇数信道和偶数信道则不会互相窜扰。希望能得到宝贵的意见,非常感谢!
Songxu,
您好!
为了便于我们更快的帮您解决问题,能偶提供一个能够复现您问题的demo project给我们,您可以把跟您应用相关的都删掉,越简单越好。我们会在您的project的基础上做测试并尽快给您回复。 谢谢!
Shelford Zhu,
您好!
首先,非常感谢您的帮助。由于我们是在自助开发的协议栈下使用的CC1101,由于我权限有限,不能直接将项目的代码复现给你,实在抱歉。但目前我能提供CC1101寄存器配置部分,我们的CC1101驱动参考SimpliciTI-IAR在STM32上实现的,SPI操作以及数据包收发都与SimpliciTI-IAR一样。前期,我们采用的是250K数据率的配置,测试暂未发现信道互窜问题,后期为了增大通信距离,采用SmartRF 7配置了10K速率的驱动,但后面组网测试发现了信道互串的问题。我的10K速率CC1101寄存器配置为:
#define SMARTRF_SETTING_FSCTRL1 0x08////0x06
#define SMARTRF_SETTING_FSCTRL0 0x00
#define SMARTRF_SETTING_MDMCFG4 0xC8 // channel filter bandwidth ChanBW = 26M / (8 * (4 + Chanbw_M) * 2^Chanbw_E) = 101.5k
#define SMARTRF_SETTING_MDMCFG3 0x93 // Drate = (256 + Drate_M) * 2^Drate_E / 2^28 * 26M = 9.99k
#define SMARTRF_SETTING_DEVIATN 0x34 // frequency deviation = 26M * (8 + DEVIATION_M) * 2^DEVIATION_E / 2^17 = 19k
#define SMARTRF_SETTING_MDMCFG2 0x93//0x13
#define SMARTRF_SETTING_MDMCFG1 0x22
#define SMARTRF_SETTING_MDMCFG0 0xF8
#define SMARTRF_SETTING_CHANNR 0x00
#define SMARTRF_SETTING_FREND1 0x56 //
#define SMARTRF_SETTING_FREND0 0x10
#define SMARTRF_SETTING_MCSM1 0x3c
#define SMARTRF_SETTING_MCSM0 0x18
#define SMARTRF_SETTING_FOCCFG 0x16//0x36
#define SMARTRF_SETTING_BSCFG 0x6C
#define SMARTRF_SETTING_AGCCTRL2 0x43
#define SMARTRF_SETTING_AGCCTRL1 0x40
#define SMARTRF_SETTING_AGCCTRL0 0x91
#define SMARTRF_SETTING_FSCAL3 0xE9
#define SMARTRF_SETTING_FSCAL2 0x2A
#define SMARTRF_SETTING_FSCAL1 0x00//0x02
#define SMARTRF_SETTING_FSCAL0 0x1F
#define SMARTRF_SETTING_FSTEST 0x59
#define SMARTRF_SETTING_TEST2 0x81// 0x88
#define SMARTRF_SETTING_TEST1 0x35//0x31
#define SMARTRF_SETTING_TEST0 0x09//0x0B
#define SMARTRF_SETTING_FIFOTHR 0x07//
#define SMARTRF_SETTING_IOCFG2 0x29
#define SMARTRF_SETTING_IOCFG0D 0x06
#define SMARTRF_SETTING_PKTCTRL1 0x04
#define SMARTRF_SETTING_PKTCTRL0 0x05
#define SMARTRF_SETTING_ADDR 0x00
#define SMARTRF_SETTING_PKTLEN 0xFF
还可以用 Packet Sniffer 抓包看看。