Arduino 上有些传感器使用 I²C 数据总线,相比普通的串口传感器有哪些优缺点?

Integ
  • 5.6k

买了一个arduino兼容的传感器是使用 I²C 通信的,I²C 相比普通的串口有哪些优点吗?

回复
阅读 4k
2 个回答

I²C一个总线上可以挂多个设备(传感器),设备之间直接用过ID进行区分,同一个总线上只能有一个主设备,可以有多个从设备,通信只能从主设备发起,不能从从设备发起。速率方面常用的有9.6Kbps、1.92Kbps、1.152Kbps,串口的通信速率必须两个设备都匹配才能进行。
串口属于点对点通信,一条串口线两端各联一个设备,设备之间是平等的,也就是两个设备都能够发起通信,而且使用的是两条不同的信号线,通信过程不会冲突。速率方面有100Kbps、400Kbps,一般只要从设备支持的速率上限足够,主设备的通信速率就可以随意了(因为)。

所以,总结一下:

  1. 一路I²C可以接多个传感器组成传感器网络,而一路串口只能接1个传感器;
  2. I²C的通信速率比较灵活,串口的比较死;
  3. I²C只能主设备发起通信,不能传感器主动想主设备发送数据,而串口则可以传感器主动发数据;
  4. 使用的难易程度来讲,串口比较简单,而I²C的调试相对复杂一些。

总的感觉是,在传感器领域这块的话I²C更为适用,一般可以使用主机不停轮询的方式来规避I²C从设备不能主动发数据的问题。

arduino的话用wire库很方便的,我觉得最大的好处就是节约IO端口。

你知道吗?

宣传栏