SPI总线基础知识

SPI简介

SPI(Serial Peripheral Interface)即串行外设接口,是一种高速、全双工、同步的通信总线,常用于 STM32 微控制器与各种外设(如传感器、存储器等)进行通信。

SPI结构和接线

SPI 总线通常由四条信号线组成:

  • SCK(Serial Clock):时钟信号,由主设备产生,用于同步主从设备之间的数据传输。
  • MOSI(Master Output Slave Input):主设备输出、从设备输入,主设备通过此线向从设备发送数据。
  • MISO(Master Input Slave Output):主设备输入、从设备输出,从设备通过此线向主设备发送数据。
  • NSS(Negative Slave Select):从设备选择信号,主设备通过拉低该信号来选中对应的从设备,低电平有效。

线路连接时主机的MOSI分别和从机的MOSI连接,从机的MISO分别和主机的MISO连接,SCK由主机的SCK分别连接到从机的SCK,NSS由主机对应的引脚连接到对应的从机。

SPI相关设置参数

1. 工作模式(主模式与从模式)

  • 含义
    • 主模式(Master):主设备负责产生时钟信号(SCK),并控制整个通信过程,包括选择从设备(通过拉低 SS 信号)和发起数据传输。主设备可以主动向从设备发送数据,也可以接收从设备返回的数据。
    • 从模式(Slave):从设备被动响应主设备的通信请求,它接收主设备产生的时钟信号,并根据该信号进行数据的发送和接收。从设备不能主动发起通信,只有在主设备选中它之后才能进行数据交互。
  • 影响:工作模式的选择决定了设备在 SPI 通信网络中的角色和功能,主从设备必须相互配合才能完成数据的正常传输。

2. 时钟极性(CPOL - Clock Polarity)

  • 含义:CPOL 定义了时钟信号(SCK)在空闲状态(即没有数据传输时)的电平状态。它有两种取值:
    • CPOL = 0:表示 SCK 在空闲时为低电平。
    • CPOL = 1:表示 SCK 在空闲时为高电平。
  • 影响:CPOL 影响了数据采样和发送的时机。不同的 CPOL 设置需要主从设备保持一致,否则会导致数据传输错误。

3. 时钟相位(CPHA - Clock Phase)

  • 含义:CPHA 定义了数据采样和发送相对于时钟信号的边沿关系,也有两种取值:
    • CPHA = 0:表示数据在 SCK 的第一个边沿(上升沿或下降沿,取决于 CPOL)进行采样,在第二个边沿进行发送。
    • CPHA = 1:表示数据在 SCK 的第二个边沿进行采样,在第一个边沿进行发送。

  • 影响:CPHA 与 CPOL 共同决定了 SPI 的四种时钟模式,主从设备必须使用相同的时钟模式才能正确地进行数据传输。

4. 数据帧格式

  • 含义:数据帧格式指定了每次传输的数据位数,常见的有 8 位和 16 位两种格式。
    • 8 位数据帧:每次传输一个字节的数据,适用于大多数简单的外设通信。
    • 16 位数据帧:每次传输两个字节的数据,可提高数据传输效率,适用于需要高速传输大量数据的场景。
  • 影响:主从设备需要使用相同的数据帧格式,否则会导致数据解析错误。

5. 波特率预分频器

  • 含义:波特率预分频器用于设置 SPI 通信的时钟频率,它将系统时钟进行分频,得到 SPI 的时钟信号(SCK)频率。不同的微控制器有不同的预分频系数可选,例如在 STM32 中,波特率预分频器可以设置为 2、4、8、16 等。
  • 影响:波特率预分频器的值决定了 SPI 通信的速率,值越小,SCK 频率越高,通信速度越快,但同时也可能增加信号干扰和传输错误的风险;值越大,SCK 频率越低,通信速度越慢,但数据传输的稳定性可能会提高。主从设备的波特率必须保持一致,以确保数据的正确传输。同时也要考虑硬件是否满足波特率的承载要求。

6.最高有效位(MSB)优先

  • 含义:在 MSB 优先模式下,数据传输时先发送或接收数据的最高位。例如,对于一个 8 位的数据 0b10110100,在 MSB 优先的 SPI 传输中,首先传输的是最高位 1,然后依次是 0110100
  • 应用场景:MSB 优先是 SPI 通信中最常用的传输顺序,许多标准的 SPI 设备(如 SPI 接口的传感器、存储器等)默认都采用 MSB 优先模式进行数据传输。这是因为在很多数据处理和存储系统中,高位数据通常代表更重要的信息,MSB 优先传输符合数据处理的习惯。

7.最低有效位(LSB)优先

  • 含义:在 LSB 优先模式下,数据传输时先发送或接收数据的最低位。对于同样的 8 位数据 0b10110100,在 LSB 优先的 SPI 传输中,首先传输的是最低位 0,然后依次是 0101101
  • 应用场景:LSB 优先模式相对较少使用,但在一些特定的应用场景中可能会用到,例如某些特殊的外设或通信协议要求采用 LSB 优先进行数据传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值