CC1101 监听空气中载波信号强度(CCA)功能调试通过

 
  阅读本文章前,请先认真阅读数据手册,同时查看我转载的CCA(1)和CCA(2)两篇文章进行扫盲。
最近一直在用CC1101这款无线芯片,今天把CCA功能调试成功了,特来分享一下。我的思路是使能CC1101为CCA功能,GDO2引脚配置为输出载波感应电平,设置好感应电平阈值。现在监听空气中的载波信号强度,如果接收信号强度高于门限时,GDO2为高电平;当接收信号强度低于门限时,GDO2为低电平。


CCA初始化函数如下:
void  CC1101CCA( void )//配置为载波监听功能
{
   CC1101WriteReg(CC1101_IOCFG2,0x0E);//GDO2引脚输出载波感应电平,如果RSSI级别在门限之上为高电平
   CC1101WriteReg(CC1101_MCSM1,0x3F);//接受信号强度低于门限值且当前未接收报文则信道空闲,让TX和RX结束后,芯片都保持在RX状态。        
   CC1101WriteReg(CC1101_AGCCTRL1,0x40);//低噪声放大器增益先减小,载波监听相对阈值禁用,载波监听绝对阈值由MAGN_TARGET设置
   CC1101WriteReg(CC1101_AGCCTRL2,0x07);//42dB      
}




实验源程序如下:
void main( void )
{
GPIO_Init( );//IO口和晶振初始化
SPI_Init( ); //SPI配置初始化
CC1101Init( );  //CC1101初始化
CC1101CCA( );  //CC1101 CCA配置
    while( 1 )     
    { 
    CC1101SetTRMode( RX_MODE ); //CC1101设置为接收模式
__delay_ms(1);//设置为接收模式后需要稍微等待一下,CC1101才能检测空气中的载波信号
if(GDO2==1)//检测到空气中有载波信号
{
//让LED状态取反


}   
__delay_ms(50);//延时一段时间,以便人眼能看到LED闪烁
     CC1101WriteCmd( CC1101_SFRX );//每次接收完数据后,都需要清空RX FIFO,以便下次接收

    }



实验结果:让另一端的CC1101周期性的发送数据,现在接收端的GDO2会周期性的出现高电平,因此LED灯不停的闪烁。

你可能感兴趣的:(433M--RF,CC1101)