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