第1个回答 2013-09-06
SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。
如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备)
第2个回答 2013-09-05
SPI 优点:速度快,编程简单;
I2C优点:占用IO线少;(缺点:编程复杂,速度慢)
两种接口各有优点和缺点。
一般一种芯片只有一种接口,不会有两种接口的芯片,所以没有何种方式好的说法。
第3个回答 推荐于2017-11-26
I2C优点:占用资源少,只用到2根线,适用于IO口资源比较紧的场合,但是速度不及SPI了。
SPI优点:全双工工作,速度很快,适用于高速通信的场合,但是占用了4根线。
2块单片机相连,如果资源充足的话,当然是SPI了,速度快。
传输距离和抗干扰的话2个都差不多,取决于硬件电路的设计,比如总线上的上拉电阻阻值。2者都不适合长距离传输。本回答被提问者采纳