??????? 1? 微型光學手指導航模組簡介
微型光學手指導航模組,集感應測量光路、微型機械構造和數字/模擬微電子集成電路于一體,是高度微型化的機電一體化人機輸入模塊。
?
1.1? 工作原理
OFN模組,通常由紅外LED光源、遮光觸摸面板、光學透鏡組和具有光敏陣列的片上處理/控制芯片組成,一般制作在便于集成應用的柔性線路FPC(Flexible Printing Circuit)板上。常用的OFNFPC,還集成了表面按鍵,即所說的“鍋仔片(Metal Dome Switch)”,以簡單地實現“點擊確認”的功能。
OFN模組的工作原理如下:手指接觸遮光觸摸面板,光敏陣列檢測到有目標活動,喚醒片上系統SoC投入正常工作狀態,紅外LED發光,啟動檢測光路,通過光學透鏡組的折射和聚焦,由光敏陣列得到一幕一幕的圖像數據信息;SoC從中抽象出不同的運動矢量MV(Motion Vector),進而根據運動矢量在時間和空間上的相關性,計算出每次手指移動的平面相對量,形成運動數據,并及時通過數據接口向外傳輸出去。手指移出后,光敏陣列通過檢測還可以使SoC轉入休眠狀態,以節省功耗。
遮光觸摸面板,需要能夠應對強光輻射干擾及外界濕度變化影響。
運動相關性的判斷與計算是OFN的核心,通常沿用光電鼠標中成熟的簡化的13點、9點、7點或5點運動預測算法。還可以對得到的一系列數據,展開進一步的分析計算,得到“點擊”、“雙擊”、“拖動”等伴隨信息,進而實現傳統鼠標的各種功能。
OFN形成的數據信息一般包括兩類:控制信息和運動信息。控制信息指示是否運動、點擊、雙擊、拖動等,運動信息即平面的X方向與Y方向相對位移量。
1.2? 技術特征
從應用角度概括起來,OFN的性能特征如下:
① 超薄超小設計。通常,外形面積在10 mm×10 mm以內,有效感光孔徑在1.5 mm×1.5 mm以內,厚度在2?8~5?1 mm,也有2 mm厚度的OFN推出。
② 極低功耗設計。工作電流在2~16 mA,通常為3 mA;待機電流為80~150 μA,大多數器件為100 μA。
③ 直流供電需求。2.6~5.0 V范圍,常用為2.8 V工作電壓,正在朝自適應、更低的電源供應發展。
④ 靈活的多接口支持。可以通過常規數字接口I2C(InterIntegrated Circuit)或SPI(Serial Peripheral Interface)上傳數據或接受主機配置,也有PS2鼠標接口或USB接口的;可以以中斷方式向主機隨時提示需要信息輸入;可以通過復位和開關的形式接受主機統一調度。
⑤ 可選或自適應的光敏陣列分辨率,200~1250 CPI(Dots Per Inch)通常為800CPI。
⑥ 位移數據設置。通常為8位補碼格式。
⑦ 優良的EMC/EMI設計,2 kV以上的ESD(ElectroStatic Discharge)能力。
1.3? 產品化應用
OFN一經推出,就得到了迅速應用,特別是各種各樣的手機,無論是廉價的功能手機(feature phone)還是高性能的3G(3rd?Generation)智能手機(smart phone),無論是Nucleus MTK、ThreadX?展迅、Symbian體系還是Windows Mobile、ARMLinux/Android、MACOSXiPhone體系,如Samsung的i329/728/780/788/908/8510、Nokia的E72/N900、BlackBerry的8520/9700、LG的ks500/kt500、SonyEricsson的X1/X2/X3、Sharp的SH8020C、中興的X60等,不勝枚舉。
另外,在MID(Mobile Internet Devices)/MPC(Multimedia Personal Computer)/上網本、GPS導航、PMP(Portable Media Player)娛樂、數碼相機/攝像機等大眾化產品中,也在不斷地得到廣泛應用。不著重考慮成本和功耗的工農業過程控制、儀表儀器設備等行業領域,也在悄然進行OFN的擴展應用。
OFN應用前景十分壯觀,需求推動著OFN的應用,應用促進著OFN的不斷完善發展。
2? 微型光學手指導航模組開發
2.1? 應用器件選型
不少半導體公司進行了OFN器件及其模組的研發與生產,如Avago的ABDSA320、ST的VD5376、ATLab的ATA2188MOF與MOA器件及其FO1R/FO3R/SMID/AP33M2I/P模組、CrucialTec的CT01~27系列模組、Apexone的A2815器件及其AMF813模組、Mitsumi的SFN11LE與SFN11GU等。特別值得一提的是SFN11GU,模組超薄化已經達到了2 mm。很多光電半導體公司采用現有的OFN器件生產不同規格的OFN模組系列產品,如科特通信、世紀芯成、合盈光電等。
選擇OFN器件或模組,需要考慮的主要因素有:形體大小、功率消耗、電源供給和硬件接口。形體方面更關心的是厚度,越薄越適宜便攜式消費產品,當然成本也會越高。便攜式消費產品的應用,特別注重形體、功耗和電源供應,通常形體小巧、工作與待機電流小和可以更低電壓供電的OFN器件或模組更受青睞。工農業過程控制、儀表儀器設備等行業應用,則更多考慮的是OFN器件或模組的穩定高效、連接方便和EMI/EMC/ESD能力。
這里重點說明一下OFN的復合功能,導航及實時手指觸控與位移檢測是OFN的基本功能,由此衍生OFN的復合功能包括:點擊、雙擊、拖動、滾屏、翻頁、卷屏等。通常采用的OFN器件,僅有基本導航功能。為適合常用的“點擊確認”需求,構成OFN模組時,常常在其FPC下附帶微型的“鍋仔片”機械按鍵,已經能夠滿足大多數應用場合了,非常經濟。一些OFN,則直接把常用的點擊、雙擊、拖動等簡單的復合功能集成在器件內,把滾屏、翻頁、卷屏等復雜的復合功能設計成規范API函數庫,供OFN器件或模組用戶在具體的應用系統的上層軟件中自由按需添加,CrucialTec的部分CTxx系列OFN模組就是如此。
2.2? 硬件體系設計
① 數字I/O接口的連接,主要考慮3個方面。
◆? I/O接口的連接。增加10~50 Ω限流電阻加以實現,特別是電壓規格不同的情形。
◆? 電磁干擾的抑制。可以通過瓷片電容與限流電阻構成簡潔的RC濾波電路加以實現。
◆? 驅動能力的增強。可以通過上拉電阻簡單加以實現。
②? 供給電源的去噪濾波可以選用鉭電容與瓷片電容,簡單加以實現。
圖1給出了一種典型的OFN模組硬件電路設計,其中Mode用于選擇I2C或SPI總線形式,INT為對外的實時中斷信號,#RST和#ShtDwn為主機的復位和開關控制端口,I2C信號為SCK與SDA,SPI信號為SCK、RxD、TxD和#CS。
圖1? OFN的硬件電路設計示意圖
對于抗干擾、驅動和適應能力強大的OFN器件,可以不考慮濾波、限流和上拉電阻,具體情況應視所選用的OFN模組的性能和電路設計需求而定。電路設計時需要注意參考廠家的推薦電路及其器件參數與相關的估算公式,特別是PCB或FPC的印制板設計。
2.3? 軟件體系設計
OFN模組,作為一種新興的人機輸入微型接口設備,一般是以片外設備的身份,加入到以各類微處理器為核心的嵌入式應用系統中的,嵌入式微處理器軟件體系必需實現對OFN模組的驅動才能及時地從中得到來自OFN的各種信息。
OFN模組的驅動程序主要包括3部分:初始配置、過程變化控制和數據的收發傳輸。初始配置完成對OFN光敏分辨率、休眠方式、連續中斷間隔等項的設置,如果不進行初始配置,OFN則按默認配置工作。過程變化控制用于主機對OFN的開關、復位及其工作參數變化的控制。數據收發傳輸是OFN的常規行為,只要有手指觸控,OFN就會以一定的時間間隔按中斷的形式通知主機系統。可以采用中斷或查詢的方式實時地從OFN中獲取手指的觸控輸入信息。查詢操作往往需要使用周期定時器,在定時中斷中查詢并獲取必要的OFN數據。從這層意義上講,查詢方式也是一類中斷方式。主機可以在外部事件中斷或定時中斷服務中,通過I2C或SPI總線操作,得到必要的OFN檢測信息。
通過底層驅動程序得到OFN檢測信息后,對于沒有嵌入式操作系統EOS(Embedded Operatig System)的直接軟件體系,或諸如RTX、μC/OSII等微型嵌入式實時操作系統ERTOS(Embedded Real Time Operating System)的主機系統,上層應用程序直接用來進行屏幕指示、操作控制或數據的存儲、轉發等活動,這主要針對工農業過程控制、儀表儀器設備、器件性能檢測完善等應用情形。對于使用Nucleus MTK、ThreadX展迅、Symbian、Windows CE/Mobile、ARMLinux/Android、MACOSXiPhone、VxWorks等典型EOS及其應用體系的主機系統,還需要對OFN信息進行數據封裝或控制格式轉換,以便使原有系統的絕大多數應用程序都能直接使用,如鼠標數據包格式、觸摸屏數據包格式、方向鍵信息格式等。這種信息封裝或變換,操作簡單的直接在驅動程序中實現,操作復雜的則需要在應用層通過消息、隊列等軟件通信或同步機制做“二傳”或“三傳”加以實現。
具有EOS的軟件系統,OFN驅動程序需要遵循相應EOS公用驅動程序的編寫、調試、加/卸載要求,如Windows CE/Mobile的單/雙層、本地/流接口驅動、動態庫形式,ARMLinux的字符設備驅動、動態加/卸載、VxWorks的I/O設備驅動等。OFN驅動程序傳播的是系統公用的人機交互輸入信息,必須為公用驅動程序。EOS驅動程序可以劃分為專用驅動程序或公用驅動程序兩大類,公用驅動程序軟件要求很高,需要根據具體EOS的特點和要求,認真編寫、調試和測試。
3? 微型光學手指導航模組應用實踐
在各類嵌入式應用系統中開發使用OFN模組,軟硬件體系設計的核心是OFN驅動程序的實現,其關鍵在于OFN數據信息的實時采集和具體EOS下公用信息的形成。下面針對一些最常見的OFN應用開發設計實踐,加以闡述。其中涉及的I2C、SPI、UART、LCD(Liquid Crystal Display)、定時器(Timer)、GPIO(General Port Input/Output)等的軟件驅動操作,限于篇幅,這里不再著重說明。
3.1? 工業測控/儀表儀器應用
工農業過程控制、儀表儀器設備、器件性能檢測等軟件體系或微型ERTOS下的OFN應用,可以采用外部事件中斷或定時器查詢的方式,在其中斷服務程序中直接操作I2C或SPI總線,高效地從OFN中獲得手指觸控信息,并進行屏幕指示、操作控制或數據的存儲、轉發等活動。
下面的例程代碼(見網絡版)展示了ARM926T內核的S3C2440微處理器平臺上測試OFN模組A2815性能的情形。中斷服務程序中進行I2C或SPI總線操作,獲得手指觸控信息,在LCD屏上以“鼠標”形式隨動顯示,并通過UART接口上傳數據給PC機。
3.2? Nucleus MTK手機應用
聯發科技MediaTek推出的各種款式功能手機,以高度的性價比具有極高的市場份額,其內核是ARM7EJS或ARM9EJS微處理器,在MentorATI的優先級搶占調度和時間片輪轉的多任務ERTOS--Nucleus基礎上,形成了完整的人機接口MMI(Man Machine Interface)應用程序體制,俗稱“MTK”。Nucleus MTK多數情況下采用可管理的逐級中斷機制:低級中斷LISR(Lower ISR)→高級中斷HISR(High ISR)→中斷任務處理ISR(Interrupt Serve Routine)。ISR可以與其他任務進行通信或同步的交互。
Nucleus MTK系統不支持鼠標,但支持鍵盤和觸摸屏操作,而觸摸屏操作最終歸結在鍵盤操作上。因此在Nucleus MTK下應用OFN模組,需要把OFN的“觸控”信息轉換為“方向動作”信息,進而廣播為可以公用的“方向按鍵”信息,從而為多數現有的和未來的應用程序所共享。不容忽視的是必須實現高度頻繁的OFN信息與緩慢的方向按鍵之間的合理匹配,可以通過均值濾波和邏輯分析進行取舍算法達到這一目的。
需要注意的是,Nucleus MTK軟件體系層次和等級較為嚴格,高低層之間除了通信、同步和信息傳遞,一般不允許函數互相調用;同時,為保證中斷響應的及時性,不應在中斷服務程序中作過多的停留,因此傳統的設備驅動及其分析處理需要放在不同的層次上,按輕重緩急,分別加以實現。
按照上述Nucleus MTK的設備驅動規范和OFN信息的運用機理,設計OFN模組的Nucleus MTK軟件應用如下:定義OFN特定消息結構,分配中斷形式和總線接口;實時獲取OFN移動信息,取舍處理后,打包成OFN消息包,上傳MMI應用處理層;MMI應用處理層拆包分析,變換成方向按鍵的“按下”和“釋放”消息,進而廣播給整個系統。相關的關鍵程序開發如下:
① 基本設置。增加全局操作常量MSG_ID_MMI_OFN_MOVE_REQ,定義OFN消息結構體ofn_hdr_ind_struct{LOCAL_PARA_HDR, kal_uint8 Direction},并在系統自定義設備驅動的初始化文件中加入對OFN初始化函數的調用。
② 底層驅動程序設計。限于篇幅,這里僅列出I2C接口的定時器中斷查詢實現。
③ 公用信息形成。在上層主要程序文件MMITask.c中添加代碼。
3.3? Windows CE/Mobile應用
Windows CE/Mobile是一款在嵌入式系統,特別是智能手機中,廣泛應用的EOS。Windows CE/Mobile按照“物理中斷IRQ(Interrupt ReQuest)→邏輯中斷SYSINTR(System Interrupt)→中斷服務線程IST(Interrupt Serve Thread)”的層層映射方式進行中斷處理,其設備驅動程序以用戶態下的DLL(Dynamic Link Library)文件形式存在,區分為本地與流接口驅動、獨立與雙層驅動,可以在系統啟動時自動加載或動態加載。啟動時加載的驅動程序,需要特別進行注冊表的配置添加。
OFN模組及其應用特點決定了在Windows CE/Mobile下,其驅動程序宜設計為獨立的本地驅動形式,并在系統啟動時能夠自動加載。Windows CE/Mobile支持鼠標操作,有鼠標消息結構體的系統定義,可以用來簡化OFN的驅動程序。OFN模組的Windows CE/Mobile軟件應用可以完全在驅動程序中實現,中斷服務程序的編寫和系統注冊表的配置添加是OFN模組Windows CE/Mobile驅動程序設計的關鍵。以I2C總線接口、外部中斷事件觸發方式說明OFN模組Windows CE/Mobile驅動程序的具體實現,核心微處理器為ARM926T內核的S3C2440。
3.4? ARMLinux/Android應用
ARMLinux/Android是一個源碼開放、音/視頻性能優良、網絡功能強大、易于擴展開發的EOS及其應用體系,一經推出就在便攜式移動通信、微型筆記本電腦等諸多領域得到了廣泛運用。其底層多是基于CortexA8/A9、ARM1176、ARM9EJS等內核的微處理器。Linux下設備驅動規范是將設備視作文件操作,稱為“設備文件”,應用十分方便。其設備驅動程序分為字符型、塊型和網絡型三類,嵌入式系統的大多數外設或接口都可以作為字符型設備進行驅動。根據應用的特點,Linux將所有輸入設備歸為可以數據緩沖的鏈表結構的字符型輸入子類(Input),包括鼠標、鍵盤、觸摸屏等,其中鼠標類驅動(mousedev)架構體系十分完備。ARMLinux/Android體系的這些特征,使得OFN模組的驅動應用開發簡便了很多:可以按照鼠標類驅動的實例化方式,快速實現OFN的驅動程序設計。Linux驅動可以動態加載,也可以在啟動時加載;OFN設備使用頻繁,宜選擇啟動時加載。這里以常見的TI推出的CortexA8內核的OMAP3530微處理器平臺為例,關鍵的程序代碼略--編者注。
4 結語
光學手指導航模組,性能高度集成,成本低,形體小,在嵌入式應用系統中備受青睞。只要按照各種嵌入式應用體系的具體特點,遵循各類嵌入式體系及其操作系統下驅動軟件的開發規律,并因地制宜,具體情況具體分析,就可以無縫地將其融入到各個已有的嵌入式應用軟硬件體系中,并拓展到新的嵌入式應用產品中。
評論
查看更多