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

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

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

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

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

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

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

圖6 編碼器輸出異常
該文在基于硬件優化的基礎上,進行了軟件消抖和防止丟包流程的改進,經多次系統試驗驗證,編碼器旋轉過程中系統響應正常,測試波形如圖7所示。

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