SPI总线
SPI是摩托罗拉公司定义的一种串行外围设备接口。SPI总线主要应用于EEPROM、FLASH、实时时钟、AD转换器、还有数字信号处理器和数字信号解码器之间。SPI是一种高速的、全双工的同步通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。
SPI一般使用4条线通信
1、 MISO ————— 主设备数据输入、从设备数据输出
2、 MOSI ————— 主设备数据输出、从设备数据输入
3、 SCLK ————— 时钟信号、由主设备产生
4、 NSS(CS) ————– 从设备片选信号,由主设备控制
通信方式
SPI是单主设备通信协议,这意味着总线中只有一个中心设备能发起通信,当SPI主设备想读/写从设备时,它要拉低从设备对应的CS线(CS是低电平有效的)。主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器通过MOSI信号线将字节传送给从机,实现“写”的功能。从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机,实现“读”的功能。这样,两个移位寄存器中的内容就被交换,外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之。若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。
SPI有四种操作模式,模式0、模式1、模式2、模式3。它们的区别是定义了在时钟脉冲的哪条边沿转换输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。每种模式都由参数时钟极CPOL和时钟期CPHA刻画。
SPI的主从设备必须使用想用的工作参数,SLCK,CPOL,CPHA,才能正常工作,如果有多个从设备,并且它使用了不同的工作参数,那么主设备必须在读写不同从设备间重新配置这些参数。
硬件SPI和软件模拟SPI的区别有哪些?
硬件SPI的效率要比软件模拟SPI高,写程序的时候只要把要发的数据写在寄存器里,硬件就会自动给你发了,软件模拟SPI则需要器实现时钟的拉高拉低,数据串行输出等等。硬件SPI必须要处理器支持才可以用,软件SPI就不需要特定的要求了,一般IO口就可用