STM32--SPI通信协议(1)SPI基础知识总结

前言

I2C (Inter-Integrated Circuit)和SPI (Serial Peripheral Interface)是两种常见的串行通信协议,用于连接集成电路芯片之间的通信,选择I2C或SPI取决于具体的应用需求。如果需要较高的传输速度和简单的接口,可以选择SPI。如果需要连接多个设备或硬件复杂性较低的解决方案,可以选择I2C。

一、SPI介绍

SPI(Serial Peripheral Interface)是一种同步串行通信协议,用于在微控制器和外围设备之间传输数据。SPI使用四根线进行通信,即主设备和从设备之间的主时钟线(SCLK)、数据输出线(MOSI)、数据输入线(MISO)和片选线(SS)。

SPI协议可以实现高速数据传输和多设备通信,并且具有简单的硬件实现和低功耗特点,常用于与外围设备(如传感器、存储器、显示屏等)的通信。

二、硬件电路

MOSI:主机输出从机输入,主机接入这根线,就是MO,从机接入这根线就是SI;

MISO:主机输入从机输出,主机接入这根线,就是MI,从机接入这根线就是SO;

SS :片选,用来指定和哪个从机通信,主机想指定与谁通信,就把对应的SS输出线置低电平,但同一时间只能指定一个从设备,否则会导致数据冲突;

三、SPI基本原理--移位示意图

假设上升沿开始移位

时钟的上升沿:

时钟的下降沿:

由主机提供的时钟控制着主机的移位寄存器,一般SPI都是高位先行:每来一个时钟,主机的移位寄存器就会向左进行移位,同时这个时钟也通过SCK引脚进行输出,控制从机的移位寄存器进行左移。然后主机移位寄存器左边移除的数据通过MOSI引脚输入到从机移位寄存器的右边,从机移位寄存器左边移除的数据通过MISO引脚输入到主机移位寄存器的右边

四、SPI时序基本单元

1、起始与终止

2、交换一个字节

SPI可以通过配置两个位来选择什么时候开始移位,上升沿移位或下降沿移位;

CPOL(Clock Polarity)时钟极性;CPHA(Clock Phase)时钟相位;每一位都可以选择0或1,共4种模式。

模式1:

因为可能有多个从机设备,在MISO线如果多个从机设备始终是推挽输出,会导致冲突,所以在从机的SS为高电平时,MISO引脚必须切换为高阻态(就是相当于引脚断开,不输出任何电平)。

模式0:

与模式1的区别就是相位提前,在SS下降沿就要移除数据。

模式0与模式2,模式1与模式3的区别都只是SCK的极性取反。

五、SPI通信流程

SPI协议的通信方式是通过主设备向从设备发送时钟信号,并在时钟信号的上升沿或下降沿传输数据。主设备控制片选线,选择要与之通信的从设备。

一般来说,SPI协议的通信流程如下:

  1. 主设备将片选线拉低,选中一个从设备。
  2. 主设备将数据发送到从设备的数据输出线。
  3. 主设备发送时钟信号,从设备根据时钟信号接收数据。
  4. 从设备将数据发送到主设备的数据输入线。
  5. 主设备继续发送时钟信号,从设备继续传输数据。
  6. 主设备将片选线拉高,结束通信。

SPI协议的数据传输一般是:指令码加读写数据

从设备一般都会有一个指令集来规定该指令的功能。

相关推荐
fox08151 小时前
栈空间带来的大问题
单片机·嵌入式硬件
wuyk5552 小时前
从零吃透Modbus通信|第3章:STM32 Modbus RTU主机
服务器·开发语言·网络·数据结构·stm32·单片机·嵌入式硬件
恒锐丰小瑞4 小时前
率能SS6285L 18V/5A/单通道直流电机驱动IC,超低导通电阻(58mΩ)与多重保护,用于电子锁/玩具/机器人
单片机·嵌入式硬件·机器人
天空'之城4 小时前
单片机基础核心知识点汇总(二十)
单片机·嵌入式硬件
笨笨饿5 小时前
#121_图传中的H.364编码与MP4的联系
linux·运维·前端·单片机·嵌入式硬件·面试·职场和发展
送外卖的工程师5 小时前
STM32智能鞋柜(机智云)
stm32·单片机·嵌入式硬件
Romantic_love_7 小时前
USART串口初始化源码解析
stm32·单片机·嵌入式硬件·学习
oshan20127 小时前
零基础STM32入门教程--11-USART/UART 串行通迅
stm32·单片机·嵌入式硬件
BW.SU8 小时前
RUI Studio--嵌入式 UI 开发新范式
单片机·ui·嵌入式开发
集芯微电科技有限公司8 小时前
700V/17A高频开关低导通阻GaN HEMT驱动器适用于快充,LLC,PFC功率校正
人工智能·嵌入式硬件·深度学习·神经网络·机器学习·生成对抗网络·计算机外设