微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > 关于CC1110无线通信的几个问题

关于CC1110无线通信的几个问题

时间:12-23 整理:3721RD 点击:

我们的系统用一个CC1110做主,一个CC1110做从。主模块不休眠,从模块每20秒唤醒一次。无线收发采用DMA方式。

1、当设置DMA的长度在80个字节内时(SET_WORD(pDmaChannel->LENH, pDmaChannel->LENL, 80); ),无线通讯比较稳定,从模块收到无线数据的时间都在20秒内。一旦设置DMA传输的字节数超过80个字节,不管是81还是127,从模块收到整包数据的时间就有可能超过20秒,有些甚至要30多秒才能收到。有时候无线传输甚至被堵塞了,收发全不行,必须重新配对才能恢复。这个仅仅修改收发缓冲的长度和设置DMA的长度就有这个差别,我们找不出原因所在。

2、当独测一组(一个主,一个从,DMA长度在80字节以内),比较稳定。但是几组1起上的时候,比如8组,总有个1组或2组出现发送失败的问题,且每隔20秒重发3次都失败。多组一起工作的时候互相之间是否可能会有干扰?如何规避?

3、模块有时会收到一些不在我们协议里的数据,如:0x24,0x12,0x8e,0x1b,0xc0,0xd4,0xc7,0x22,0x73,0x4f,0xdb,0x4f,0xf1,0xe2,0xb4,0x91,0xfb,0x1a,0xb8,0xa3,0x23。我们如果没有发数据给模块,主从模块间是否有数据的传输?有哪些原因会产生这些杂乱数据?

以上几个问题,都是我们难以理解或解决的,请各位专家指点。

谢谢

对于问题二,八组肯定是有互相的干扰的,因为大家都在同一个频段通信,解决办法有两个:第一设置发送方为侦听模式,比如信道繁忙,让发送方先不发送,等待一段时间且不繁忙再发送。第二种方法就是让这八组主从设备在不同的频段下通信。比如第一组在433.0M,第二组在433.2M.....以此类推。

对于问题三,会出现这些乱码是不应该的。请问是在一个纯净的无线环境中测试的吗?

谢谢指点。第二个方法我去研究一下。这个问题的关键是每隔25秒重发3次都失败,测了很多次,只要第1次失败,后面发送的都不成功,如果能重发成功也不是大问题。

问题三的测试环境是在很多对模块的环境下测试的,这个会有影响吗

是的,很明显存在信道冲突问题,而且发送失败次数也是随机的,而且是八组一起,冲突更容易,发送不成功的概率更高

如果在很多模块同时发数据的环境下,那你指定的那个模块去接收,很可能接收别的模块传来的数据,你有增加地址过滤功能吗?

十分感谢Eggsy这么迅速的回答, 我们这个模块已经用在了几万台设备上, 但是还是有上面的这些问题需要解决, 以提高稳定性和性能.

1. 8组每组的CHANNR按随机分配的(0-7), 因此会有相同的情况, 这个跟你上面提到的433, 433.2是同一个概念吗

2. 有设地址过滤, PKTCTRL1非0, 发送接收都有在RADIO_TX_STRUCT, RADIO_RX_STRUCT指定源地址和目的地址, 但同一室内有16组模块在工作.

3. 工作在433MHz, datarate=250K, transceive filter bandwidth有没有问题?

// VERSION == 0x03
// 250 kBaud, GFSK modulation, 540 kHz RX filter bandwidth.
// Freq. dependent value: 433 MHz band vs 868/915 MHz band:
FSCTRL1 = 0x0c;//0x12; // Frequency synthesizer control.
FSCTRL0 = 0x00; // Frequency synthesizer control.
MDMCFG4 = 0x2D; // Modem configuration.
MDMCFG3 = 0x3B; // Modem configuration.
MDMCFG2 = 0x13;//0x93; // Modem configuration.
MDMCFG1 = 0x22; // Modem configuration.


MDMCFG0 = 0xF8; // Modem configuration.
DEVIATN = 0x62; // Modem deviation setting (when FSK modulation is enabled).
MCSM0 = 0x18;//0x08;//0x18; // Main Radio Control State Machine configuration.
FOCCFG = 0x1D; // Frequency Offset Compensation Configuration.
BSCFG = 0x1C; // Bit synchronization Configuration.
AGCCTRL2 = 0xC7; // AGC control.
AGCCTRL1 = 0x00; // AGC control.
AGCCTRL0 = 0xB0; //B0 // AGC control.
FREND1 = 0xb6;//0x00; // Front end RX configuration.
FREND0 = 0x10; // Front end RX configuration.

FSCAL3 = 0xEA; // Frequency synthesizer calibration.
FSCAL2 = 0x2a;//0x0A;
FSCAL1 = 0x00;

//FSCAL1 = 0x00;
FSCAL0 = 0x1F; // Frequency synthesizer calibration.
TEST2 = 0x88; // Various test settings.
TEST1 = 0x31; // Various test settings.
TEST0 = 0x09; // Various test settings.
//2012-10-06
//PKTCTRL0 &= ~CRC_EN;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top