王芳
(中國(guó)科學(xué)院長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,長(zhǎng)春 130033)
數(shù)據(jù)通訊系統(tǒng)是經(jīng)緯儀上各個(gè)處理器及控制器間數(shù)據(jù)交換的中心。要求數(shù)據(jù)通訊不僅能實(shí)時(shí)接收經(jīng)緯儀上各分系統(tǒng)的通信數(shù)據(jù),而且還要將實(shí)時(shí)性和同步性要求很強(qiáng)的系統(tǒng)(如編碼器和時(shí)間信息)的數(shù)據(jù)在打包發(fā)送給其它系統(tǒng)時(shí),數(shù)據(jù)包中的數(shù)據(jù)為同一時(shí)間點(diǎn)的數(shù)據(jù)。因此,數(shù)據(jù)通信系統(tǒng)須按一定的通訊時(shí)序進(jìn)行接收和發(fā)送數(shù)據(jù),這就是時(shí)序控制,是經(jīng)緯數(shù)據(jù)通信系統(tǒng)最重要的指標(biāo)。
目前作為靶場(chǎng)主要測(cè)量設(shè)備之一的光電經(jīng)緯儀,其測(cè)量方向不僅僅局限于對(duì)目標(biāo)彈道的測(cè)量,目標(biāo)姿態(tài)測(cè)量在靶場(chǎng)測(cè)量中也越來(lái)越占據(jù)重要位置?,F(xiàn)在許多型號(hào)的光電經(jīng)緯儀都裝有高幀頻CMOS攝像機(jī)用于記錄目標(biāo)的瞬間變化信息,以完成對(duì)目標(biāo)姿態(tài)的測(cè)量。目前通用的高幀頻攝像機(jī),往往只能外接標(biāo)準(zhǔn)的B碼時(shí)間信息(交流碼或直流碼),并記錄下每幀圖像的拍攝時(shí)間,對(duì)另一個(gè)重要測(cè)量信息—編碼器信息卻不能記錄,只能依靠計(jì)算機(jī)將對(duì)應(yīng)的時(shí)間信息和編碼器信息記錄下來(lái),在拍攝完成后,依據(jù)圖像的時(shí)間信息找到對(duì)應(yīng)的編碼器信息。數(shù)據(jù)通信系統(tǒng)需按照攝像機(jī)拍攝頻率,接收編碼器信息,并將相對(duì)應(yīng)的時(shí)間信息一起打包發(fā)送至記錄數(shù)據(jù)分系統(tǒng)。現(xiàn)在高速攝像機(jī)最高工作頻率一般設(shè)計(jì)為1000Hz,基于這種設(shè)計(jì)研制了基于S3C2440的高頻數(shù)據(jù)通信系統(tǒng)。其工作最高頻率1000Hz(可更高),且可根據(jù)攝像機(jī)工作幀頻而改變收/發(fā)數(shù)據(jù)幀頻。
光電經(jīng)緯儀在捕捉目標(biāo)圖像的同時(shí),能夠?qū)崟r(shí)記錄精確的測(cè)角信息,并通過(guò)事后目標(biāo)圖像的判讀處理,得出目標(biāo)精確的中軸偏移量,進(jìn)而疊加計(jì)算出更為精確的測(cè)角值[1]。因此,圖像信息、時(shí)間信息和角度信息是光電經(jīng)緯儀記錄的三大重要信息。安裝有高速攝像機(jī)的某型號(hào)光電經(jīng)緯儀工作參數(shù):(1)高速攝像機(jī)拍攝幀頻:1000Hz;(2)編碼器:處理幀頻1000Hz;(3)時(shí)統(tǒng)終端:最高處理幀頻200Hz。
由于時(shí)統(tǒng)終端的處理速度最高只能達(dá)到200Hz,要想給1000Hz的編碼器數(shù)據(jù)加上時(shí)標(biāo),需對(duì)時(shí)間信息進(jìn)行細(xì)分處理,產(chǎn)生對(duì)應(yīng)1000H編碼器數(shù)據(jù)的時(shí)間信息。
編碼器信息由編碼器系統(tǒng)以1000Hz同步信號(hào)為基準(zhǔn),對(duì)角度進(jìn)行檢測(cè),并以一定的編碼格式將角度信息發(fā)送到數(shù)據(jù)通信系統(tǒng)。1000Hz的角度信息是在1000Hz同步信號(hào)后560μs完全發(fā)送到數(shù)據(jù)通訊系統(tǒng),因此數(shù)據(jù)通訊系統(tǒng)應(yīng)該在1000Hz同步信號(hào)后560μs接收編碼器數(shù)據(jù),并與1000Hz采樣點(diǎn)的時(shí)間信息一同打包,形成同一時(shí)間點(diǎn)的角度—時(shí)間測(cè)量數(shù)據(jù)包,供事后與圖像信息一同組成完整的經(jīng)緯儀測(cè)量數(shù)據(jù)。
時(shí)統(tǒng)終端最高處理速度為200Hz,不能滿足1000Hz數(shù)據(jù)頻頻要求。設(shè)計(jì)時(shí),要求時(shí)統(tǒng)終端提供1Hz的時(shí)間信息,并提供1Hz和1000Hz同步信號(hào),數(shù)據(jù)通訊系統(tǒng)以1Hz和1000Hz同步信號(hào)為基準(zhǔn)產(chǎn)生毫秒時(shí)間信息。
設(shè)計(jì)1Hz脈沖信號(hào)啟動(dòng)一個(gè)外部中斷,并在這個(gè)中斷中接收1Hz的時(shí)間信息,此時(shí)間信息是對(duì)應(yīng)上一個(gè)1Hz的時(shí)間信息,因此需對(duì)對(duì)時(shí)間信息進(jìn)行“+1秒”處理。
設(shè)計(jì)1000Hz脈沖信號(hào)啟動(dòng)另個(gè)一個(gè)外部中斷,在中斷中根據(jù)相對(duì)1Hz中斷后產(chǎn)生1000Hz中斷的個(gè)數(shù),產(chǎn)生毫秒信息。1000Hz計(jì)數(shù)在1Hz中斷中清為零,每1Hz中斷間隔共產(chǎn)生1000個(gè)1000Hz中斷。根據(jù)設(shè)計(jì)原理,要求系統(tǒng)響應(yīng)完1Hz中斷后,響應(yīng)1Hz后的第一個(gè)1000Hz中斷,這種響應(yīng)中斷先后順序是保證產(chǎn)生正確毫秒值的關(guān)鍵。
數(shù)據(jù)通訊系統(tǒng)的主控制器S3C2440,其24個(gè)外部中斷可配置引起中斷的信號(hào)模式為電平觸發(fā)或沿觸發(fā),并可配置極性[2],在外部中斷寄存(EXTINT)中進(jìn)行設(shè)置。時(shí)統(tǒng)終端提供的1Hz同步信號(hào)和1000Hz同步信號(hào)格式如圖1所示。
圖1 1Hz同步信號(hào)和1000Hz同步信號(hào)的格式
可以設(shè)置1Hz中斷為下降沿產(chǎn)生中斷,與S3C2440的外部中斷0(EINT0)連接,1000Hz中斷為上升沿產(chǎn)生中斷,與S3C2440的外部中斷6(EINT6)連接,兩個(gè)中斷相差1個(gè)脈沖寬度時(shí)間,如此設(shè)計(jì)保證了兩個(gè)中斷的時(shí)序安排。
軟件設(shè)計(jì)分為兩部分,一部分為初始化設(shè)計(jì),其中包括配置GPIO端口、中斷配置和啟動(dòng)中斷。另一部分為中斷處理程序,包括外部中斷0和外部中斷6。
程序初始化主要完成中斷設(shè)置并啟動(dòng)看門狗計(jì)數(shù)器功能:
1Hz中斷處理程序:
在1Hz中斷中接收時(shí)統(tǒng)時(shí)間信息,并進(jìn)行加1秒處理和1000Hz中斷計(jì)數(shù)器值置“0”,軟件流程圖如圖2所示。
圖2 1Hz中斷軟件流程圖
在中斷“6”中主要完成產(chǎn)生時(shí)間的毫秒信息、接收編碼器數(shù)據(jù)并收發(fā)經(jīng)緯儀各分系統(tǒng)通信數(shù)據(jù)。
2.3.1 產(chǎn)生毫秒信息
毫秒產(chǎn)生程序:在1000Hz中斷中根據(jù)1Hz同步信號(hào)后的1000Hz中斷的個(gè)數(shù)(m_n1000)產(chǎn)生毫秒信息,毫秒(=1×m_n1000),軟件流程如圖3所示。
圖3 1000Hz中斷產(chǎn)生毫秒程序流程圖
2.3.2 接收編碼器數(shù)據(jù)并收/發(fā)其它各分系統(tǒng)數(shù)據(jù)
編碼器在1000Hz到來(lái)時(shí)采集角度數(shù)據(jù),并發(fā)送給數(shù)據(jù)通訊系統(tǒng),數(shù)據(jù)完全傳送至據(jù)通訊系統(tǒng)是在1000Hz信號(hào)后的560μs,因此數(shù)據(jù)通訊系統(tǒng)在1000Hz中斷中,延時(shí)560μs接收編碼器數(shù)據(jù),此時(shí)接收的數(shù)據(jù)為當(dāng)前1000Hz的經(jīng)緯儀角度數(shù)據(jù)。
綜上分析可知,在1000Hz中斷中處理順序?yàn)椋寒a(chǎn)生時(shí)間毫秒→延時(shí)560μs→接收編碼器數(shù)據(jù)→將時(shí)間信息和編碼器數(shù)據(jù)編碼打包→以系統(tǒng)規(guī)定幀頻發(fā)送數(shù)據(jù)(低于或等于1000Hz且能整除1000)。在此能否實(shí)現(xiàn)精確延時(shí)是接收正確編碼器數(shù)據(jù)的關(guān)鍵。
精確時(shí)延時(shí)由ARM處理器內(nèi)置的Watchdog計(jì)數(shù)器產(chǎn)生[4]。具本方法為:設(shè)置看門狗工作在計(jì)數(shù)器方式下,在1000Hz中斷開(kāi)始時(shí)讀取一次計(jì)數(shù)器值(WTCNT),然后通過(guò)不斷讀取該計(jì)數(shù)器值,得到相對(duì)開(kāi)始時(shí)刻的運(yùn)行時(shí)間,在達(dá)到程序所要求的延遲時(shí)間時(shí),接收編碼器數(shù)據(jù)。
看門狗的計(jì)數(shù)脈沖是由ARM處理器的PCLK時(shí)鐘經(jīng)兩次可編程分頻后得到[3]。對(duì)看門狗的操作,包括看門狗分頻數(shù)和工作模式設(shè)定,由設(shè)定WTCON完成;對(duì)16位數(shù)據(jù)寄存器WTDAT編程完成設(shè)定看門狗超時(shí)值;在軟件運(yùn)行過(guò)程中,讀取看門狗16位計(jì)數(shù)器WTCNT的當(dāng)前計(jì)數(shù)值,計(jì)算兩次讀數(shù)之差可得到精確時(shí)間差。
看門狗計(jì)數(shù)器時(shí)鐘周期:
看門狗定時(shí)周期:
式中:Prescaler_value為預(yù)分頻比例器值,由WTCON位15:8設(shè)定;Division_factor為分頻系數(shù),由WTCON位4:3設(shè)定,可選擇16、32、64或128。
PCLK為ARM處理器外圍器件時(shí)鐘,由ARM時(shí)鐘控制邏輯產(chǎn)[4]。它與主時(shí)鐘(FCLK)的關(guān)系由時(shí)鐘分頻控制寄存器CLKDIVN位2:0設(shè)定。主時(shí)鐘頻率與輸入頻率關(guān)系:
式中:fin為外部輸入時(shí)鐘頻率,系統(tǒng)采用12MHz晶振;MDIV由MPLLCON(鎖相環(huán)控制寄存器)位19:12設(shè)定;PDIV由MPLLCON位9:4設(shè)定,SDIV由MPLLCON位1:0設(shè)定,程序初始化:
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。
在實(shí)際應(yīng)用中設(shè)置Division_factor=16,設(shè)置Prescaler_value=(PCLK/1000000-1),由公式(1)計(jì)算看門狗計(jì)數(shù)器時(shí)鐘周期為16μs,即計(jì)數(shù)器每差1,即差16μs。
程序初始化中啟動(dòng)看門狗計(jì)數(shù)器功能程序代碼:
在程序初始化中設(shè)置好看門狗工作方式后,在1000Hz中斷中實(shí)現(xiàn)相對(duì)1000Hz中斷信號(hào)延時(shí)560μs接收編碼器數(shù)據(jù)。接收編碼器數(shù)據(jù)程序流程圖如圖4。
圖4 1000Hz中斷產(chǎn)生毫秒程序流程圖
圖4中之所以要先清接收編碼器數(shù)據(jù)端口的接收緩存器,是保證讀到的數(shù)據(jù)是當(dāng)前1000Hz時(shí)刻的編碼器數(shù)據(jù)。
處理完成時(shí)間信息和編碼器數(shù)據(jù)后,可依據(jù)時(shí)間信息的毫秒值,完成對(duì)外 50Hz、100Hz、200Hz、500Hz、1000Hz的通訊。如100Hz通訊時(shí),當(dāng)毫秒值能被10整除時(shí),即執(zhí)行100Hz通訊程序。
利用時(shí)間細(xì)分和看門狗精確時(shí)延設(shè)計(jì),可在經(jīng)緯儀上實(shí)現(xiàn)時(shí)間信息和編碼器數(shù)據(jù)高幀頻的數(shù)據(jù)合成,從而實(shí)現(xiàn)設(shè)備角度和時(shí)間信息與高速攝像機(jī)圖像信息的數(shù)據(jù)匹配,完成經(jīng)緯儀測(cè)姿需求。目前在某型號(hào)經(jīng)緯儀上裝有一款最高記錄幀頻400Hz的高速攝像機(jī),系統(tǒng)指標(biāo)要求為編碼器發(fā)送數(shù)據(jù)幀頻1200Hz,編碼器發(fā)送數(shù)據(jù)波形如圖5。通信系統(tǒng)向其它系統(tǒng)發(fā)送的編碼器、時(shí)間信息合成數(shù)據(jù)包最高幀頻400Hz,其設(shè)計(jì)依即為本文所述原理。通信系統(tǒng)要求提供1Hz和400Hz的同步信號(hào),1Hz下降沿產(chǎn)生中斷“0”,400Hz上升沿產(chǎn)生中斷“6”。系統(tǒng)的兩個(gè)中斷信號(hào)波形如圖6。
圖5 1200Hz中斷編碼器通信數(shù)據(jù)
圖6 1Hz和400Hz中斷信號(hào)波形圖
在1Hz中斷接收時(shí)統(tǒng)時(shí)間信息,在400Hz中斷中先清接收編碼數(shù)據(jù)端口的接收緩存器,然后延時(shí)560μm接收編碼器數(shù)據(jù)。依據(jù)系統(tǒng)要求,發(fā)送編碼器與時(shí)間信息合成數(shù)據(jù)包的400Hz通信數(shù)據(jù)波形如圖7。
此款數(shù)據(jù)通信系統(tǒng)通過(guò)實(shí)際應(yīng)用證明時(shí)序設(shè)計(jì)合理,性能可靠,完全符合設(shè)計(jì)要求。
如若要求發(fā)送1000Hz編碼器和時(shí)統(tǒng)時(shí)間合成數(shù)據(jù)包,則在設(shè)計(jì)中要求提供1Hz和1000Hz同步信號(hào),并且提高通信波特率以便在1ms內(nèi)完成數(shù)據(jù)的接收和發(fā)送。
圖7 400Hz發(fā)送編碼器與時(shí)間信息合成數(shù)據(jù)包波形
利用時(shí)間細(xì)分和看門狗精確時(shí)延設(shè)計(jì),可在經(jīng)緯儀上實(shí)現(xiàn)時(shí)間信息和編碼器數(shù)據(jù)高幀頻的數(shù)據(jù)合成,從而實(shí)現(xiàn)設(shè)備信息與高速攝像機(jī)圖像信息的數(shù)據(jù)匹配,完成經(jīng)緯儀測(cè)姿需求。經(jīng)在多型號(hào)經(jīng)緯儀上應(yīng)用,此種設(shè)計(jì)定時(shí)精度高,實(shí)現(xiàn)簡(jiǎn)單,針對(duì)不同經(jīng)緯儀,在軟件上稍做改動(dòng)即可適用。
[1]高策,喬彥峰.光電經(jīng)緯儀測(cè)量誤差的實(shí)時(shí)修正[J].光學(xué)精密工程,2007,15(6):846-851.
[2]孫秋野,孫凱,馮健.ARM嵌入式系統(tǒng)開(kāi)發(fā)典型模塊[M].北京:人民郵電出版社,2007.
[3]陳思勤,吳秋新.ARM內(nèi)核目標(biāo)系統(tǒng)中的代碼運(yùn)行時(shí)間測(cè)試[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(2):5-6.
[4]S3C2440A微處理器芯片用戶手冊(cè)[S].三星電子有限公司,2007.