傳感器已成為許多系統中的常規功能。它們與許多其他外圍設備一起存在,以增加可以納入系統正在完成的工作的環境輸入范圍。但是,在某些系統中,傳感器的數量可能會壓倒其他更傳統的外圍設備,并且可能比其他外圍設備更能影響性能。
與智能手機相比,這不是一個問題。從一個或兩個具有專用功能的傳感器,移動平臺大大增加了傳感器的數量,并向那些夢想有新事物的有進取心的開發人員開放了傳感器數據。建筑師在整合傳感器時可能從未設想過這些應用。
因此,當直接連接到應用處理器(AP)時,傳感器(包括用于屏幕的觸摸傳感器)變得更加沉重。借助用于環境光,接近度,加速度,旋轉甚至磁場,壓力,濕度,輻射和化學傳感的傳感器,可以有效地從AP卸載傳感器的管理。
如果AP需要每一塊傳感器數據,那么除了用這些數據充斥AP之外別無選擇。然而,傳感器,如果他們正在工作,只需報告他們看到的內容。從最基本的角度來看,它們并不意味著對數據的意義 - 這就是處理器的作用。傳感器在過去幾年變得更加智能化,但傳感器的決策范圍仍然有限。之后,某些處理器必須決定與數據有關的內容(如果有的話)。
雖然AP最終可能會使用相關數據,但只是為了跟蹤數據并確定相關內容,這可能是一項相當大的工作。正如專用電路處理無線電,視頻,圖形和其他密集功能一樣,傳感器集線器可以通過屏蔽AP免受可能被忽略的傳感器事件來釋放處理器帶寬。通過允許AP進入睡眠狀態,即使傳感器仍處于活動狀態,傳感器集線器也可以延長電池壽命。
傳感器接口
傳感器具有多種接口,用于與系統的其余部分進行數據通信。大多數人使用SPI或I2C等外設總線方案來傳輸數據,但這就是大部分共性的結束。我們將看幾個例子,這些例子可以說明為什么可以保證傳感器集線器。
一個例子是來自Kionix的加速度計KXTIK-1004,它展示了基本和更復雜的相互作用。它碰巧有一個I2C接口,雖然有SPI變種。它是一個三軸加速度計,能夠檢測x,y和z方向的加速度。它是一款體積較小的器件,采用3 x3mm2LGA封裝。它具有可編程范圍,允許+/- 2,4或8 g范圍。其框圖如圖1所示。
圖1:KXTIK-1004框圖。 (由Kionix提供。)
與大多數傳感器一樣,KXTIK-1004采樣內部狀態 - 在這種情況下是相對電容 - 并提供一組運行的數據。這曾經是舊傳感器上傳輸數據的唯一方式,需要不斷監聽。問題在于傳感器從根本上報告當前的加速度,并且由聽眾決定加速度是否已經變得足夠有意義以及決定其意義是什么。
KXTIK-1004仍允許訪問原始數據。傳感器將所有采樣數據存儲在8位寄存器中,可通過I2C端口訪問。數據分辨率可以是12位,這需要使用兩個寄存器,或者只需要8位,將讀取時間減半;控制設置指定分辨率。可以使用圖2將寄存器值或“計數”轉換為實際加速度值。
圖2:加速度可以從寄存器值確定。 (由Kionix提供。)
由于未直接讀取加速度,如果使用此方法需要絕對值,則讀者必須執行轉換。如果這是訪問數據的唯一方法,那么連接到它的處理器將需要不斷輪詢,觀察值的有用變化。
輪詢頻率也很重要。寄存器值定期更新。如果輪詢速度太慢,那么您只會對偶爾的讀數進行采樣,而忽略臨時讀數。使用此特定傳感器,您可以將輸出數據速率(ODR)設置為更接近輪詢速率。理論上,當使用12位分辨率時,時序可能是一個問題,這需要讀取兩個寄存器:在讀取一個寄存器之后但在讀取第二個寄存器之前,不希望數據更新。幸運的是,在這種情況下,讀取受到保護,以確保讀取的兩個寄存器都反映相同的數據樣本。
中斷電路減少了輪詢的需要,中斷電路不僅可以通知處理器新數據何時可用,還可以識別幾種常見類型的加速事件。減少了處理器的負擔,不僅因為它不必計算事件,還因為當事件發生時,發送中斷。這意味著,如果這些事件都很重要,則不需要輪詢。
KXTIK-1004可以識別四個一般事件:運動,輕擊,傾斜變化和“水印”事件(稍后會詳細介紹)。有一個中斷引腳,引腳11(INT)。可以將引腳編程為由于任何這些事件而觸發。當中斷觸發時,可以讀取狀態寄存器以確定發生了什么事件并收集任何相關數據。
讓我們以“傾斜”為例。此功能會創建一個中斷,可以指示系統在手機上旋轉屏幕。可以在控制寄存器中設置許多參數。這些包括傾斜ODR(可以與其他功能的ODR不同),在確定手機處于新狀態之前傾斜的時間長度,滯后以及它決定手機的時間點“平坦”(即無法分辨旋轉屏幕的方式)。給定這些參數,當傳感器檢測到電話已進入新的傾斜狀態時,它可以發出中斷。
當發生中斷時,處理器可以讀取兩個寄存器,其中一個提供先前的傾斜位置,另一個提供新的傾斜位置。傾斜位置表示為一個狀態,每個寄存器有六位標識適當的狀態,如圖3所示。
圖3:Tilt狀態由TILT_POS_CUR和TILT_POS_PRE寄存器中的位指示。 (由Kionix提供。)
同樣,可以識別單擊和雙擊,以及喚醒單位的運動事件,所有這些都具有可以設置的各種參數。數據緩沖也可以由FIFO處理,該FIFO可以在FIFO模式下使用(一旦完整,沒有寫入新數據 - FILO也可用)或流模式(當滿時,最舊的數據被新數據覆蓋)。可以定義“水印”級別,指示何時達到特定填充水平;當水印被擊中時,可以觸發中斷。
在這個傳感器中,有許多選項可以減少處理器必須做的工作量 - 然而仍然需要管理中斷事件并對其來源進行排序這樣就可以采取適當的行動。
另一個傳感器示例是意法半導體的L3G4200D陀螺儀(見圖4)。它允許通過I2C或SPI接口進行通信。它還有一個基本的DRY(數據就緒)中斷,用于指示準備讀取的新樣本,并且它有一個可以在FIFO或流模式下工作的FIFO。
圖圖4:L3G4200D陀螺儀的框圖。 (STMicroelectronics提供。)
無論是簡單地讀取數據還是使用FIFO,讀取速率都很重要。如果你閱讀速度太慢,你可能會錯過樣本,或者你可能會從一個樣本中讀取X數據,然后從下一個樣本中讀取Y數據,然后從第三個樣本中讀取Z數據,這意味著您將永遠不會獲得單個樣本的所有信息樣品。 (BDU功能允許您在覆蓋之前讀取兩半樣本數據。)在FIFO模式下使用FIFO時,讀取太慢將導致阻塞;在流模式下,它會導致溢出。
這使得處理器的負擔在使用這些模式時繼續關注陀螺儀。但是,該器件確實為水印,FIFO溢出,移動(用于喚醒),不移動和選擇軸活動提供中斷。這些中斷減少了一些閱讀工作。
使用“組合”傳感器可以緩解一些監測多個傳感器的工作。例如,ADI公司的ADIS16367(見圖5)結合了加速度計和陀螺儀。它有一個可用作數據就緒中斷的信號,因此通過SPI接口讀取的數據可以提供來自兩個傳感器的樣本。
圖5:框圖ADIS16367組合加速度計和陀螺儀。 (由Analog Devices,Inc。提供)
最后一個例子是Atmel的AT42QT1110觸摸控制器。該設備與觸摸板一起工作,以在特定鍵的電容發生變化時發出信號,表示觸摸。它可以使用7鍵或11鍵鍵盤,并且可以通過SPI進行通信。
在7鍵模式下,每個鍵都有一個引腳用于指示觸摸。在11鍵模式下,使用內部時鐘或通過提供外部SYNC信號(將可檢測到的焊盤數量減少到10)定期進行讀取。該器件還有一個CHANGE引腳,可在鍵發生變化(觸摸或釋放)時發出信號。這可以充當中斷,減少與實際觸摸或釋放事件一致的讀取次數。
管理傳感器數據采集和中斷
在所有這些情況下,可以選擇直接讀取原始數據或響應任何中斷。如果中斷準確地提供了感興趣的事件,并且如果這些事件需要由AP處理,則可能需要直接的傳感器到AP連接。但是,有幾個原因可能導致不建議直接連接。
如果需要原始數據,讀取所需的時間可能需要AP過多關注。/li》
即使有中斷,一些傳感器 - 尤其是允許滑動和多點觸摸的觸摸屏 - 也會產生大量中斷。
如果需要進一步處理數據資格或融合,然后這成為AP的負擔。
對事件的一些較低級別的響應 - 比如屏幕的旋轉 - 可能不需要AP完成,這意味著某些較低級別實體可以在不涉及AP的情況下捕獲和執行該事件。
最后,也許最重要的是,AP消耗大量功率,重要的是AP在不需要時進入休眠狀態。如果AP承擔管理傳感器的全部責任,則無法進入睡眠狀態。 (事實上,傳感器中斷可用于喚醒AP。)
由于這些原因,越來越傾向于在傳感器和AP之間放置一個設備;這樣的設備通常被稱為“傳感器集線器”。它的職責是維持與所有傳感器的低級對話,監視事件,在其低級權限內執行這些事件,處理低級融合,并傳遞只有那些既是AP關注的相關和必要用途的事件,也只對AP有用。
兩種設備中的一種可以承擔傳感器集線器的角色。 FPGA具有邏輯意義,但只有非常小的FPGA具有必須考慮用于移動設備等應用的成本結構。另一種選擇,更典型的是微控制器。監控傳感器的關鍵資源歸結為I2C或SPI的可用性,以及微控制器如何處理外部中斷。
例如,Atmel的ATmega48A是一個8位RISC微控制器,具有4 K字節的FLASH,256 K字節的EEPROM和512 K字節的RAM;它可以通過I2C和SPI進行通信。該器件有兩種類型的中斷:“引腳更改”中斷和“外部”中斷。前者允許24個引腳中的任何一個通過三個中斷標志觸發中斷(每個標志對應一個不同的中斷向量)。每個標志與24個引腳中的8個相關聯。
還有兩個電平或邊沿觸發的外部中斷引腳,稱為INT0和INT1。每個都有自己的中斷向量。這產生了總共26個引腳和五個不同的矢量目標,為許多傳感器和其他可能的外部中斷源留出了空間。
Microchip的PIC18F2520是一款16位微控制器,具有32 K的FLASH,1536字節的SRAM和256字節的EEPROM,也可以通過兩種接口類型進行通信。它有三個邊沿敏感的外部中斷引腳,具有可編程優先級,INT1和INT2可以為高電平或低電平(INT0的優先級固定為高電平)。此外,PORTB的引腳7:4可用作引腳更改中斷;它們的優先級也可以編程為高或低。最后,飛思卡爾半導體的MCF51QE32是一款32位ColdFire微控制器,具有32 K字節的FLASH和8 K字節的RAM,具有兩個SPI和兩個I2C端口。它有一個IRQ外部中斷引腳和精心設計的優先級方案。中斷有七個“級別”,每個級別有七個優先級。各種中斷(主要是內部生成的)在結果矩陣中占據不同的位置(見圖6)。外部中斷引腳以最高級別,中點優先級運行。這種單引腳方案可以很好地用于多傳感器組合,對所有傳感器數據更新都有一個中斷。
圖6:MCF51QE32的中斷優先級矩陣。 IRQ引腳在7級具有中級優先級。(由飛思卡爾半導體公司提供。)
總結
隨著傳感器的數量被集成到各種嵌入式系統中,應用處理器因為需要的周期而成為管理它們的不良選擇,這樣做意味著AP無法入睡,消除了關鍵機會節省電力。使用小型低功耗微控制器來聚合傳感器信號允許主處理器專注于更重要的事情或睡眠,只有在有重要事項應該解決時才會被中斷。
-
傳感器
+關注
關注
2552文章
51362瀏覽量
755696 -
半導體
+關注
關注
334文章
27654瀏覽量
221304 -
SPI
+關注
關注
17文章
1721瀏覽量
91929
發布評論請先 登錄
相關推薦
評論