什么是最受欢迎的嵌入式串行总线?[关闭]


8

我正在设计一种嵌入式设备,希望通过串行总线与第三方外围设备进行互操作。我应该选择SPI,I²C还是其他总线?

外围设备的带宽将非常低(某些传感器通过总线通信,需要定期轮询),并且最有可能在控制器的一米或更短的距离内。控制器的唯一任务是收集传感器数据,以某种方式打包,然后通过另一条总线将其发送到无线模块(尽管传感器总线也有可能被重用)。


3
这取决于您要与哪些外围设备进行互操作,以什么电压,以什么速度和以什么距离进行互操作。
Toby Jaffey

1
我为问题添加了更多详细信息
pfyon 2010年

1
我简直不敢相信没有提到UART。
vicatcu,2010年

如果我错了,请纠正我,但我不认为UART是总线。我以为这只是两个设备之间的串行通信。
pfyon

那么总线不是用于两个设备之间的串行通信吗?您是否因为有时仅使用点对点而打折呢?PCIe,SATA,HT通常都是点对点的。无论如何,大多数UART外设都可用于多点RS-422,RS-485或LIN。
尼克T

Answers:


12

如果您不确定,并且您的要求非常含糊,我选择I²C。

SPI和I²C之间的主要区别在于SPI需要为每个外设提供芯片选择线。I²C在通信开始时广播外设地址,因此不需要片选线。片选线在前几行之后变得很麻烦。

另一方面,SPI可能更易于实现和调试。如果您只想连接几个设备,则可能是赢家。

我会排除USB,除非您需要相对长距离(m而不是cm)的高数据速率。我也要排除RS-232,除非它仍然是1976年,并且您的外围设备需要大信号以区别于噪声。

您可能会考虑达拉斯的1线制,但是我怀疑它不像I²C那样常见,而需要2线制的“ 1-线”总线对我来说似乎总是有些麻烦。


1
我认为,如果您有一个非常简单的控制器,并且需要使用位冲击(基本上是手动操作时钟),则在剩下的4个GPIO端口上实现SPI要容易得多。
Wouter Simons

1
我认为您正确使用SPI比I2C更容易。我希望它不会归结为一击。
pfyon

3
+1表示市场上销售为“ 1-wire”的2线制鱼腥味。
semaj 2010年

更糟糕的是,许多实现1-wire(+接地)系统的芯片都需要第三个引脚-Vcc-因为它们不能依靠寄生电源工作!当我想到1线总线时,我想到的是一些电容耦合设置,一个限流桥式整流器和一些自计时线路代码。不是2或3线。
凯文·维米尔

“ 1-wire”应该被称为“ 1-data-wire”,因为它的含义更多。多余的电线是GND,有时是稳定的电源线。
2012年

3

如您所言,这将是低带宽,因此我将分配足够的IO以同时处理SPI和I2C。如果可能的话,我也会有更多的CS线,以便您可以运行多个SPI设备。另外,别忘了看一下如何为外围设备供电。如果要用尽电池电量以延长使用寿命,则需要将设备置于低功耗模式或在不使用时断开电源。如果可能的话,也请使用您的控制器串行控制器模块,许多控制器会复用SPI,I2C和串行接口。如果可以并且将无线与传感器分开,则可以在不使用设备时更轻松地关闭设备。另外,一些传感器的一条线会告诉控制器何时需要维修,因此您还希望有一个额外的IO进入一个引脚,理想情况下,您可以从中产生中断。


2

由于定义问题,这个问题有点问题。

如果要与某些外部外围设备通信而不使用控制器上的多个端口,则基本上需要串行化通信。基本上,每种串行通信方法都需要一个时钟以及有关如何处理数据连接的配置。

SPI是4线总线。I2C是2线总线。

每个都有不同的特征。您需要回答的是您的通信需要多快,需要多可靠,微​​控制器提供了哪些选项等等。

这篇Wikipedia文章和此参考站点比我能解释的要清晰得多,也请参考这些参考以了解更多!


2

基本上,您应该在I2C和SPI之间进行选择。

无论使用哪种总线,都应考虑传感器和第三方外围设备的电压电平。您可以通过使用两个MOSFET制作自己的转换器来实现此目的(只有一种方式-拾取/不变或下降/不变;只有在需要将传感器运行在3.3并与1.8V和5V主器件接口时,这才是问题)。参见恩智浦的AN10441 [PDF]。这也适用于SPI(只需移除上拉电阻)。您将需要在连接器上添加一条线以建立参考电压(如果尚未这样做)。

I2C的缺点之一是您只能使用总线上最慢的时钟。如果一个传感器仅能提供100kHz的频率,而您想以400kHz或1MHz(两个有效速度)与内存通信,则较慢的传感器的行为是不确定的。如果使用SPI,则芯片选择线意味着速度较慢的传感器甚至不会监听总线上的内容,并且可以为不同的传感器运行不同的速度。


1

我会使用I2C。如果要将无线模块与传感器连接在同一总线上,只需确保您可以获得一个可以通过I2C进行通信的无线模块。我见过的大多数通信外围设备都使用SPI而不是I2C。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.