基于ARM9的经纬仪高帧频数据通信的设计和实现
2014-12-07王芳
王芳
(中国科学院长春光学精密机械与物理研究所,长春 130033)
数据通讯系统是经纬仪上各个处理器及控制器间数据交换的中心。要求数据通讯不仅能实时接收经纬仪上各分系统的通信数据,而且还要将实时性和同步性要求很强的系统(如编码器和时间信息)的数据在打包发送给其它系统时,数据包中的数据为同一时间点的数据。因此,数据通信系统须按一定的通讯时序进行接收和发送数据,这就是时序控制,是经纬数据通信系统最重要的指标。
目前作为靶场主要测量设备之一的光电经纬仪,其测量方向不仅仅局限于对目标弹道的测量,目标姿态测量在靶场测量中也越来越占据重要位置。现在许多型号的光电经纬仪都装有高帧频CMOS摄像机用于记录目标的瞬间变化信息,以完成对目标姿态的测量。目前通用的高帧频摄像机,往往只能外接标准的B码时间信息(交流码或直流码),并记录下每帧图像的拍摄时间,对另一个重要测量信息—编码器信息却不能记录,只能依靠计算机将对应的时间信息和编码器信息记录下来,在拍摄完成后,依据图像的时间信息找到对应的编码器信息。数据通信系统需按照摄像机拍摄频率,接收编码器信息,并将相对应的时间信息一起打包发送至记录数据分系统。现在高速摄像机最高工作频率一般设计为1000Hz,基于这种设计研制了基于S3C2440的高频数据通信系统。其工作最高频率1000Hz(可更高),且可根据摄像机工作帧频而改变收/发数据帧频。
1 高帧频数据通信系统设计原理
光电经纬仪在捕捉目标图像的同时,能够实时记录精确的测角信息,并通过事后目标图像的判读处理,得出目标精确的中轴偏移量,进而叠加计算出更为精确的测角值[1]。因此,图像信息、时间信息和角度信息是光电经纬仪记录的三大重要信息。安装有高速摄像机的某型号光电经纬仪工作参数:(1)高速摄像机拍摄帧频:1000Hz;(2)编码器:处理帧频1000Hz;(3)时统终端:最高处理帧频200Hz。
由于时统终端的处理速度最高只能达到200Hz,要想给1000Hz的编码器数据加上时标,需对时间信息进行细分处理,产生对应1000H编码器数据的时间信息。
编码器信息由编码器系统以1000Hz同步信号为基准,对角度进行检测,并以一定的编码格式将角度信息发送到数据通信系统。1000Hz的角度信息是在1000Hz同步信号后560μs完全发送到数据通讯系统,因此数据通讯系统应该在1000Hz同步信号后560μs接收编码器数据,并与1000Hz采样点的时间信息一同打包,形成同一时间点的角度—时间测量数据包,供事后与图像信息一同组成完整的经纬仪测量数据。
1.1 细分时间信息
时统终端最高处理速度为200Hz,不能满足1000Hz数据频频要求。设计时,要求时统终端提供1Hz的时间信息,并提供1Hz和1000Hz同步信号,数据通讯系统以1Hz和1000Hz同步信号为基准产生毫秒时间信息。
1.2 通信时序设计
设计1Hz脉冲信号启动一个外部中断,并在这个中断中接收1Hz的时间信息,此时间信息是对应上一个1Hz的时间信息,因此需对对时间信息进行“+1秒”处理。
设计1000Hz脉冲信号启动另个一个外部中断,在中断中根据相对1Hz中断后产生1000Hz中断的个数,产生毫秒信息。1000Hz计数在1Hz中断中清为零,每1Hz中断间隔共产生1000个1000Hz中断。根据设计原理,要求系统响应完1Hz中断后,响应1Hz后的第一个1000Hz中断,这种响应中断先后顺序是保证产生正确毫秒值的关键。
数据通讯系统的主控制器S3C2440,其24个外部中断可配置引起中断的信号模式为电平触发或沿触发,并可配置极性[2],在外部中断寄存(EXTINT)中进行设置。时统终端提供的1Hz同步信号和1000Hz同步信号格式如图1所示。
图1 1Hz同步信号和1000Hz同步信号的格式
可以设置1Hz中断为下降沿产生中断,与S3C2440的外部中断0(EINT0)连接,1000Hz中断为上升沿产生中断,与S3C2440的外部中断6(EINT6)连接,两个中断相差1个脉冲宽度时间,如此设计保证了两个中断的时序安排。
2 软件实现
软件设计分为两部分,一部分为初始化设计,其中包括配置GPIO端口、中断配置和启动中断。另一部分为中断处理程序,包括外部中断0和外部中断6。
2.1 程序初始化
程序初始化主要完成中断设置并启动看门狗计数器功能:
2.2 中断“0”(1Hz中断)
1Hz中断处理程序:
在1Hz中断中接收时统时间信息,并进行加1秒处理和1000Hz中断计数器值置“0”,软件流程图如图2所示。
图2 1Hz中断软件流程图
2.3 中断“6”(1000Hz中断)
在中断“6”中主要完成产生时间的毫秒信息、接收编码器数据并收发经纬仪各分系统通信数据。
2.3.1 产生毫秒信息
毫秒产生程序:在1000Hz中断中根据1Hz同步信号后的1000Hz中断的个数(m_n1000)产生毫秒信息,毫秒(=1×m_n1000),软件流程如图3所示。
图3 1000Hz中断产生毫秒程序流程图
2.3.2 接收编码器数据并收/发其它各分系统数据
编码器在1000Hz到来时采集角度数据,并发送给数据通讯系统,数据完全传送至据通讯系统是在1000Hz信号后的560μs,因此数据通讯系统在1000Hz中断中,延时560μs接收编码器数据,此时接收的数据为当前1000Hz的经纬仪角度数据。
综上分析可知,在1000Hz中断中处理顺序为:产生时间毫秒→延时560μs→接收编码器数据→将时间信息和编码器数据编码打包→以系统规定帧频发送数据(低于或等于1000Hz且能整除1000)。在此能否实现精确延时是接收正确编码器数据的关键。
精确时延时由ARM处理器内置的Watchdog计数器产生[4]。具本方法为:设置看门狗工作在计数器方式下,在1000Hz中断开始时读取一次计数器值(WTCNT),然后通过不断读取该计数器值,得到相对开始时刻的运行时间,在达到程序所要求的延迟时间时,接收编码器数据。
看门狗的计数脉冲是由ARM处理器的PCLK时钟经两次可编程分频后得到[3]。对看门狗的操作,包括看门狗分频数和工作模式设定,由设定WTCON完成;对16位数据寄存器WTDAT编程完成设定看门狗超时值;在软件运行过程中,读取看门狗16位计数器WTCNT的当前计数值,计算两次读数之差可得到精确时间差。
看门狗计数器时钟周期:
看门狗定时周期:
式中:Prescaler_value为预分频比例器值,由WTCON位15:8设定;Division_factor为分频系数,由WTCON位4:3设定,可选择16、32、64或128。
PCLK为ARM处理器外围器件时钟,由ARM时钟控制逻辑产[4]。它与主时钟(FCLK)的关系由时钟分频控制寄存器CLKDIVN位2:0设定。主时钟频率与输入频率关系:
式中:fin为外部输入时钟频率,系统采用12MHz晶振;MDIV由MPLLCON(锁相环控制寄存器)位19:12设定;PDIV由MPLLCON位9:4设定,SDIV由MPLLCON位1:0设定,程序初始化:
MPLLCON=(127<<12)|(2<<4)|1;//利用公式
(3)可得FCLK=405MHz。
CLKDIVN=(2<<1)|1;//即 FCLK=HCLK:PCLK=1:4:8,所 以 PCLK=405MHz/8=50.625000 MHz。
在实际应用中设置Division_factor=16,设置Prescaler_value=(PCLK/1000000-1),由公式(1)计算看门狗计数器时钟周期为16μs,即计数器每差1,即差16μs。
程序初始化中启动看门狗计数器功能程序代码:
在程序初始化中设置好看门狗工作方式后,在1000Hz中断中实现相对1000Hz中断信号延时560μs接收编码器数据。接收编码器数据程序流程图如图4。
图4 1000Hz中断产生毫秒程序流程图
图4中之所以要先清接收编码器数据端口的接收缓存器,是保证读到的数据是当前1000Hz时刻的编码器数据。
处理完成时间信息和编码器数据后,可依据时间信息的毫秒值,完成对外 50Hz、100Hz、200Hz、500Hz、1000Hz的通讯。如100Hz通讯时,当毫秒值能被10整除时,即执行100Hz通讯程序。
3 设计结果
利用时间细分和看门狗精确时延设计,可在经纬仪上实现时间信息和编码器数据高帧频的数据合成,从而实现设备角度和时间信息与高速摄像机图像信息的数据匹配,完成经纬仪测姿需求。目前在某型号经纬仪上装有一款最高记录帧频400Hz的高速摄像机,系统指标要求为编码器发送数据帧频1200Hz,编码器发送数据波形如图5。通信系统向其它系统发送的编码器、时间信息合成数据包最高帧频400Hz,其设计依即为本文所述原理。通信系统要求提供1Hz和400Hz的同步信号,1Hz下降沿产生中断“0”,400Hz上升沿产生中断“6”。系统的两个中断信号波形如图6。
图5 1200Hz中断编码器通信数据
图6 1Hz和400Hz中断信号波形图
在1Hz中断接收时统时间信息,在400Hz中断中先清接收编码数据端口的接收缓存器,然后延时560μm接收编码器数据。依据系统要求,发送编码器与时间信息合成数据包的400Hz通信数据波形如图7。
此款数据通信系统通过实际应用证明时序设计合理,性能可靠,完全符合设计要求。
如若要求发送1000Hz编码器和时统时间合成数据包,则在设计中要求提供1Hz和1000Hz同步信号,并且提高通信波特率以便在1ms内完成数据的接收和发送。
图7 400Hz发送编码器与时间信息合成数据包波形
4 结论
利用时间细分和看门狗精确时延设计,可在经纬仪上实现时间信息和编码器数据高帧频的数据合成,从而实现设备信息与高速摄像机图像信息的数据匹配,完成经纬仪测姿需求。经在多型号经纬仪上应用,此种设计定时精度高,实现简单,针对不同经纬仪,在软件上稍做改动即可适用。
[1]高策,乔彦峰.光电经纬仪测量误差的实时修正[J].光学精密工程,2007,15(6):846-851.
[2]孙秋野,孙凯,冯健.ARM嵌入式系统开发典型模块[M].北京:人民邮电出版社,2007.
[3]陈思勤,吴秋新.ARM内核目标系统中的代码运行时间测试[J].单片机与嵌入式系统应用,2007(2):5-6.
[4]S3C2440A微处理器芯片用户手册[S].三星电子有限公司,2007.