CC1000实现射频光传输模块FSK通信
① 同步码:这是一个连续的"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次方,通信效率高和可靠性高的特点,并且已在实际中使用,取得了令人满意的效果。
- 125KHz RFID读写器的FSK解调器设计(02-11)
- FSK信息解码的电话网数据通信(02-11)
- 强化射频与MCU性能 车用77GHz雷达性价比攀升(03-03)
- WLAN射频优化的解决方案设计详解(03-03)
- NB-IoT和LoRa的无线射频芯片厂商盘点(10-15)
- 射频卡技术在数字式预付费电表系统中的应用(02-11)