惠 進(jìn),施文杰,王 譚,王俊林,王馬強(qiáng),吳 斌
(1.西安應(yīng)用光學(xué)研究所,陜西西安 710065;2.湖南興川信息科技有限公司,湖南長沙 410000)
某瞄鏡系統(tǒng)依靠多傳感器獲取目標(biāo)和環(huán)境參數(shù)信息,并規(guī)律地疊加在OLED 屏上進(jìn)行顯示。由于需要將豐富的目標(biāo)和環(huán)境信息完整地顯示在尺寸有限的屏上,所以需要將信息進(jìn)行分級顯示,按照使用需求獲得并查看各種參數(shù)信息。考慮到瞄鏡系統(tǒng)小體積、低功耗的要求,采用HI3519 作為信息綜合處理平臺。利用回轉(zhuǎn)型編碼器進(jìn)行人機(jī)交互設(shè)備的輸入控制、各級菜單間的切換和展開顯示,但在系統(tǒng)調(diào)試中發(fā)現(xiàn),旋轉(zhuǎn)編碼器時(shí)常出現(xiàn)響應(yīng)異常的現(xiàn)象,包括未及時(shí)響應(yīng)以及因信號抖動引起的異常響應(yīng)。該文從研究編碼器特性入手,對與編碼器相關(guān)的硬軟件設(shè)計(jì)進(jìn)行了改進(jìn)優(yōu)化。
RE08 型回轉(zhuǎn)編碼器分為進(jìn)行編碼的部分和按鍵部分,進(jìn)行編碼的部分有A、B、C 三個(gè)引腳,按鍵部分有SW、E 引腳。通過比較A、B 引腳輸出方波的相位差判斷旋轉(zhuǎn)方向。當(dāng)編碼器正向旋轉(zhuǎn)時(shí),A 腳輸出比B 腳輸出超前四分之一個(gè)周期;當(dāng)編碼器反向旋轉(zhuǎn)時(shí),B 腳輸出比A 腳輸出超前四分之一個(gè)周期,A、B 引腳輸出方波的相位差為90°±45°,如圖1 所示。編碼器的A 相或B 相每輸出一個(gè)脈沖,表示編碼器旋轉(zhuǎn)了一個(gè)固定角度,意味著此時(shí)綜合處理系統(tǒng)將收到一個(gè)信號切換指令。

圖1 編碼器正反向特性
鑒于該瞄鏡系統(tǒng)需要進(jìn)行多個(gè)傳感器信息處理、實(shí)現(xiàn)多級任務(wù)調(diào)度以及低功耗的要求,原設(shè)計(jì)選擇了華為海思HI3519 作為核心處理平臺。該芯片采用12 nm 先進(jìn)低功耗工藝和低功耗架構(gòu)進(jìn)行設(shè)計(jì),除了具備高清音視頻編解碼功能,是一款智能圖像處理器外,其豐富的外設(shè)接口也為系統(tǒng)處理離散量提供了充足的支持[1-5]。
RE08 型回轉(zhuǎn)編碼器用于該瞄鏡系統(tǒng)中OLED 屏上疊加的主菜單的展開和各級子菜單間的切換、確認(rèn)及返回等命令的執(zhí)行。該編碼器方案主要基于海思HI3519AV100 處理器平臺進(jìn)行設(shè)計(jì),用于人機(jī)交互設(shè)備的輸入控制,通過采用海思處理器檢測其旋轉(zhuǎn)時(shí)產(chǎn)生的脈沖信號來判斷編碼開關(guān)的狀態(tài)[6-10]。硬件設(shè)計(jì)上,把編碼器的A、B、SW 引腳連接至海思處理器的外部中斷管腳,通過中斷觸發(fā)旋轉(zhuǎn)事件與確認(rèn)事件,實(shí)現(xiàn)編碼器與瞄鏡系統(tǒng)的指令交互。
為采集到編碼器信號,將編碼器信號輸出端和海思處理器的GPIO 模塊相連,編碼器的出線通過J17 連接器接入綜合處理板內(nèi),其中A、B、SW 端分別通 過10 kΩ 電阻上拉至VCC(VCC 上拉電源支持1.8 V,3.3 V 和5.0 V),E、C 端子接地。編碼器前端預(yù)處理電路如圖2 所示。

圖2 編碼器前端預(yù)處理電路
由于編碼器在其旋轉(zhuǎn)過程中觸點(diǎn)接觸時(shí)存在機(jī)械抖動,導(dǎo)致在產(chǎn)生脈沖信號時(shí)偶爾會產(chǎn)生信號抖動,對信號檢測產(chǎn)生干擾,所以必須采取有效的方法抑制編碼開關(guān)旋轉(zhuǎn)時(shí)的抖動。為了消除編碼器抖動,添加RC 濾波電路以去除編碼器抖動和毛刺[11-13]。
RC 低通濾波器利用電容通高頻阻低頻的原理。對于需要截止的高頻,利用電容吸收的方法防止它通過;對于需要放行的低頻,利用電容高阻的特點(diǎn)讓它通過。RC 低通濾器截止頻率計(jì)算方法如式(1)所示:
RE08型回轉(zhuǎn)編碼器的信號頻率范圍是0~500 Hz,為確保有用信號在通帶不產(chǎn)生過于不平衡的衰減,設(shè)計(jì)了一個(gè)截止頻率約為720 Hz 的低通濾波器,選擇R=100 Ω,C=2.2 μF即可滿足使用要求,以濾除編碼器的高頻抖動。
濾波后的編碼器信號直接引入CPU 的GPIO 引腳,編碼器信號與HI3519 端的連接如圖3 所示。CPU 進(jìn)行數(shù)字濾波后再對信號進(jìn)行數(shù)據(jù)處理,從而判斷編碼器的左旋、右旋和確認(rèn)。

圖3 編碼器信號與HI3519端連接
該瞄鏡系統(tǒng)中對編碼器指令的判讀是通過海思處理器檢測編碼器旋轉(zhuǎn)時(shí)產(chǎn)生脈沖信號時(shí)沿的前后來判斷編碼開關(guān)是左旋、右旋還是確認(rèn)。根據(jù)編碼器的特性可見,要保證編碼開關(guān)信號檢測的可靠性,就必須避免編碼開關(guān)信號抖動引起的影響,即需要通過優(yōu)化軟件設(shè)計(jì)消除信號抖動的影響。
此外,由于先前的軟件設(shè)計(jì)是將編碼器A、B 引腳分別連接至海思處理器的GPIO 端,這樣的輪詢方式由于驅(qū)動不完善,除了占用較多CPU 資源外,還易出現(xiàn)丟數(shù)現(xiàn)象。因此改進(jìn)后的軟件設(shè)計(jì)基于中斷服務(wù)事件,由于中斷方式實(shí)時(shí)性高[14-16],所以采取這種方式獲取編碼器的旋轉(zhuǎn)方向和按鍵信息,能夠防止丟數(shù)現(xiàn)象的發(fā)生。
結(jié)合以上兩點(diǎn),編碼器軟件部分的整個(gè)工作流程設(shè)計(jì)為采用中斷口檢測編碼開關(guān)信號,將A、B 腳其中一個(gè)引腳接到海思處理器的中斷口,另一個(gè)引腳接到海思處理器的GPIO 口,編碼開關(guān)旋轉(zhuǎn)時(shí)中斷口出現(xiàn)上升沿或下降沿信號時(shí),CPU 會產(chǎn)生中斷,程序進(jìn)入中斷處理函數(shù),隨即在中斷處理函數(shù)中判斷另一個(gè)引腳的電平,即可確定編碼開關(guān)的旋轉(zhuǎn)方向。轉(zhuǎn)向判別軟件規(guī)劃流程如圖4 所示。

圖4 編碼器轉(zhuǎn)向判別軟件流程
流程中定時(shí)15 ms 是為了在軟件層面消除編碼器信號抖動,為進(jìn)行編碼器轉(zhuǎn)向判別提供穩(wěn)定的狀態(tài)前提。
依據(jù)編碼器的特性,將處理器連接編碼器A 引腳與編碼器SW 引腳的GPIO 設(shè)置為外部中斷,用于左旋、右旋與確認(rèn)按鍵的觸發(fā),將處理器連接編碼器B 的GPIO 引腳設(shè)置為普通引腳輸入,用于獲取左旋、右旋的狀態(tài)。表1 所示為編碼器旋轉(zhuǎn)狀態(tài)的判斷。

表1 旋轉(zhuǎn)編碼器狀態(tài)判斷
根據(jù)表1 進(jìn)行左旋與右旋的判斷,滿足右旋的條件即上報(bào)右旋事件,滿足左旋的條件即上報(bào)左旋事件。
部分程序設(shè)計(jì)如下:
其中,key1、key2 對應(yīng)A、B 兩個(gè)引腳的電平狀態(tài),KEY_A 代表右旋,KEY_B 代表左旋。同樣,對于編碼器確認(rèn)按鍵的處理依照普通按鍵,下降沿中斷觸發(fā)后,通過判斷按鍵的IO 狀態(tài)上報(bào)按鍵事件。
當(dāng)編碼器有操作事件時(shí),海思處理器響應(yīng)了編碼器事件,瞄鏡系統(tǒng)的綜合管理軟件將由軟件決策層進(jìn)入軟件應(yīng)用層,即調(diào)用編碼器的狀態(tài)值,反映在面向用戶的對應(yīng)交互界面的動作上,實(shí)現(xiàn)該瞄鏡系統(tǒng)上層的人機(jī)交互控制。首先創(chuàng)建旋轉(zhuǎn)編碼器檢測線程,打開編碼器事件;然后以10 ms 周期輪詢編碼器左旋、右旋和確認(rèn)三種狀態(tài)。當(dāng)檢測到狀態(tài)(左旋)改變一次時(shí),生成(左旋)鍵值,并進(jìn)行相應(yīng)(左旋)鍵值功能操作,該過程表示一次動作完成。繼續(xù)輪詢編碼器狀態(tài),檢測下次狀態(tài)的改變,周期重復(fù)該操作。
針對編碼器不同操作會生成相應(yīng)鍵值,分為編碼器右旋、編碼器左旋和編碼器確認(rèn)。以電視/紅外電子變倍為例,調(diào)用編碼器狀態(tài)的不同判決結(jié)果,瞄鏡系統(tǒng)顯示界面上會進(jìn)行對應(yīng)的切換動作。
若界面顯示“菜單退出”,當(dāng)編碼器右旋時(shí),進(jìn)入“電視/紅外電子變倍”狀態(tài);當(dāng)主菜單是顯示狀態(tài)時(shí),如果右旋,電視亮度增加,當(dāng)電視亮度增大為100時(shí),則置為0;同樣,右旋也會增加電視對比度和電視銳度,當(dāng)對比度增大為100 時(shí),則置為0;當(dāng)銳度增大為15 時(shí),銳度置為0。編碼器右旋對應(yīng)的“電視/紅外電子變倍”狀態(tài)如圖5 所示。

圖5 編碼器右旋對應(yīng)的“電視/紅外電子變倍”狀態(tài)
當(dāng)瞄鏡系統(tǒng)顯示界面上顯示“電視/紅外電子變倍”狀態(tài)時(shí),若編碼器左旋,且電視亮度、對比度、銳度值大于0,則每左旋一次,電視亮度、對比度、銳度值會逐步減小。
采用HI3519 作為某瞄鏡系統(tǒng)的綜合處理平臺,利用回轉(zhuǎn)型編碼器進(jìn)行人機(jī)交互設(shè)備的輸入控制,但在調(diào)試中發(fā)現(xiàn),旋轉(zhuǎn)編碼器時(shí)常出現(xiàn)響應(yīng)異常的現(xiàn)象,如圖6 所示。即用示波器兩個(gè)表筆分別夾住編碼器的A、B 引腳,雖然旋轉(zhuǎn)編碼器執(zhí)行了旋轉(zhuǎn)動作,但波形圖上A、B 兩引腳無相位差,即沒有產(chǎn)生有效的旋轉(zhuǎn)事件。

圖6 編碼器輸出異常
該文在基于硬件優(yōu)化的基礎(chǔ)上,進(jìn)行了軟件消抖和防止丟包流程的改進(jìn),經(jīng)多次系統(tǒng)試驗(yàn)驗(yàn)證,編碼器旋轉(zhuǎn)過程中系統(tǒng)響應(yīng)正常,測試波形如圖7所示。

圖7 編碼器響應(yīng)正常波形
某瞄鏡系統(tǒng)采用HI3519 作為信息綜合處理平臺,選用回轉(zhuǎn)型編碼器來實(shí)現(xiàn)界面信息的分級顯示和參數(shù)調(diào)度。因在調(diào)試中發(fā)現(xiàn)系統(tǒng)常發(fā)生編碼器響應(yīng)異常的現(xiàn)象,經(jīng)過分析編碼器特性,優(yōu)化了編碼器事件的硬件通路和軟件流程,在多次使用系統(tǒng)中編碼器事件指令響應(yīng)正常,極大提高了瞄鏡系統(tǒng)中界面參數(shù)人機(jī)交互的響應(yīng)可靠性。