1. 引 言
射频光纤传输模块(也称光端机)与移动通信直放站设备相配合可以构成移动通信光纤传输直放站系统。早期射频光纤传输模块仅能完成射频信号到光信号的转换,没有其它功能。
随着移动运营商要求的提高,光纤直放站都需要有监控功能。因此,模块在原有基础上,增加了FSK通信功能,可方便直放站系统的监控数据传输。本文讲述了一款基于射频收发芯片CC1000的FSK数据通信系统的设计和实现。
2.光模块工作原理
直放站天线收到的上行信号经过放大器将其调整到一定的电平,送入光发送端机,射频光传输模块(以下简称为光模块)把上行信号和经过FSK调制的监控信号一起进行光调制,并通过光纤进行传输。在收端光接收机将光信号转化成相应的电信号,送至基站。监控信号通过滤波器选频从上行信号中分离出来,再通过FSK解调还原成数字信号;同理,由基站来的下行信号,送至光模块进行光调制,并通过光纤进行传输。在收端光接收机将光信号转化成相应的电信号,该信号经直放站放大器变为所需的功率电平信号,并通过双工环型器由天线发射出去,从而构成由光纤作为传输介质的直放站系统。其结构如图1所示。
3. FSK 电路设计
3.1 FSK 技术
FSK即"频移键控",它的英译为"Frequency Shift Keying"。二进制移频键控记为2FSK。
它是数据通信中使用较早的一种通信方式。由于这种调制解调方式容易实现,抗噪声和抗衰减性能较强,因此在中低速数据传输通信系统中得到了较为广泛的应用。根据国际电报和电话咨询委员会(ITU-T)的建议传输速率低于1200波特以下的设备一般采用FSK方式传输数据。在衰落信道(短波通信)中传输数据。
FSK调制信号的产生的工作原理是用载波的频率变化来传送数字消息。在2FSK中载波频率随着调制信号1和0而变化,1对应f 1,0对应f 2即:
其中: 1 w = 1 2π f , 2 w = 2 2π f 。
二进制里只有两个数0和1,传送1的时候用一种频率,传送0的时候用另一种频率,这就是FSK的实质。
3.2 硬件电路设计
在此设计中采用的是无线FSK收发芯片,但采用光纤传输的方式,因为光纤传输受外界影响小,并且在传输过程中光损小,传输距离远远大于无线传输距离。由于无线收发芯片的种类和数量比较多,选择无线收发芯片时应考虑需要以下几点因素:功耗、发射功率、接收灵敏度、收发芯片所需的外围元件数量和芯片成本等。CC1000是基于Chipcon公司的SmartRF技术制造的可编程、半双工超高频单片收发器芯片, 它主要是为315、433、868和915MHz的ISM和SRD设备所设计,可以编程工作在300~1000MHz范围之间的任一频率上。同时其灵敏度可达-109dBm , 可编程输出功率-20 ~10 dBm ,FSK调制数据率最高可达76.8kBaud ,可在2.7~3.3V低电源工作,具有250Hz步长可编程频率能力,适用于跳频协议。主要工作参数都能通过串行总线接口编程改变,使用非常灵活。
在此设计中在本系统中对CC1000 的性能要求如下:
① 调制速率:9.6Kbps② 编码方式:NRZ 码③ 传输模式:异步传输 UART 模式④ 频率设置:发射中心频率 433.916MHz,“1” 433.948MHz “0” 433.884MHz接收本征频率 433.766 MHz⑤ 调制频偏:±32KHz⑥ 载频频率稳定度:±25ppm(即±10KHz)⑦ 接收灵敏度:≤-90dBmMCU与CC1000 的硬件接口电路如图2 所示。MCU使用3 个输出管脚用于接口(PDATA、PCLK、PALE),PDATA 必须是双向管脚用来读回数据,另一个双向管脚用于待发送的数据DIO 和接收数据,提供数据定时的DCLK 应与微控器输入端相连,本文中CC1000 采用异步传输UART 模式,DIO 用于数据输入与MCU 串口TX 连接,DCLK 用于数据输出,与MCU 串口RX 连接。其余管脚能用来监视LOCK 信号在管脚CHP_OUT,当PLL 锁定时该信号为逻辑高电平。当使用一个外接终端电阻时,RSSI(接收信号强度指示)电压能通过A/D 测量出,可以检测接收信号强度。在设计印制电路板时应注意:要求使用双面PCB 板,地平面放在底层以减少射频信号的辐射和串扰,接地管脚应使用单独的过孔,尽量靠近封装管脚接地,去耦电容也应尽量靠近电源脚放置,并通过单独的过孔与接地层相连,外围元件越小越好最好使用表面固定装置。
4. 软件设计
整体系统数据的发射和接收如框图 3 所示。MCU 通过串口0 把上位机的数据存储,组帧后,由串口1 传给CC1000,通过射频发射机传出,远端MCU 依据接收到的数据,做出相应的处理,并重新组帧,传给近端的上位机。
4.1 数据帧结构
为了区分噪声和保证数据的可靠性,数据帧的格式如下:
① 同步码:这是一个连续的“0”和“1”(二进制)交替信号(按字节,0x55),比特数由CC1000 中寄存器MODEM1 中的SETTLING[1:0]来设置,其对应关系如下:
这个信号的作用在于减少与真实的载波信号类似的信号的干扰,并实现接收端和发送端帧同步,CC1000 接收端只有正确接收到这个信号,并锁定均值滤波器(LOCK_AVG_IN=1),后续信号才会有效。在此设计中SETTLING[1:0]为00,即11bit。
②前导码:0xFF(即“1”持续高电平)。
③有效数据:需要传送的监控数据。
④结束码:0xFF(即“1”持续高电平)。
4.2 数据收发程序设计
在通信过程中 CC1000 具有3 种状态:IDLE(空闲)、RX(接收数据)、TX(发送数据)。整体上看,这是个具有3 种状态的状态机模型,状态之间的相互转换见图4。由于CC1000 为半双工通信模式,因而RX 和TX 两个状态具有互斥性。
串口数据的接收由中断完成,串口0 收到数据触发接收中断,并将接收数据缓存到缓冲区Buffer0。串口1 接收中断根据同步码,前导码和结束码来判断并缓存有效数据,其流程见图5。只有当接收端收到5 个同步码之后,才可将接收数据保存到缓冲区内。为了防止突发的乱码,当接收的有效数据超过900 时,仍为收到结束码,则判定此帧数据无效,因而在使用中应当避免数据帧长度过长。
数据的发送分为两部分:CC1000 发送数据和向上位机发送数据。CC1000 发送数据的过程中应该考虑CC1000 收发的互斥性以及前导码和结束码的发送时间。CC1000 发送数据流程图见图6。程序中设置为每次发送三次前导码和结束码,因此在向上位机发送数据的过程中要剔除掉缓冲区中多余的前导码和结束码,实现数据的透明传输。
4.3 数据环形缓冲区
MCU 程序的重要部分为数据的存储和转发。缓冲区数据队列示意图如图7 所示,可以把数组想象为一个环形,而不是直线形,采用这种方式,当从队列中添加或删除记录项时,对首将持续沿着数组追逐到队尾,因而可以无限制的前行,但是仍呆在一个限定的圆圈内。
在不同的时间,队列将占用数组的不同部分,但永远都不用担心会超过这个空间之外,除非数组被彻底的占满,在这种情况下,称为溢出。在本设计中采用*BufferHead 和*BufferTail跟踪出队(即数据的发送)和入队(即数据的接收)的数据,当两个指针指向同一位置时,表示缓冲区空,即数据已发送完。
5. 结 论
FSK 通信的稳定性是射频光模块的一个重要的性能指标,它直接影响到直放站工作的可靠性。此系统的测试方法如下图8 和图9 所示。测试中所用的光衰作用是模拟实际工程中,光纤的长度所产生的光损。测试方法1 要借助PC 机的两个串口COM1 和COM2,通过PC机上的COM1 连续发送有规律的数据包,在另一端COM2 接收;同时COM2 发送数据包,COM1 接收。统计发送数据包和丢失数据包的数量,测试数据量不小于1000 帧,即可计算误帧率。
测试方法2 和测试方法1 有所不同,方法2 只需要1 个PC 机串口,直接把光模块2 的串口0 的RXD 和TXD 短接。这种方法比较简单,而且具有更高的可靠性。
本系统可以实现在18dB光衰时,误码率≤10的负3次方,通信效率高和可靠性高的特点,并且已在实际中使用,取得了令人满意的效果。