【通信总线协议】SPI串行外设接口通信详解

原文链接与标题如下 ,本文仅转载学习阅读使用,讲通信总线非常精简明了的一位大佬;
通信总线协议之SPI通信详解

通信协议与接口知识参考文章:

【通信理论知识】数据传送的方式:串/并行;传输方向:单工、半/全双工;传输方式:同步/异步
【串口通信详解】USART/UART、RS232、RS485标准接口与协议特点解析
【同步串行通信接口】IIC(Inter-Integrated Circuit)通信总线协议详解
【通信总线协议】SPI串行外设接口通信详解
【CAN总线协议】CAN通信入门总览:常见协议优劣、CAN应用、协议组成与标准、传输原理的实现、仲裁机制、传输与时序初探
进阶:
【通信模块】简单玩转WiFi模块(ESP32、ESP8266)
【通信模块】WiFi&Bluetooth简介与对比
【通信模块】LoRa与LoRaWAN简介
【通信协议】硬件通信协议速率对比

文章目录

引言:I2C与SPI异同

  1. SPI总线简介

  2. SPI寻址方式

  3. SPI通信过程

  4. SPI设备时钟

  5. SPI 4种工作模式

  6. SPI通信的优缺点

引言: I2C与SPI异同

相同

串行、同步;	TTL电平,传输距离不长;	主从方式;

不同

通信:
	2C为半双工			SPI全双工
寻址:
	I2C有应答			SPI无应答
	I2C通过向总线广播从机地址寻址		SPI通过使能不同CS引脚寻址
极性和相位:
	I2C时钟极性和相位固定  SPI极性和相位有4种模式

总结

I2C一般几百kbps,超高速模式下能5Mbp;
SPI无应答、快速寻址等优势,所以SPI速率比I2C快很多,几M到几十Mbps。

图片

1. SPI总线简介

面试真题:谈一谈SPI总线的实现原理?

答: SPI总线是一种四线式串行通信总线,包括一个主机和多个从设备。
	主机通过时钟线(SCLK)控制通信的速率,并使用MOSI线和MISO线分别进行数据的发送和接收;
  • SPI是串行外设接口(Serial Peripheral Interface)的缩写,是美国摩托罗拉公司(Motorola)最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口,是一种高速、全双工、同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制,通常能达到甚至超过10M/bps。

  • SPI采用主从方式工作,一般有一个主机和一个从机或者一个主机和多个从机通信,不支持多主机。其中提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备发起,当存在多个从设备时,通过各自的片选信号进行管理。

  • 特点:

    Serial Peripheral Interface(SPI),串行外设接口

    高速、全双工、同步

    一个主机,若干个从机

  • SPI至少需要4根线:

    • SCLK : 时钟线
    • MOSI : 主设备输出,从设备输入,主机发送从机接收
    • MISO : 主设备输入,从设备输出,从机发送主机接收
    • CS :片选(chip slelce),用于寻址,多个从设备可为多条图片

2. SPI寻址方式

  • 当主设备要和从设备进行通信时,主设备需要先将对应的从设备的片选线CS上发送使能信号,即将对应从设备连接的CS管脚拉高或者拉低,表示选中的该从设备。
  • 使能信号为高电平还是低电平根据从机而定。图片

3. SPI通信过程

  • 通信原理:SPI主设备和从设备都有一个串行移位寄存器,主设备通过向它的SPI串行寄存器写入一个字节来发起一次传输图片

  • SPI数据传输时先发高位后发低位,例如发送0xAA (10101010B),先发送高位1,发送顺序为 :1 0 1 0 1 0 1 0

  • 数据线的高电平表示逻辑 1,低电平表示逻辑 0

  • SPI一个字节传送完成后,无需应答即可开始下一个字节的发送

  • SPI采用同步方式工作,时钟线在上升沿或者下降沿时发送器向数据线上发送数据,紧接着在下降沿或者上升沿时接收器从数据线上读取数据,完成一个数据的传输,8个时钟周期完成一个字节的数据传输。图片图片图片

4. SPI设备时钟

  • SPI时钟特点主要包括:时钟速率时钟极性时钟相位三方面。
  • 时钟速率:SPI总线上的主设备必须在通信开始时候配置并生成相应的时钟信号。从理论上讲,只要实际可行,时钟速率就可以为任何速率,当然这个速率受限于每个系统能提供多大的系统时钟频率,以及最大的SPI传输速率。
  • 时钟极性:根据硬件制造商的命名规则不同,时钟极性通常写为CKPCPOL。时钟极性和相位共同决定读取数据的方式,比如信号上升沿读取数据还是信号下降沿读取数据。
  • 时钟相位 :根据硬件制造商的不同,时钟相位通常写为CKECPHA。顾名思义,时钟相位/边沿,也就是采集数据时是在时钟信号的具体相位或者边沿;

5. SPI 4种工作模式

  • SPI总线有4种工作模式,取决于极性CPOL相位CPHA的设置

  • CPOL表示SCLK空闲是的状态

    • CPOL = 0, 空闲时SCLK为低电平
    • CPOL = 1, 空闲时SCLK为高电平
  • CPHA表示采样时刻

    • CPHA = 0,每个周期的第一个时钟沿采样
    • CPHA = 1,每个周期的第二个时钟沿采样
      图片
  • 四种SPI模式下的通信示例如下图,数据显示在MOSI和MISO线上,传输的开始和结束用绿色虚线表示,采样边沿用橙色虚线表示,移位边沿用蓝色虚线表示

    1. SPI模式0,CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。图片2. SPI模式1,CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出图片3. SPI模式2,CPOL = 1,CPHA = 1:CLK空闲状态 = 高电平,数据在下降沿采样,并在上升沿移出图片4. SPI模式3,CPOL = 1,CPHA = 0:CLK空闲状态 = 高电平,数据在上升沿采样,并在下降沿移出图片

  • 对于一个特定的从设备来说,一般在出厂时就会将其工作模式确定,使用该设备时需要将主设备模式设置成从设备模式,否则无法进行通信。

6. SPI通信的优缺点

  • 优点

    1. 无起始位和停止位,因此数据位可以连续传输而不会被中断;
    2. 没有像I2C这样复杂的从设备寻址系统;
    3. 数据传输速率比I2C更高(几乎快两倍);
    4. 分离的MISO和MOSI信号线,因此可以同时发送和接收数据;
    5. 极其灵活的数据传输,不限于8位,它可以是任意大小的字;
    6. 非常简单的硬件结构,从站不需要唯一地址(与I2C不同)。
    7. 从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同)。
    8. 不需要收发器(与CAN不同)。
  • 缺点

    1. 使用四根信号线(I2C和UART使用两根信号线);
    2. 无法确认是否已成功接收数据(I2C拥有此功能);
    3. 没有任何形式的错误检查,如UART中的奇偶校验位;
    4. 只允许一个主设备;
    5. 没有硬件从机应答信号(主机可能在不知情的情况下无处发送);
    6. 没有定义硬件级别的错误检查协议;
    7. 与RS-232和CAN总线相比,只能支持非常短的距离;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值