Android I2C读/写速度

时间:2012-10-29 17:35:02

标签: android i2c

我一直在通过I2C接口与设备通信的应用程序上执行定时测量。我发现单个I2C读写操作大约需要450us才能执行。我已经验证了I2C接口是以400KHz运行的,所以我希望单个字节上的I2C操作大约需要170us。在android中使用I2C驱动程序会有超过250us的开销吗?有没有人知道如何提高这种速度。

提前致谢。

马克。

1 个答案:

答案 0 :(得分:2)

我猜你的预期延迟来自时间/位或类似的东西。但是,当您从具有OS(Android或Linux或其他)的系统向I2C发送数据时,您必须遍历所有层才能进入实际的I2C。而且很可能,这个驱动程序在内核中。由于它是硬件资源,因此还存在某种形式的门控,以防止多个代码同时使用I2C。此外,有时对于某些设备,系统可能不会立即发送数据,但可能会推迟一些。可能不是你的情况。

此外,对于某些硬件设备,当您发送数据时,它不会通过常规数据写入,而是通过其他方式发送,这些方法对于大块可能更有效,但对于小块而言则更少,从而导致一些延迟开始。 I2C上的音频流就是一个很好的例子。在系统中,它通常是一个数据缓冲区和一个DMA通道设置,以适当的速率将数据传输到I2C,以获得您想要的音频。它对于音频流的目的非常有效,但发送几个字节并不是很好。

所以,我对你的测量结果并不感到惊讶。

在我看来,如果你想改进它,你将不得不经历编写自己的驱动程序的痛苦。然后,您变得依赖于平台。如果它是一个自定义系统,它很好,但如果它是一个必须在任何平板电脑上运行的消费者应用程序,它是不可行的。