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、当用命令滤波来使芯片进入TX状态时,进入是否成功取决于CCA
MODE的配置,CCA
CCA
00
01
10
11
当满足信道空闲标准时,进入TX状态的命令滤波就是成功的,否则不成功。由于我们就是为了验证CCA是否有效,所以将其配置为00,即当接收信号强度高于门限值时,认为信道忙,且不能进入TX状态。
另外,CCA
2、我们要判断CCA是否有效,就要在外部某引脚上检测电平状态,以判断信
是否空闲。
3、我们要判断当信道不空闲时TX命令滤波是否成功,因此就要读状态机寄存
器获取当前状态,判断是否进入了TX状态。但是读当前状态的时机与校准方式有关。
例如,如果采用从IDLE进入TX或RX时校准,那么从IDLE进入TX不是
即时的,而是至少需要809us的时间,所以我们使用TX命令滤波之后,就至少要等待800us在进行判断才是正确的时机。
4、当我们判断了当前芯片的状态之后,还要通过外部来了解当前状态。所以如果成功进入了TX状态,就让绿灯亮100ms;如果一直未进入TX状态,就让红灯亮100ms。
三、在考虑到上面的几点配置之后,就开始测试了。
让另外一个无线模块稍写自己编写的测试程序,来验证CCA是否有效。
1、首先根据王耒的建议将RXOFF_MODE和TXOFF_MODE
进行了上面的配置之后,发现CCA一直无效,即发现PIC的RB0引脚(与CC1100的GDO2引脚相连)一直为低电平。这就说明一直未探测到信道忙。
所以就又重新阅读了DATASHEET发现其中提到,只有当前处于TX状态,而且信道不空闲的时候,TX命令滤波才会不成功,这是才明白,如果当前为IDLE或TX状态时,CCA是无效的,而且都会成功进入TX状态。
2、将RXOFF_MODE和TXOFF_MODE
这个时候就发现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)综合前两种模式,同时检测信号强度和信号特征,给出信道空闲判断。
- cc1101 CCA 空闲信道评估(Clear Channel Assessment,CCA)
- CC1100 CCA(2)
- CC1101 监听空气中载波信号强度(CCA)功能调试通过
- 典型相关分析(CCA)
- 典型相关分析(CCA)
- CCA(gwas)
- 典型关联分析(CCA)算法原理
- PCA,ICA和CCA(markdown)
- CC1100 CCA功能验证
- CCA,rCCA,gCCA
- PCA, ICA, CCA
- CCA概述和安装
- CC1100 CCA (1)
- CCA 协方差&相关性分析
- 多重集CCA
- 典型关联分析CCA
- CCA典型关联分析
- Cloudera Hadoop管理员(CCAH)&开发者(CCA)认证大纲
- NetMeeting的使用
- K_means算法推导
- poj1185——状态压缩DP
- linux系统编程之信号(四):信号的捕捉与sigaction函数
- hdu 1018 - Big Number
- cc1101 CCA 空闲信道评估(Clear Channel Assessment,CCA)
- Java的Classloader机制。
- 无法解析的外部符号
- 2013金山西山居创意游戏程序挑战赛——初赛(2) A 美素数(hdu 4548)
- GD2的实例应用
- Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tool
- UML简介
- VMware 安装ubuntu【图解】
- 试图搞懂MDK程序下载到flash(三)--MDK配置选项Linker、Target、Debug的理解分析