CC1101

CC1101是TI的无线通信器件(sub-1GHz)其主要针对工业、科研和医疗(ISM)以及短距离无线通信设备(SRD)CC1101可提供对数据包处理、数据缓冲、突发传输、接收信号强度指示(RSSI)、空闲信道评估(CCA)、链路质量指示(LQI)以及无线唤醒(WOR)的广泛硬件支持。支持多种信号调制模式(OOK/ASKGFSK2-FSK4-FSKMSK);支持1.2kbps-500kbpsdata rate。最大发射功率10dBm。

一般的模块有8个管脚,其中包括有3个GDO管脚(GDO1和MISO共用),在不需要使用同步串口模式下,额外配置一个GDO管脚就几乎可以满足所有使用需求;我也尝试只使用GDO1(即SPI的MISO管脚)来实现信号获取,这样只需要4线SPI就可以完成设计,但这样使用就涉及不同操作时期的中断使能失能处理,一些IOCFG配置和可以嵌套组合的中断就没法使用了,相比于多占用一个管脚来说有点得不偿失。


最常用的IOCFG设置是6,一次初始化配置后收发状态都可以用上,而且方便使用SPI轮询的方式实现,整个使用过程中也不需要再更改IOCFG寄存器。这个配置也是囊括了大部分的CC1101使用场景,也是“意外”最少的配置。

其次是将IOCFG寄存器设置为7,即当CC1101接收到数据并通过CRC校验之后,相应的GDO管脚置高并在SPI读出数据时被置低;但在实际调试过程中需要注意将MCU相应的中断配置为上升沿触发(其他IOCFG配置一般使用下降沿就够了),上下边缘都能触发的方式也会带来麻烦的。这是一个较省MCU资源的配置,如果对实时要求不高还可以再充分利用一下64B的FIFO。

使用中断时,不能在CC1101的寄存器配置的同时进行中断使能,因为CC1101初始化过程中会通过GDO管脚输出一系列的时钟信号,如果这时候已经有了中断就会频繁进入中断,然后当然就无法正常工作了。

Burst读写数据后需要有一次拉高CSN管脚电平的操作(表示接下来的操作不属于Burst读写的范围):将CSN管脚电平上拉等待一段时间再进行其他的寄存器命令操作;这相当于一次复位操作。

在开始使用CC1101时,建议不要配置PKTLEN (Packet length)寄存器,配置了这个寄存器后在读数据时容易出现一些隐藏的问题,比如你配置了30,在连续读的时候实际读取的数量大于了30就读不到任何数据。

接收不到数据的原因总结:1、没有和发送端匹配一些关键的寄存器配置,如data rate,同步字,调制模式等;2、没有设置好频率校准,或者关闭了自动校准功能;3、读取数据的指令不对,如读取数据数量大于长度限制;4、读取数据的时间不对,没有足够的等待,需要充分考虑CC1101低速率器件,动辄就是ms级的延时;5、没有进入发送状态或者进行一下状态切换,一般每次接收后需要进行校准然后再进入接收状态,如果配置的IOCFG是和FIFO threshold相关的,还需要有清理FIFO的操作,不然不会再次触发中断的。

数据没发送出去的原因总结:1、CCA,信道被长期占用或前导码太长,而MCU对CC1101的操作频度太快,还没完成上一个指令就被新指令覆盖了,当然接收到的数据前面的正确后面的乱码也是这个原因;2、没有STX的指令或者没有进入发送状态;3、没有配置必要的寄存器,如功率表寄存器PaTabel;4、电源供电不满足条件,CC1101在10dBm发射下的电流需求约28ma,供电不满足也很难正常工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值