I2C

我们刚刚看到了串行通信协议。这是一种广泛使用的协议,因为它非常简单,这种简单性使得它很容易在蓝牙和USB等其他协议之上实现。

然而,它的简单性也是一个缺点。更详细的数据交换,如读取数字传感器,将要求传感器供应商在其之上制定另一个协议。

(Un)对我们来说,幸运的是,嵌入式空间中还有很多其他通信协议。其中一些广泛用于数字传感器。

我们使用的F3板有三个运动传感器:加速计、磁力计和陀螺仪。加速计和磁力计封装在单个组件中,可以通过I2C总线访问。

I2C代表内部集成电路,是一种同步串行通信协议。它使用两条线交换数据:数据线(SDA)和时钟线(SCL)。 因为时钟线用于同步通信,所以这是一种同步协议。

该协议使用 模式,其中主机是启动并驱动与从设备通信的设备。多个设备(包括主设备和从设备)可以同时连接到同一总线。 主设备可以通过首先向总线广播其地址来与特定从设备通信。该地址可以是7位或10位长。 一旦主设备启动了与从设备的通信,在主设备停止通信之前,任何其他设备都不能使用总线。

时钟线决定数据交换的速度,通常以100KHz(标准模式)或400KHz(快速模式)的频率工作。