3.1 系统软件总体设计
软件总体功能主要分为四个部分:参数监测、数据存储、数据收发和性能控制。在主程序中采用两个中断:定时器中断和串口中断。定时器中断实时采集参数数据,实现模块的实时监测;串口中断实时收发上位机和FSK数据,实现命令的处理和监控数据的传输。
主程序的结构如图4所示,程序对上位机命令进行鉴权处理之后,根据通信协议解析处理命令,并执行相应的操作。
3.2 CC1000参数编程
CCl000作为数传芯片,需要进行参数配置以决定其工作性能,因而CC1000参数编程是一个重要的过程。通过可编程配置寄存器能改变以下主要参数:接收/发送模式、射频输出功率、射频输出频率、FSK分频、晶振参考频率、传输速率和数据格式等。在本设计中,CC1000 采用曼彻斯特编码方式,进行数据译码和同步工作,这通过设置CC1000 的MODEM1 寄存器的参数完成。在同步编码方式中,曼彻斯特编码不需要锁定平均值滤波器,传输效率高。设计要求CC1000采用11.0592MHz晶振,接收本振频率为433.766MHz,发射中心频率为433.916MHz(连发“1”)、433.948MHz (连发“0”),调制频偏为32KHz,载频稳定度为10KHz。根据以上参数,可通过Chipcon 公司提供的CC1000配置软件SmartRF Studio来产生配置信息,这些配置信息将被输入到单片机中。另外该软件还可以提供输入/输出匹配电路和VCO电感所需的元件参数值。
完成配置信息后,要对CC1000进行初始化,初始化主要完成对CC1000内部寄存器的设置。在初始化时需复位CC1000内部寄存器。当完成寄存器的设置后,为了避免芯片运行过程中频率产生的漂移,应当校正CC1000内部VCO和PLL寄存器中的值。校正完成后,对MAIN寄存器进行设置,将CC1000输出功率初始值设为0,功耗模式设置为低电平模式,以降低功耗。初始化流程如图5所示。
3.3 数据收发程序设计[5]
数据的收发包括:单片机接收上位机数据,单片机向上位机发送数据,单片机接收CC1000数据和单片机向CC1000发送数据。这里仅讨论单片机通过串口1接收中断接收CC1000数据过程,这是整个数据收发程序设计中的难点。
本设计中,单片机与CC1000之间采用曼彻斯特同步模式进行数据的接收和发送。在发射模式下(单片机向CC1000发送数据),PCLK提供发送数据时钟信号,DIO用于数据输入,CC1000 自动完成对数据的译码。在接收模式下,PCLK 提供接收数据时钟信号,在DIO提供数据,CC1000自动完成数据编码和同步工作。
(1)数据帧结构
在曼彻斯特同步模式下,数据帧由训练码、同步码、前导码和有效数据构成。在本设计中,训练码为连续交替出现的0 和1,共40个;同步码为连续出现的8个0;前导码为连续的8个1。当数据中出现符合前面所有格式数据时,接下来的数据就是要接收的有效数据。当数据符合帧格式时,单片机才认为该数据为合格数据,从而进行接收,这样可以保证接收数据的准确性,降低传输误码率。