来源:本站整理 作者:佚名 2009-05-06 15:02:14
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%,保证了监控的可靠性。