• SPI通信协议


    一、什么是SPI协议

    SPI(Serial Peripheral Interface,串行外围设备接口)通讯协议,是 Motorola 公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,只需要4根信号线即可,节约引脚,利于PCB布局。广泛用于 EEPROM、Flash、RTC(实时时钟)、ADC(数模转换 器)、DSP(数字信号处理器)以及数字信号解码器。

    优点:

    • 支持全双工通信和半双工通信
    • 通讯方式较为简单,数据传输方式灵活,不限于8位数据,可以是任意大小的字;
    • 数据传输速率较快(相对于UART、IIC);

    缺点:

    • 没有指定的流控制;
    • 没有应答机制,在数据可靠性上有一定缺陷;
    • 只支持一个主设备;
    • 引脚相对较多;

    二、SPI物理层

    SPI通信设备之间采用主从通信模式,通讯双方有主从之分,根据从机设备的数量,SPI 通讯设备之间的连接方式可分为一主一从一主多从
    在这里插入图片描述
    SPI通信需要四根信号线:
    sclk:由主机产生的同步时钟,用于同步数据;不同的从机设备所支持的最高时钟频率不同。
    cs_n:片选信号,用于控制从机是否被主机选中进行通信,当片选信号有效时,主机对从机的操作才有效。有多少个从机就有多少条片选信号线。
    mosi:主机输出/从机输入,主机输出数据给从机,数据方向由主机到从机。
    miso:主机输入/从机输出,主机接收从机发送的数据,数据方向由从机到主机。
    注意:传输数据时,以MSB的形式传输。

    MSB:Most Significant Bit,高位在前传输。
    LSB:Last(Least) Significant Bit,低位在前传输。

    三、SPI协议层

    SPI通信一般有4种不同的模式,不同的从设备在出厂时被厂家配置为其中几种通信模式,通信模式是不允许用户修改的。主设备和从设备必须在同一模式下进行通信,否则数据会接收错误。SPI的通信模式是由CPOL:时钟极性CPHA:时钟相位决定;CPOL控制SCLK的时钟极性,CPHA控制数据与时钟的对齐模式。
    CPOL = 0:SCLK空闲时为低电平,第一个时钟沿为上升沿。
    CPOL = 1:SCLK空闲时为高电平,第一个时钟沿为下降沿。
    CPHA = 0:时钟变化的第一个变化沿改变数据,第二个变化沿锁存数据。
    CPHA = 1:时钟变化的第一个变化沿锁存数据,第二个变化沿改变数据。

    • 模式0:CPOL = 0,CPHA = 0;SCLK空闲时为低电平,时钟前沿采样,时钟后沿输出。
    • 模式1:CPOL = 0,CPHA = 1;SCLK空闲时为低电平,时钟前沿输出,时钟后沿采样。
    • 模式2:CPOL = 1,CPHA = 0;SCLK空闲时为高电平,时钟前沿采样,时钟后沿输出。
    • 模式3:CPOL = 1,CPHA = 1;SCLK空闲时为高电平,时钟前沿输出,时钟后沿采样。

    在这里插入图片描述
    我们经常用到的是模式0和模式3。

  • 相关阅读:
    学成在线第二天
    CodeLab:一款让你体验丝滑般的云化JupyterLab
    vue render 函数自定义事件
    4. 条件查询
    靠!我被项目经理和同事嘲笑了,因为不会远程debug调试...
    docker 常用命令 快捷命令
    AntDB数据并行加载工具的实现
    Python自学笔记11-函数的定义和调用
    pytorch & tensorflow 保存和加载模型
    telnet测试smtp
  • 原文地址:https://blog.csdn.net/weixin_45137708/article/details/127891959