新興微型光學手指導航模組的嵌入式系統開發
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信息進行數據封裝或控制格式轉換,以便使原有系統的絕大多數應用程序都能直接使用,如鼠標數據包格式、觸摸屏數據包格式、方向鍵信息格式等。這種信息封裝或變換,操作簡單的直接在驅動程序中實現,操作復雜的則需要在應用層通過消息、隊列等軟件通信或同步機制做“二傳”或“三傳”加以實現。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論