当上层不处于发送状态时,CC1120都将置于接收状态或增强型无线电唤醒状态,当接收到一个数据包时,GPIO0引脚产生一个下降沿中断,STM32F103ZE进入中断处理程序,调用CC1120SpiReadRxFifo(),从接收缓冲RXFIFO中读取数据包,并将其放入接收环形缓冲区中。如果接收环形缓冲区满时,将放弃当前接收到的数据包。上层通过调用perCC1120Read()接口读取接收到的数据包,当接收缓冲区为空时,将阻塞上层的读取进程。perCC1120Read()的工作流程图如图9所示。
3.2 CC1120的配置要点
(1)寄存器配置软件
针对CC1120的寄存器配置,TI公司提供了SmartRFStudio 7软件。通过这个软件可以对CC1120进行配置,以获得最佳寄存器设置以及性能和功能评估。配置软件根据用户输入的发射频率、晶振频率、符号速率等参数,生成相应的寄存器配置信息。
(2)数据包处理的硬件支持
CC1120内部支持的数据包处理方式有前导码、同步字、地址过滤、CRC、数据白化、状态字节、字节倒置等,同时,数据包长度类型支持固定长、可变长、无限长3种模式,可以通过手动配置PKT_CFG0~PKT_CFG2来实现。
(3)增强型无线电唤醒
在程序的实现过程中,当CC1120长时间没有接收到数据时,则开启增强型无线电唤醒功能(寄存器WOR_CFG0.RC_PD=0),并发送SWOR指令选通命令,将芯片工作状态切换到睡眠状态。CC1120将在MCU不干涉的前提下,周期性地从睡眠状态中唤醒并监听数据包的到来,从而降低系统的整体功耗。
(4)接收的信号强度指示
CC1120在接收状态下,能连续地从RSSI状态寄存器(RSSI0、RSSI1)中读取到RSSI值,直到检测到一个有效的同步字,其后RSSI读取值将被冻结。通过设置寄存器AGC_CFG1.AGC_SYNC_BEHAVIOR,可以解除RSSI值被冻结的状态。
(5)通用数字输出引脚(GPIO0~GPIO3)
在实际应用中,可以通过寄存器(IOCFG0~IOCFG3)配置,为上层实时提供信道或数据包状态等信息。本设计将寄存器IOCFG0的值设置为0x06,即利用了GPIO0引脚的电平跳变特点。当CC1120发送完或接收到一包数据包,触发MCU端口产生中断,并在中断服务程序中进行写入或读取缓冲区TX/RX FIFO等操作,使STM32F103ZE有更多时间处理其他事务或处于休眠状态,达到降低整个系统功耗的目的。
结语
基于μC/OS—III和CC1120的短距离窄带无线数传系统方案,可以实现低功耗、近距离、可靠的无线数据传输,具有成本低、可扩展性强、操作灵活简单的特点。通过对CC1120和STM32F103ZE进行适当的配置,硬件能在无数据收发的状态下,自动进入低功耗的睡眠或待机状态,可以大大降低硬件系统的整体功耗。大量测试结果表明,该窄带无线数据传输系统数据收发正常,整个系统运行稳定,具备RSSI检测、休眠唤醒等相关功能。
本文关键字:程序设计 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术