当前位置: 首页 > news >正文

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协议的数据传输一般是:指令码加读写数据

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

http://www.lryc.cn/news/293497.html

相关文章:

  • Debezium系列之:MariaDB10.5以上版本赋予数据库账号读取binlog权限的变化
  • 迅为STM32MP157开发板底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块
  • 「实用分享」用界面组件Telerik UI for Blazor增强你的财务图表!
  • 使用org.openscada.utgard java opcda库做opc客户端时长期运行存在的若干问题
  • 杰克与魔法树的冒险
  • 第九节HarmonyOS 常用基础组件22-Marquee
  • 烽火传递
  • 《深入浅出Go语言》大纲
  • flv视频格式批量截取封面图(不占内存版)--其他视频格式也通用
  • 【鸿蒙】大模型对话应用(三):跨Ability跳转页面
  • 明道云入选亿欧智库《AIGC入局与低代码产品市场的发展研究》
  • 【深度学习】SDXL TensorRT Dockerfile Docker容器
  • 深入了解 Ansible:全面掌握自动化 IT 环境的利器
  • PPT、PDF全文档翻译相关产品调研笔记
  • JavaScript 垃圾回收的常用策略和内存管理
  • 如何结合ChatGPT生成个人魔法咒语词库
  • 瑞_23种设计模式_抽象工厂模式
  • 比瓴科技入围软件供应链安全赛道!为关键信息基础设施安全建设注入新动力
  • 回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小二乘支持向量机的数据多输入单输出回归预测
  • 初级通信工程师-通信业务
  • Python—数据可视化Seaborn大全:参数详解与实战案例全解析【第52篇—python:Seaborn大全】
  • 手机上0.2秒出图、当前速度之最,谷歌打造超快扩散模型MobileDiffusion
  • 浅谈WPF之UniformGrid和ItemsControl
  • SEO系列--robots.txt的用法
  • 环形链表(快慢指针)
  • vue day06
  • ffmpeg 输入文件,输入出udp-ts 指定pid、Programid ts流参数
  • 操作系统透视:从历史沿革到现代应用,剖析Linux与网站服务架构
  • 金蝶82新建员工信息维护菜单,并新建导入模板,导入时出现不能在此处导入模板
  • 套你npm镜像