介绍:
如果集成电路具有更多的引脚的话,那么它的价格通常会更加昂贵。为了减少封装中的引脚数,许多集成电路在速度不是特别重要的情况下,使用串行总线来传输数据。串行通信总线正在变得越来越普遍,甚至在短程距离的应用中,其优越性已经开始超越并行总线。
串行外设接口(Serial Peripheral Interface Bus,SPI),是一种用于短程通信的同步串行通信接口规范,主要应用于单片机系统中。类似I²C。 这种接口首先被Motorola(摩托罗拉)公司开发,然后发展成了一种行业规范。典型应用包含SD卡和液晶显示器。 SPI设备之间使用全双工模式通信,包含一个主机和一个或多个从机。主机产生待读或待写的帧数据,多个从机通过一个片选线路 决定哪个来响应主机的请求。 有时SPI接口被称作四线程接口,SPI准确来讲称为同步串行接口,但是与同步串行接口协议(SSI)不同,SSI是一个四线程同步通信协议,但是使用差分信号输入同时仅提供一个单工通信信道。
SPI总线接口:
SPI总线规定了4个保留逻辑信号接口:
SCLK(Serial Clock):串行时钟,由主机发出;
MOSI(Master Output,Slave Input):主机输出从机输入信号,由主机发出;
MISO(Master Input,Slave Output):主机输入从机输出信号,由从机发出;
SS(Slave Selected):片选信号,由主机发出,低电平有效;
多个从设备:
当主设备 (Master) 连接多个从设备 (Slave)时,主设备要使用SS片选信号来决定与哪个从设备通信。这点与I2C总线不同,I2C总线采用的是地址识别从设备。
SPI数据传输:
SPI 规定了两个 SPI 设备之间通信必须由主设备来控制从设备, 一个主设备可以通过提供时钟以及对从设备进行片选 (Slave Select) 来控制多个从设备,SPI 协议还规定从设备的时钟由主设备通过 SCLK 管脚提供给从设备, 从设备本身不能产生或控制时钟,没有 时钟则从设备不能正常工作。时钟通常几兆赫。主设备在SS引脚产生逻辑0低电平,
在一个时钟周期内,发生一次全双工数据传输,主设备在MOSI发送一位,从设备读一位。当从设备在MISO发送以为,主设备读一位。此顺序要保持,即使打算在一个方向上传输数据。
传输通常涉及一些给定字大小的两个移位寄存器,例如8位,主器件中有1个,从器件中有1个。 它们以虚拟环形拓扑连接。 数据通常以高有效位首先移出,同时将新的低有效位移位到同一个寄存器中。 同时,来自对方的数据被移入低有效位寄存器。 在寄存器位被移出并进入后,主器件和从器件已经交换了寄存器值。 如果需要交换更多的数据,则重新加载移位寄存器,重复该过程。 传输可能会持续任何数量的时钟周期。 完成后,主器件停止切换时钟信号,通常取消选择从机。
传输通常由8位字组成。 然而,其他字大小也是常见的,例如用于触摸屏控制器或音频编解码器的16位字,如德州仪器的TSC2101,或许多数模转换器或模数转换器的12位字 。
总线上未使用芯片选择线激活的每个从器件都必须忽略输入时钟和MOSI信号,而不能驱动MISO。