2012-10-29 119 views
2

我一直在對通過I2C接口與設備通信的應用程序執行時序測量。我發現單個I2C讀取和寫入需要大約450us才能執行。我已經驗證I2C接口在400KHz下運行,所以我希望單個字節上的I2C操作需要大約170us。可以有超過250us的開銷在android中使用I2C驅動程序?有誰知道如何提高這種速度。Android I2C讀寫速度

在此先感謝。

Marc。

回答

2

我想你的預期延遲來自時間/位或類似的東西。但是,當您從具有OS(Android或Linux或其他)的系統向I2C發送數據時,您必須通過所有層來訪問實際的I2C。最有可能的是,這個驅動程序在內核中。由於它是一個硬件資源,因此還有一些門控方式可以防止幾段代碼同時使用I2C。另外,有時對於某些設備,系統可能不會立即發送數據,但可能會稍後推遲。這可能不是你的情況。另外,對於某些硬件設備,當您發送數據時,它不會通過常規的數據寫入,但會通過其他方式發送,這對於大塊可能更有效,但對於小塊會更少,因此需要一些延遲才能啓動用。 I2C上的音頻流就是一個很好的例子。在系統中,它通常是數據緩衝區和DMA通道設置,以適當的速率將數據傳輸到I2C以獲得所需的音頻。它對於音頻流的目的非常有效,但發送幾個字節並不是很好。

所以,我對你的測量並不感到驚訝。

在我看來,如果你想改善它,你將不得不經歷編寫自己的驅動程序的痛苦。然後,你變成平臺依賴。如果它是一個定製系統,那沒問題,但如果它是一個必須在任何平板電腦上運行的消費者應用程序,這是不可行的。

+0

感謝您提供豐富的回覆。我懷疑這一點。 – user1400716