SPI通信

SPI是由Motorola公司提出的一种同步串行外围接口;它在速度要求不高,低功耗,需要保存少量参数的智能化传感系统中得到了广泛应用;

  SPI是一个全双工的同步串行接口,在数据传输过程中,总线上只能是一个主机和一个从机进行通信;

  通信四种模式:

    1、MISO(Master In Slave Out)

       主机输入,从机输出;

    2、MOSI(Master  Out  Slave In)

        主机输出,从机输入;

    3、SCK(Serial  Clock)

        串行时钟信号

    4、SS(Slave  Select)

        从机选择信号,低电平有效;(即作从机时,该位置低)

SPI总线可在软件的控制下构成各种系统

        SPI通信_第1张图片

                      SPI总线与多从机连接

SPI的基本结构相当于两个8位移位寄存器的首尾相接,构成16位的环形移位寄存器,从而实现了主机与从机的数据交换;

          SPI通信_第2张图片

                      SPI接口的基本结构图

SPI主从模式

  设置MSTR(主设备选择)和SPE位(使能位)来选择是否工作在主模式还是从模式;

stm32强大之处:因为从机NSS位必须接0,而主机NSS位接1;stm32可以有软件来设置相应的主从位;

SPI下时钟信号的相位和极性(设置由与之通信的具体芯片来设定)

  SPI接口可由CPOL和CPHA设定4种不同传输格式的时序;

  CPOL决定时钟脉冲SCK的有效脉冲方式(正脉冲、负脉冲)。CPHA决定数据线MOSI什么时候输出数据或采集数据;

  根据CPOL和CPHA的组合数目,一共四种设置情况;

                       SPI通信_第3张图片

数据图分析:

        SPI通信_第4张图片

数据帧的格式

  根据SPI_CR1寄存器中的LSBFIRST位,输出数据位时可以MSB(高位先传)在先也可以是LSB(低位先传),根据SPI_CR1寄存器的DFF位,每个数据帧可以是8位或者16位,所选择的数据帧格式对发送/接收都有效;

SPI通信配置步骤:(在主模式下,串行时钟在SCK脚产生)

  1、通过SPI_CR1寄存器的BR[2:0]位定义串行时钟波特率;

  2、选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系;

  3、设置DFF位来定义8/16位数据帧格式;

  4、配置SPI_CR1寄存器的LSBFIRST位定义帧格式;

  5、如果NSS引脚需要工作在输入模式,硬件模式中在整个数据帧传输期间应把NSS脚连接到高电平;在软件模式中,需要设置SPI_CR1寄存器的SSM和SSI位,如果NSS引脚工作在输出模式,则只需设置SSOE位;

  6、必须设置MSTR和SPE位(只当NSS被连到高电平,这些位才能保存置位)。

    在这个配置中,MOSI脚是数据输出,而MISO脚是数据输入;

SPI通信过程:

  SPI通信_第5张图片

  

 

你可能感兴趣的:(SPI)