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