zoukankan      html  css  js  c++  java
  • SPI通信基础学习

    SPI是“Serial Peripheral Interface”的缩写,即“串行外设接口”,是摩托罗拉公司推出的一种串行接口通信协议。

    接线的示意图:

    SPI总线的原理可以借鉴I2C,两者不同之处有以下几点:

    (1)I2C只有两根信号线,一条数据线SDA,一条时钟线SCL;SPI有四根信号线:MISO、MOSI、SCK和NSS。

    • MOSI:Master Output Slave Input,主设备输出/从设备输入。数据从主机输出到从机,主机发送数据。
    • MISO:Master Iutput Slave Output,主设备输入/从设备输出。数据由从机输出到主机,主机接收数据。
    • SCK:时钟信号线,用于通讯同步。
    • NSS:片选信号线,用于选择通讯的从设备,也可用CS(低电平有效)表示。每个从设备都有一条独立的NSS信号线,主机通过将某个设备的NSS线置低电平来选择与之通讯的从设备。所以SPI通讯以NSS线电平置低为起始信号,以NSS线电平被拉高为停止信号。

    (2)I2C通信是半双工的,SPI通信是全双工的。即I2C不能收发数据同时进行,而SPI可以。

    (3)I2C依靠地址来选取从设备,且每次收发都有应答信号;SPI依靠片选信号来选取从设备,没有应答信号,随便收发。

    工作过程:

    以从机的片选线NSS被拉低开始,每个时钟周期进行一次数据触发和采样,最后当NSS被拉高后,通信结束。

    上图展示的工作模式是SCK上升沿触发,下降沿采样。SPI实际有四种工作方式,取决于“时钟极性CPOL”和“时钟相位CPHA”的状态,如下。

    SPI四种工作模式的主要区别是总线空闲时SCK的状态数据采样时刻

    如果CPOL被清0,则SCK在空闲状态保持低电平,反之被置1则保持高电平;如果CPHA位被清0,则在SCK每个时钟周期的第1个边沿(奇数边沿)进行数据位采样,反之被置1则在SCK每个时钟周期的第2个边沿(偶数边沿)采样。

    下表展示了SPI四种工作模式的状态:

    数据传输时从最高位开始,一位一位传输。


    参考文章:

    https://zhuanlan.zhihu.com/p/27376153

    https://zhuanlan.zhihu.com/p/27462822

    https://zhuanlan.zhihu.com/p/33356830

  • 相关阅读:
    产品设计理应遵循哪些原则?
    产品经理必读的九步法
    exec
    Class convert
    Connecting method
    ASP.NET读写操作
    Encrypt Decrypt
    EventHandler, EventArgs
    Convert using code
    Dictionary List
  • 原文地址:https://www.cnblogs.com/banmei-brandy/p/11277822.html
Copyright © 2011-2022 走看看