CC1101
来源:互联网 发布:南京java公司招聘 编辑:程序博客网 时间:2024/04/30 05:19
转载http://blog.csdn.net/gtkknd/article/details/8947441
不过我的发送没有用中断来做,因为查询够了。当然查询也看你怎么查了,我见到过的有两种,如下:
1.先判断GDO0/GDO2(看你怎么连了)是否变高电平,然后再判断是否变低电平,这么一个过程就是发送一帧数据的过程。
2.判断CC1101的状态寄存器,这个也要看你的设置了,如果你发送完之后是IDLE状态则等待0x01如果发送完之后是接收状态则等待0x0d;
说到发送数据,这里说明一下,CC1101发送数据的时候是先发送前导码和同步字的,然后在发送FIFO数据长度、地址(如果接收端开启了地址过滤)以及FIFO中的数据。
在这里要说明一点:当时我和同事一起做这个的时候发现当低速率的时候他发送的数据我总是接收不到。原因就是我发送完之后等待IDLE的时间太短,所以数据根本就没发完就超时了。
说到寄存器,那CC1101的功能那么多,寄存器自然就很多。其实真正我们需要手动去设置的寄存器却不是很多,大多数寄存器都是SmartRF来自动生成的,在这里说说几个比较重要的寄存器:
FIFOTHR:这个主要是设置发送和接受FIFO能够放的下多少发送和接受的数据,一般来说都只要设置成0x07就可以了,因为如果你数据比较长你可以分包发送或者分包接收即可。
PKTLEN:最大数据包长度设置。
PKTCTRL1:这个寄存器如果你需要地址过滤的话那就需要开启地址过滤,还有就是如果你想在你的数据FIFO最后两个字节放上RSSI的值和LQI值以及CRC_OK的话就需要做相应的设置。
PKTCTRL0:想开启数据白化和CRC校验的话就设置一下咯,当然还有比较重的就是是否是固定长度数据包或者是可变长度数据包,区别就是固定的话那前导码和同步字后就不需要加上FIFO数据长度了,反之则需要加上FIFO数据长度。否则CC1101怎么知道你要发多少数据呢?
MCSM1:这个太重要了,决定了你发送完或者接收完数据后下一个状态是什么。
MCSM0:选择自动校准还是手动校准,听说不校准的话速率低倒关系不大,速率高了可能跑偏了影响就大了。
http://wenku.baidu.com/link?url=gwb2rQFqM6itni7lJW7HMr0dqvx90kSiQ_HKtXtsi51LOOAjLiZHOC1FONDg7MoQ8aBWYSnKWzrAa5ykNiZ2rLeqU9tMmsft6uxmVI7UCW3
http://www.deyisupport.com/question_answer/wireless_connectivity/f/45/t/16793.aspx
- CC1101
- CC1101
- CC1101
- cc1101 2
- CC1101开发
- CC1101调试
- cc1101无线模块
- cc1101 学习1
- CC1101的调试
- CC1101调试入门
- CC1101 CRC校验位
- STM32+CC1101 低功耗
- cc1101 高级驱动程序
- cc1101 简单入门
- cc1101 使用笔记
- CC110L 与CC1101的区别
- 我的CC1101笔记2
- cc1101的GDO0和GDO2
- Android中有时候运行程序的时候会报错:An internal error occurred during:。。。。
- 记忆力减退---之STM32 MDK工程创建---宏定义
- 发送邮件工具方法
- 自定义AlertDialog
- Log4J学习【七】Log4J的体系结构之docLayout的结构
- CC1101
- boost::asio编程-域名解析
- 抢票神奇<铁路通>
- E: Could not get lock /var/cache/apt/archives/lock - open (11: Resource temporarily unavailable)
- function declaration isn't a prototype
- Log4J学习【八】Log4J对3个组件的使用
- Request对象的主要方法
- PID调节整理
- Ubuntu 升级 本地 git