GPS是目前技术上最成熟且已实用的一种定位系统,但是在GPS定位系统中,由于其是一个单向导航系统,他是把星历数据等传给地面接收机,可在许多具体应用时,例如在车辆调度系统中,一般都需要把利用GPS测得的信息数据传到调度中心,由于其系统由一个基准站和多个用户台组成,基准站与用户台之间的联系,即由基准站计算出的各种校正值发送到用户台,上边这一切都需要用到数据链来完成数据的传输。其中,数据链由调制解调器和电台组成。在无线数据传输系统中,调制解调器足一个关键部分,调制解调器(Modem)是将数据进行编码和调制,然后输入到电台发射出去,用户台将其接收下来,并将数据解调后,送入GPS接收机进行改正。本文介绍了单片机控制Modem的原理和方法。
1 系统组成
本系统主要由单片机和调制解调器组成,单片机选用P89C58,其作为控制电路的主要部分,对K224芯片进行控制,并完成各个芯片的初始化工作,同时还有对数据进行交织纠错编码的功能。单片机与K224接口的连接如图1所示。
整个系统分为两个部分,一部分为主呼结构,另一部分为应答结构。图1只给出了主呼部分。工作时,先上电复位,由P89C58对K224进行初始化设置,并对其自身的串行口进行初始化。
整个系统的工作过程为:从GPS接收机接收下来数据后,经过RS 232接口电路(即由MAX232构成的电平转换电路),变为TTL电平,送至P89C58的RXD端,P89C58对数据进行分组编码、交错编码后,送到P89C58的TXD端输出,此输出信号送到K224的TXD,经过调制后从K224的TXA端输出调制信号。当接收机从RXA处接收到调制信号后,经过K224处理,解调后由K224通过RXD端口送至P89C58的RXD接收端,由P89C58对数据进行反交织、解码处理,此后,数据从单片机的TXD端口处送出去,再一次经过ICL232的电平转换,以RS232电平送至计算机进行计算分析。
2 单片机的初始设置
在本系统中,由于要用到P89C58对各个芯片进行初始化设置,并且还要利用其完成数据的交织纠错功能,这就需要用到单片机的特殊功能寄存器进行设置,同时需要利用单片机内部RAM的可位寻址区来完成交织编码的功能。对于MCS-51系列的单片机来说,其特殊功能寄存器中对串行口进行控制的有SCON和PCON。PCON是电源控制寄存器,其中D7位SMOD为串行口波特率系数控制位,如SMOD=1,则波特率加倍。特殊功能寄存器SCON字节地址为98H,且可位寻址。SCON用来设定串行口的工作方式、接收发送控制以及设置状态标志。
在串行口的4种工作方式中,主要用于扩展并行输入输出口。考虑到上述参数,我们设置单片机工作于串行方式1,即一帧数据格式为:1个起始位、8个数据位、1个停止位、无奇偶校验。由于单片机串行口4种工作方式中,并无2个停止位的数据格式,我们没必要为了凑齐2个停止位而刻意采用方式3,用9位数据格式中的一位来代替停止位。另外,如节省下这1个停止位,由于GPS导航仪输出的数据格式为2个停止位,而单片机工作于方式1,当其接收到1个停止位时,就认为一帧数据已接收完毕,从而就有了1个停止位的时间进行别的处理。对于波特率为2 400 b/s的数据来说,码元宽度为1/2 400=0.42 ms,对于波特率为1 200 b/s的数据,码元宽度为1/1 200=0.83 ms。在本系统中,由于采用的是11.059 2 MHz晶振,其机器周期近似为1μs。比较后可以看出,节省下来的时间有一定的利用价值,从而有更多的时间去进行交织纠错的编码处理。由于系统工作时接收数据采用的是查询方式,也即上电复位后,即不停地循环检测有无数据输入,直到检测到有数据输人为止。这样,如有更多的时间进行数据处理,则不会因为处理数据而导致有些数据漏检从而丢失了数据。
本系统中接收数据的波特率设定为1 200 b/s,2 400 b/s,采用定时器T1作为波特率发生器,T1工作于自动装载方式的工作方式2,TL1作计数用,自动重装的值放在TH1中时,溢出率可由下式确定:
溢出率=计数速率/[256-(TH1)]
其波特率由下式确定:
波特率=(定时/计数器1溢出率)/(32/2SMOD)
其中SMOD为特殊功能寄存器PCON中的第8位特殊位。
3 交织纠错编码的设计
纠错编码是提高数字传输可靠性的一种技术,是正确传输差分GPS改正信号的重要手段。数据在传输过程中,由于传输信道内部噪声及其造成的符号间干扰,以及传输外界环境的干扰,常常有突发性的错误发生。为了提高抗干扰能力,我们采用交织纠错编码来将一连串错误分散到多个码字中去,然后再采用能够纠正较少错误的码字进行编码,这样就可能纠正有较长错误的码字。例如,给定一个(n,k)线性分组码,我们利用交织可以把长为bλ的单个突发错误分散到λ个(n,k)码字中去,从而使每个(n,k)码字中只有长度为b的突发错误,这就提高了系统抗干扰的能力,提高了系统的纠错能力。
MCS-51单片机内部数据存储器一般为256 B,分为128 B的内部数据存储器和128 B的特殊功能寄存器。对于P89C58来说,其可寻址的数据存储空问可扩展至上边的128 B。在内部数据存储器中,20H~2FH(16个单元)作为一般工作单元,既可以由CPU按字节寻址,也可以按位直接寻址,进行位操作。我们正是利用了其中的20H~27H来构成交错编码空间。
通过8×8个矩型数据单元,循环按行(列)放置数据,然后再循环按列(行)读出数据,从而达到数据行进列出,或者列进行出,这样完成交错纠错编码。在这一过程中,需要注意时间的配合问题,数据的处理时问和数据的发送时间要协调一致,否者会导致数据不能正常接收。
4 调制解调器的设计
K224内部共有8个8 b的寄存器,对K224的操作是通过对这8个寄存器进行初始设置,确定工作状态来完成的。
2片Modem分别设置为工作于主呼和应答方式、禁止INT(中断)、经扰码器、禁止防卫音、关应答音发生器、关DTMF,同时接收发送采用同一判决平面,打开自适应均衡器。
在Modem正常传送数据之前,2个Modem以及Modem与DTE之间,为了确定双方的速率等问题,需要进行必要的连络,这就是所谓的握手。在握手的过程中,微控制器P89C58必须检测和确认确定的信号来控制握手的过程和Modem的状态。微控制器P89C58读取K224的检测寄存器的比特位,但是仅仅检测到某一比特位是预先的状态(1或者0),就立即采取与该状态有关的动作是远远不够的。其中的原因有两个:第一是在握手过程中,检测到的信号必须要稳定地持续一段时间;第二是因为有噪声的干扰,某些比特位可能会发生由0到1或由1到0的突变。因此微控制器需要确认检测寄存器的比特位的状态,并且继续检测此信号是否持续了相应的时间。
为此,需要设计检测握手序列的方法。本文采用的是增计数器的方法,即将信号应持续的时间转化为一个预置数值,然后设置一个计数器,每检测到一个信号便加1,当增到预置数值时,才可认为该信号检测到了。
具体计算方法如下:每个握手过程所需检测的信号都有一个必须持续的时间,而这个信号到达接收机被检测器检测到要有一个延迟,用该信号的持续时间减去延迟时间,然后再用该信号的抽样频率乘以该数值,抽样频率应大于或等于被检测信号的数据率。上述程序设置是通过P89C58在系统七电复位后,对K224进行初始化的。图2是系统工作的流程图。
5 结 语
本系统经过星研Star51PH单片机仿真器仿真,并通过TOP2005编程器编程后,结果证明系统是可行的,调制解调器接收在1 200 b/s可以完全稳定接收发送,当工作在速率较大时,长时间工作数据会不能稳定接收,需要进一步实验验证。该系统设计结构简单,性能稳定可靠。