SPI(Serial Peripheral Interface)是一种由摩托罗拉公司提出的高速全双工同步串行通信协议,广泛应用于嵌入式系统中短距离设备间通信(如MCU与存储器、传感器等外设的交互),信号线组成如下:
SCLK(Serial Clock),主设备产生的时钟信号,用于同步数据传输;
MOSI(Master Out Slave In),主设备输出、从设备输入的数据线;
MISO(Master In Slave Out),主设备输入、从设备输出的数据线;
SS(Slave Select),片选信号线(低电平有效),主设备通过拉低对应从机的SS线启动通信。
I2C因为其开漏的结构,无法输出高电平,所以外部要加上拉电阻。使用SPI的时候,发现大多数情况下是不需要加上拉电阻的。主要因为SPI多为推挽的结构,推挽电路,高低电平都可以输出,所以外部不需要加上拉电阻。推挽电路可以用2个三极管或者2个MOS管搭建而成。
三极管推挽电路
如下是用三极管搭建的推挽电路,当Vout输出高电平时,电流流向如图所示,往负载Rload灌电流。
当Vout输出低电平时,电流流向如图所示,从负载拉电流。
MOS管推挽电路
用一个PMOS和一个NMOS搭建的推挽电路如下图所示(左边是输入,右边是输出)。
输入高电平,PMOS截至,NMOS导通,输出为低电平。
输入低电平,PMOS导通,NMOS截至,输出为高电平。
推挽和开漏的区别
推挽电路的低电平驱动能力和OC/OD门是一样。高电平驱动能力要比OC/OD强,因为推挽直接上拉接的电源,OC/OD需要加上拉电阻,高电平输出能力却决于上拉电阻的大小。推挽和开漏的区别如下,可供参考。