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灯不停的闪烁。

时间: 2024-11-08 20:24:00

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

使用Log4jdbc-log4j2监听MyBatis中运行的SQL和Connection

引言: 在项目中使用了MyBatis,一个比较苦恼的问题是无法看到执行的SQL的具体情况,所以,就找到了Log4jdbc-log4j2.这个是一个基于jdbc层面的监听工具,可以监听对于数据库的主要操作,从而完美的查看到其中执行的操作. 1. Log4jdbc-log4j2版本选择 log4jdbc-log4j2-jdbc3.jar for JDBC 3 support in JDK 1.5 log4jdbc-log4j2-jdbc4.jar for JDBC 4 support in JDK

js 实时监听input中值变化

js 实时监听input中值变化 分类: Javascript2014-05-11 11:13 849人阅读 评论(0) 收藏 举报 [html] view plaincopyprint? <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>RunJS

Android 监听 Android中监听系统网络连接打开或者关闭的实现代码

本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.net.ConnectivityManager;  import android.ne

Fragment-如何监听fragment中的回退事件与怎样保存fragment状态

一.如何监听Fragment中的回退事件 1.问题阐述 在Activity中监听回退事件是件非常容易的事,因为直接重写onBackPressed()函数就好了,但当大家想要监听Fragment中的回退事件时,想当然的也想着重写onBackPressed()方法,这时候你会发现:Fragment中根本就没有onBackPressed()方法给你重写.这可怎么破! 想想,在前面的例子中,我们在Activity的一个fragment_container里依次Add进fragment1,fragment

实时监听组件中路由的变化

实时监听组件中路由的变化,通过watch来进行监听,当路由发生变化时,重新赋值,重新执行从后台获取数据的操作 watch: { '$route' (to, from) { this.listQuery.keywords=this.$route.query.keywords this.searchByKeywords() } }, methods: { searchByKeywords() { this.$store.dispatch('updateLoading', true) fetchSea

ios 监听TextField中内容变化

本篇文章只为帮助跟多的人.适合初学者. 在这里我介绍3种监听UITextField的方法.并在最后写了一个小的demo 提供参考. -------请不要纠结小编的命名方式规不规范,一切只为共同学习,共同进步. @property (weak, nonatomic) IBOutlet UITextField *UserID; @property (weak, nonatomic) IBOutlet UITextField *Password; @property (weak, nonatomic)

ActiveX(二)Js 监听 ActiveX中的事件

在上一篇随笔:ActiveX(一)第一个简单的Demo 中,已经可以实现 js 单向调用 ActiveX 中的方法,在很多情况下ActiveX中的方法的执行时相对耗时.耗性能的.在这样的情况下.ActiveX的方法执行会使用异步策略,那么方法异步时,js又如何获取异步执行结果呢?方案无非两种,一种是轮训.一种是Notify. 如果是Notify,Js如何监听其事件呢? 这将是本篇随笔接下来的重点: 继续上一个Demo,假设,技术需求如下:当按回车时.ActiveX将密码框中的密码主动推给Js (

Android 监听EditView中的文本改变事件

android中的编辑框EditText也比较常用,那比如在搜索框中,没输入一个字,下面的搜索列表就显示有包含输入关键字的选项,这个输入监听怎么实现的呢? 我们可以建一个例子,效果图如下: 我们可以监听光标处在哪个位置,选择了几个字符并处理,输入了几个字符 先新建布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.a

广播监听手机中应用程序是否安装并卸载

public class PackageReceiver extends BroadcastReceiver { private static final int PACKAGE_NAME_INDEX = 8; @Override public void onReceive(Context context, Intent intent) { if (intent != null) { /**安装程序的ACTION为Intent.ACTION_PACKAGE_ADDED*/ if (intent.