Answers:
传感器集线器布置
在这种情况下,有两个I²C总线。我们称它们为本地巴士和主要巴士。本地总线的目的是将一堆传感器连接到微控制器(μC)。μC的目的是轮询传感器,汇总来自传感器的信息,并检测某些事件。具有这种作用的μC称为传感器集线器。传感器集线器不负责高级功能;有一个功能强大的主处理器。主总线将传感器集线器连接到主处理器。因此,传感器集线器μC是本地I²C总线上的主机,而I²C主总线上是从机。
SPI和I²C
原始文章中链接的PIC在SPI和I²C之间不共享引脚。但是,还有其他PIC将相同的引脚用于硬件SPI和I²C,因为它们都是通过相同的MSSP外设实现的。如果PIC有两个独立的MSSP外设,则一个可用于硬件SPI,而另一个可用于硬件I²C。
需要多个总线的一个非常普遍的原因是设备运行速度不同。最初,I²C的最高运行频率为100 kHz。后来,速度提高到最大400 kHz,再后来又提高到1 MHz或更高。
问题在于,由于每个设备的地址都嵌入在I²C协议中,因此,如果您在同一总线上具有不同额定速度的设备(例如100 kHz和400 kHz),则必须始终以最低的通用速度运行总线到同一总线上的所有设备(在这种情况下为100 kHz)。
如果您以较高的速度(400 kHz)运行总线,则显然较低速的设备将无法正常工作,并且甚至可能将高速设备的地址解释为自己的地址,从而导致400 kHz的设备故障为好。但是,即使您最初以100 kHz的速度运行总线,然后在寻址了较高速度的芯片后尝试将总线加速至400 kHz,较低速度的芯片也有可能(尽管可能不太可能)解释以下情况之一:高速数据包错误地作为其地址,从而使总线上的通信混乱。无论哪种情况,在与400 kHz设备的交换结束时,100 kHz设备都可能处于未知状态。
因此,如果您的设备以不同的速度运行,并且有多个I²C端口,并且具有备用针脚来实现这种奢侈度,那么一个I²C用于100 kHz的设备,另一个用于400 kHz的设备,而另一个则是最有效的。对于1 MHz的设备,具体取决于您的需求。
对于SPI来说这不是问题,因为硬件中的每个设备都是通过单独的芯片选择线启用(寻址)的。因此,时钟速度可以与所选芯片的速度(10 MHz,20 MHz,等等)匹配,而不会影响同一总线上的其他芯片,因为它们没有启用。