劉新源
(1.河南科技大學應用工程學院,河南 三門峽 472000;2.三門峽職業技術學院,河南 三門峽 472000)
伴隨科技的發展,智能手機成為人們通信的一種重要工具,距離傳感器作為智能手機的標配,其主要作用是用戶在打電話或接聽電話時利用距離傳感器檢測到的狀態使智能手機的屏幕滅屏,達到降低功耗,延長智能手機電池的使用時間,同時減少通話過程誤觸的可能性;通話結束后用戶臉部遠離智能手機,手機屏幕自動亮起[1]。但用戶在使用智能手機的過程中,由于外部因素,比如距離傳感器上方油污、用戶所在地的高溫和高海拔等使距離傳感器的檢測數據發生變化,從而導致用戶在遠離智能手機時發生黑屏不亮問題[2]。針對此問題,本文根據距離傳感器的檢測原理,在驅動層實現一個距離傳感器的數據優化方案。
距離傳感器由利用電流脈沖發出紅外線裝置和主動式紅外線感測裝置2個元件組成[3]。這2個元件用兩孔的中間完全隔離開的硅膠套過盈配合裝在手機屏幕下面,在使能距離傳感的情況下,當有物體靠近或遠離時,將紅外發射裝置發出紅外線反射回來,而紅外感測裝置接受到的紅外線,經傳感器芯片中的模數轉換成數字信號,同時芯片會根據接受到的數字信號和芯片寄存器預先設定好的靠近或遠離門限閥值判斷是否觸發中斷,根據檢測到的硬件中斷信號,驅動軟件代碼讀取中斷狀態寄存器的值,并做出相應動作,如通知顯示屏LCD滅掉或亮起,同時也會更新門限閥值寄存器的值,為下一次的中斷做好準備[4]。物體與距離傳感器感測處越近,距離傳感器數據越大;反之,距離傳感器數據越小。
下面以ltr578距離傳感器來說明sensor驅動工作流程,傳感器的工作方式一般有輪詢和中斷2種,距離傳感器通常采用中斷方式進行主動上報。通過I2C設備與驅動進行匹配,成功后開始加載驅動代碼,完成距離傳感器I2C設備注冊,進入probe函數實現硬件sensor的設備初始化[5]。在ltr578的probe函數中初始化中斷接口,注冊中斷函數,將根據NV分區保存的上下門限閥值配置到芯片閥值寄存器中。根據上下門限閥值判斷物體靠近或遠離的狀態,超出閥值范圍,使sensor產生硬件中斷,拉低ltr578芯片的中斷引腳,驅動代碼會立刻響應此中斷,并調用相關中斷函數,根據距離傳感器提供的數據上報給HAL層物體目前的狀態。
距離傳感器中斷處理設置門限閥值后,新的智能手機正常接聽或打電話不會出現問題。但是在使用過程中,如果觸摸屏表面附著油脂、汗液等會影響距離傳感器的數據,會導致距離傳感器功能失效,通話時黑屏不亮問題。為了解決類似問題,提高距離傳感器數據的可靠性,可以在使能sensor時,進行一次快速校準,得到此時距離傳感器的數據,并進行上下門限閥值的計算和配置[6]。
快速校準算法是在工廠校準算法實現的基礎上進行的。工廠校準是距離傳感器感測口上方無物體遮擋時,讀取距離傳感器數據10次取平均值,此時的數據是觸摸屏和硅膠套內部反射回來的紅外信號產生的數據,也稱之為距離傳感器的繞射值,是需要消除掉或保持不變,但因手機結構和材料無法將其消除掉或保持不變,因此需要采取措施降低其影響。再結合驅動代碼中設定實際亮、滅屏檢測距離標準靠近狀態sensor數據和遠離狀態sensor數據計算得到距離傳感器的校準閥值上限和校準閥值下限,之后將繞射值、校準閥值上限、校準閥值下限保存到NV分區中。
快速校準算法是在驅動使能函數tr578_ps_enable中完成,快速校準不能與工廠校準一樣,取10次平均值消耗時間太長,會導致距離傳感器檢測不靈敏。因此快速校準時間比較盡可能短,通常情況按下通話鍵到手機置于耳朵旁邊的這個動作消耗時間大概為300 ms,這個時間足夠芯片獲取3次距離傳感器數據,因此在快速校準函數采用3次距離傳感器數據的平均值作為此次使用距離傳感器的繞射值,并與保存在NV分區工廠校準的繞射值進行比較,若大于工廠校準的繞射值,則使用快速校準的繞射值,反之使用工廠校準的繞射值,結合代碼中設定靠近狀態sensor數據和遠離狀態sensor數據計算得到此次通話過程中距離傳感器的校準閥值上下限,并寫入芯片的閥值寄存器中。在中斷處理函數中根據獲取的距離傳感器數據與此次計算得到的上下門限閥值進行比較,超出閥值范圍則上報相應狀態值,并根據此上下限閥值動態設置ltr578芯片的閥值寄存器,但不保存在NV分區中,僅作為此次通話過程中的上下限閥值。加入快速校準的工作流程圖如1所示。

圖1 加入快速校準工作的流程圖
在ltr578驅動代碼中預設靠近狀態sensor數據和遠離狀態sensor數據分別是物體與裸體sensor之間的距離為3 cm和5 cm時,紅外接收裝置感測到的距離傳感器數據。在工廠校準得到的繞射值不同就是每臺手機在距離傳感器所處位置的結構差異,再結合預設靠近狀態sensor數據和遠離狀態sensor數據計算得到的上下門限閥值,可以保證每臺手機在距離物體2.5 cm處能滅屏,在距離物體5.5 cm處能亮屏。
通過實驗驗證添加工廠校準和快速校準的必要性。
實驗一:不進行工廠校準與進行工廠校準進行比較,通過getevent命令查看在物體與手機相距2.5 cm和5.5 cm的情況下,距離傳感器上報的數據(見表1)。從表1的結果看,若不進行工廠校準,就無法保證在物體與手機相距2.5 cm和5.5 cm情況下上報物體所處的狀態,就不能實現物體靠近手機滅屏,遠離手機亮屏的目的。

表1 工廠校準算法數據上報
實驗二:不進行快速校準與進行快速校準進行比較,使用實驗一測試方法得到距離傳感器上報的數據(見表2)。從表2的結果看,若不進行快速校準,就無法保證在物體與手機相距5.5 cm時上報物體遠離狀態,就不能實現手機此時亮屏的目的。

表2 快速校準算法數據上報
本文對距離傳感器的工作流程進行了分析,提出一種工廠校準算法。在智能手機出廠時距離傳感器性能能達到一致,同時為了解決距離傳感器在有外部影響因素的情況下,智能手機容易出現滅屏不亮問題,提高驅動層上報物體狀態值的可靠性,在工廠校準算法的基礎上實現一種快速校準方案。
實驗結果表明,本文提供的工廠校準方案和快速校準方案都能達到相應的目的,使智能手機在硅膠套的老化、觸摸屏上有油污、用戶所在地高溫和高海拔地區等情況下均能正常工作。