第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTEL IC BUS:英特尔IC总线) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: 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资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的 16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收
显然,如果用通用IO口模拟 UART总线,则需一个输入口,一个输出口
第三,从第二点明显可以看出,SPI和 UART可以