一种嵌入式射频光传输模块实现方案
远端模块的CC1000接收。远端模块发送给近端模块的数据依据同样的原理传输。模块之间的FSK通信大大提高了对光模块的监测和控制能力。
C8051F023有两个UART接口,在本设计中UART0与上位机通信,UART1则用于与CC1000的数据传输。
3.系统软件设计
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。当数据中出现符合前面所有格式数据时,接下来的数据就是要接收的有效数据。当数据符合帧格式时,单片机才认为该数据为合格数据,从而进行接收,这样可以保证接收数据的准确性,降低传输误码率。
(2)串口1接收中断服务程序
在通信过程中CC1000 具有3 种状态:IDLE(空闲)、RX(接收数据)、TX(发送数据)。由于CC1000与单片机之间是半双工模式通信,因而RX 与TX 两状态要互斥。数据的接收由串口中断完成:UART0接收中断接收来自上位机的数据,UART1接收中断则接收来自CC1000的数据。UART1中断服务程序数据传输流程如图6所示。在接收过程中,为了避免数据帧长度过长,当接收的有效数据超过缓冲区空间时,单片机判定此帧无效。
3.4 参数监测与控制
单片机通过A/D转换完成对参数的采集和数字化,这一过程由定时器中断完成。监测数据被存储,并通过PC机显示出来。增益控制和偏置电压则通过单片机的D/A转换来控制。有关这方面的软件设计,由于篇幅有限,这里不再赘述。
4.总结
嵌入式智能光模块可以实现直放站近端机和远端机的远程光纤通信,在此基础上,PC 机只需通过RS232/485总线与近端机通信,便可完成对近端机和远端机的实时监控,方便工作人员对直放站的调试和维护。经测试,CC1000之间的FSK通信在20dB 光衰条件下的误帧率优于0.1%,保证了监控的可靠性。