CC1101一对多通信 数据包误码率高的问题
现在我的项目应用中C1101需要一对多的通信方式,只有一个主节点,从节点数量大于50个。通信过程是这样的:由于从节点对功耗有严格要求,所以从节点平时处于sleep态,当10秒定时时间到,从节点被唤醒,给主节点发送心跳包。发完数据后立即转入RX状态等待100ms,如果没有接收到数据,再次进入SLEEP态。主节点处于RX态,只有接收到从节点数据后,如果需要回复数据给从节点,才会转入TX态。发完数据后,再次进入RX态。主节点和从节点发送都采用了TX-if-CCA的空闲信道检测机制,只有当信道空闲时,才发送数据包。若信道忙,则随机延时一个时间,然后再次发送(CCA数据防碰撞和退避机制按照 TI 的Simplici-TI中的代码来实现,并且测试过 CCA机制是有效的)。频段用的是433MHZ,数据速率10KBPS,寄存器的配置按照smart RF的参考值来配置的。目前在应用测试中发现如下问题:
(1)主节点有时会收不到从节点的数据包的情况(没有收到完整数据包或CRC校验错)
(2)某些从节点发送数据3000次,主节点接收到的数据包只有2500-2600次,包错误的比例远远大于1%。
(3)同一个节点在不同的时间段,包错误的比例也不一样,比如在某4个小时内,该节点发送3000次,主节点接收到2990次以上。在下一个4小时内,节点发送3000次,主节点只接收到2610次。(主节点,从节点的位置等都没有改变)。
(4)个别从节点的包错误率一直都比较高,远远大于10%。
在实际测试中也看到,从节点数据碰撞的几率并不高,比如,发送3000次数据包,只有20次左右发不出去。
请问:
(1)主节点收到的数据包CRC校验错误或收不到完整数据包 跟哪些因素有关?
(2)如何改善数据包的误码率?
(3) 数据包出错,误码率高 是否跟从节点数量太多,同频段信号互相干扰有关?
希望TI的工程师能对以上数据包误码率高的问题给出一些建议,可能在哪些方面需要加以改进,以及如何改善,谢谢!
组网协议都是比较复杂的,特别是需要省电的时候。我对你描述的机制有以下疑问和建议。
1. 这个从节点10秒醒来的定时如何保证精确度?你有时钟同步机制吗?
2. 主节点会在收到心跳包的情况下收不到数据包吗?
3. 你有没有做重传机制?
楼主是做什么应用啊?这样的应用TI有很多做模块的客户已经实现了比较稳定的通讯协议。
你好,我现在在研究cc1101多点对一问题,加个QQ,一起讨论一下吧。我的qq是975437585
感觉你可以:
1. 用一个接收机和一个发射机,在干净的环境,如屏蔽箱之类的,距离近一些,将发射机的发射间隔改为200ms,测试5000.看看通讯成功率有多少。
2. 把发射机上报数据的间隔拉长,比如50s之类的。看看成功率如何。
3. 尽量减少数据包长度,适当提高通讯速率,延长发射间隔,如果距离要求不远的话。