cc1101 CCA 空闲信道评估(Clear Channel Assessment,CCA)

来源:互联网 发布:羊绒裤 知乎 编辑:程序博客网 时间:2024/05/16 05:46
一、任务:在信道不空闲的时候,验证CC1100无线模块是否能在硬件上判      断信道忙,并阻碍芯片进入发送状态。该验证是为载波监听,冲突监测的信道复用方法做准备,验证其是否可行。
二、需进行的配置:
1、当用命令滤波来使芯片进入TX状态时,进入是否成功取决于CCA 
MODE的配置,CCA  MODE指示了那种情况可认为是信道空闲:

CCA  MODE    信道空闲的标准
00    总是空闲的
01    接受信号强度低于门限值
10    当前未接受报文
11    接受信号强度低于门限值且当前未接收报文

当满足信道空闲标准时,进入TX状态的命令滤波就是成功的,否则不成功。由于我们就是为了验证CCA是否有效,所以将其配置为00,即当接收信号强度高于门限值时,认为信道忙,且不能进入TX状态。
另外,CCA  MODE的配置包含在MCSM1寄存器中。
2、我们要判断CCA是否有效,就要在外部某引脚上检测电平状态,以判断信
是否空闲。
     因此我们对I0CFG2进行配置,让GDO2引脚输出CS(carrier sense)信号 ,当接收信号强度高于门限时,GDO2为高电平;当接收信号强度低于门限时,GDO2为低电平。
     最终IOCFG2=0x0E
3、我们要判断当信道不空闲时TX命令滤波是否成功,因此就要读状态机寄存
器获取当前状态,判断是否进入了TX状态。但是读当前状态的时机与校准方式有关。
例如,如果采用从IDLE进入TX或RX时校准,那么从IDLE进入TX不是
即时的,而是至少需要809us的时间,所以我们使用TX命令滤波之后,就至少要等待800us在进行判断才是正确的时机。
   校准方式的配置包含在MCSM0寄存器中。
4、当我们判断了当前芯片的状态之后,还要通过外部来了解当前状态。所以如果成功进入了TX状态,就让绿灯亮100ms;如果一直未进入TX状态,就让红灯亮100ms。
   
三、在考虑到上面的几点配置之后,就开始测试了。
   让一个无线模块连续的发送载波,因此可以保证无线信道一直是部空闲的。
让另外一个无线模块稍写自己编写的测试程序,来验证CCA是否有效。
1、首先根据王耒的建议将RXOFF_MODE和TXOFF_MODE 配置为0x10,就是让TX和RX结束后,芯片都保持在TX状态。
进行了上面的配置之后,发现CCA一直无效,即发现PIC的RB0引脚(与CC1100的GDO2引脚相连)一直为低电平。这就说明一直未探测到信道忙。
所以就又重新阅读了DATASHEET发现其中提到,只有当前处于TX状态,而且信道不空闲的时候,TX命令滤波才会不成功,这是才明白,如果当前为IDLE或TX状态时,CCA是无效的,而且都会成功进入TX状态。
2、将RXOFF_MODE和TXOFF_MODE 配置为0x11,就是让TX和RX结束后,芯片都保持在RX状态。
这个时候就发现CCA有效,RB0脚为高电平,即说明CCA有效。但是碰到了一个问题:
①如果信道忙时,TX命令滤波不成功,红灯一直亮;如果信道空闲,TX命令滤波刚开始成功一会-绿灯亮,然后又不成功-红灯亮。
②如果一开始信道忙,RB0为高,指示正确;若信道变为空闲,RB0变低,指示正确。
但是如果一开始信道空闲,RB0为低,指示正确;若信道变为不空闲,RB0不会变化,指示错误,只有重启才会变高。

因此怀疑程序卡到了哪个地方,导致TX不正常,又想到可能是没有清TX_FIFO,导致其溢出。在程序里边加上清TX_FIFO后,程序正常。CCA可以有效的指示信道是否空闲,而且如果信道不空闲时,TX命令滤波不成功。

四、结论:
①只有当前处于TX状态,而且信道不空闲的时候,TX命令滤波才会不成功;
②CCA可以有效的指示信道是否空闲,而且如果信道不空闲时,TX命令滤波不成功

 

1、 空闲信道评估(Clear Channel Assessment,CCA):

    判断信道是否空闲。IEEE 802.15.4 物理层在碰撞避免机制中提供CCA的能力,即如果
信道被其他设备占用,则允许传输退出而不必考虑采用该信道的通信协议。

    现主要有3种空闲信道评估模式:(1)判断信道的信号能量,若信号能量低于某一个门限量,则认为信道空闲;(2)判断无线信道的特征,这个特征主要包括两方面,即扩频信号和载波频率;(3)综合前两种模式,同时检测信号强度和信号特征,给出信道空闲判断。

原创粉丝点击