MCU常见通信总线串讲(四)—— SPI总线协议

🙌秋名山码民的主页
😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
获取源码,添加WX

目录

  • 前言
  • 一、SPI总线协议基本概念
  • 二、SPI协议层
  • 三、I2C和SPI的区别
  • 四、SPI的定义
  • 最后


前言

首先明确一个概念,关于MCU中通信总线和通信协议,通信总线是一种用于连接各种外设和模块的物理接口,它可以传输数据和控制信息。通信协议则是指在通信总线上传输数据时所遵循的规则和约定,以确保不同设备之间能够正确地交换信息,我们也可以把他叫做通信总线协议。

系列文章,主要讲解以下几个总线协议,读者可以按需选择:

  1. UART和USART
  2. RS232、RS485总线
  3. IIC总线
  4. SPI总线
  5. CAN总线
  6. USB总线

一、SPI总线协议基本概念

SPI是一种高速全双工的通信总线。
在这里插入图片描述
如上图所示,SPI有三根总线,和一根片选线组成,3条总线分别为SCK、MOSI、MISO,片选线为SS

  1. SS(Slave Select):从设备选择信号线,常称为片选信号线
  2. SCK(Serial Clock):时钟信号线,用于通信数据同步
  3. MOSI(Master Output,Slave Input):主设备输出/从设备输入引脚
  4. MISO(Master Input,Slave Output):主设备输入/从设备输出引脚

二、SPI协议层

在这里插入图片描述
NSS、SCK、MOSI信号都由主机控制产生,而MISO的信号由从机产生,主机通过该信号线读取从机的数据。MOSI与MISO的信号只在NSS为低电平的时候才有效,在SCK的每个时钟周期,MOSI和MISO传输一位数据。

  1. NSS信号线由高变低,是SPI通信的起始信号,NSS信号线由低变高是SPI通信的停止信号
  2. 数据有效性:观察图中的②③④⑤标号处,MOSI及MISO的数据在SCK的上升沿期间变化输出,在SCK的下降沿时被采样。即在SCK的下降沿时刻,MOSI及MISO的数据有效,高电平时表示数据“1”,为低电平时表示数据“0”。在其他时刻,数据无效,MOSI及MISO为下一次表示数据做准备。
  3. CPOL/CPHA及通信模式:
    在这里插入图片描述

三、I2C和SPI的区别

I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)都是两种常见的串行通信协议,它们在硬件接口、数据传输方式和应用场景上有一些明显的区别。

  1. 硬件接口:

    • I2C需要两根线,即时钟线(SCL)和数据线(SDA)。它使用开漏输出来实现总线的双向数据通信。
    • SPI通信需要至少四根线,包括时钟线(SCLK)、数据输入线(MISO)、数据输出线(MOSI)和片选线(SS)。
  2. 数据传输方式:

    • I2C使用一个主从架构,允许多个设备连接到同一总线上。数据是以帧的形式进行传输,每个帧包括一个起始位、7或8位数据位、一个可选的ACK位和一个停止位。
    • SPI通常采用一对主从设备的方式,其中一个设备作为主控制器,其他设备作为从设备。它通过全双工通信进行数据传输,可以实现高速数据传输。
  3. 应用场景:

    • I2C通常用于连接低速外设,如传感器、EEPROM和实时时钟等,因为它比较简单并且支持多主机连接。
    • SPI通常用于连接高速外设,如存储器芯片、显示器、AD/DA转换器等,因为它可以提供更高的数据传输速率和灵活性。

四、SPI的定义

初始化结构体及函数定义在库文件stm32f10x_spi.h及stm32f10x_spi.c中,

typedef struct
{uint16_t SPI_Direction;           /*设置SPI的单双向模式 */uint16_t SPI_Mode;                /*设置SPI的主/从机端模式 */uint16_t SPI_Data Size;           /*设置SPI的数据帧长度,可选8位或16位 */uint16_t SPI_CPOL;                /*设置时钟极性CPOL,可选高或低电平*/uint16_t SPI_CPHA;                /*设置时钟相位,可选奇或偶数边沿采样 */uint16_t SPI_NSS;                 /*设置NSS引脚由SPI硬件控制还是软件控制*/uint16_t SPI_Baud Rate Prescaler; /*设置时钟分频因子,fpclk/分频数=f SCK */uint16_t SPI_First Bit;           /*设置MSB/LSB先行 */uint16_t SPI_CRCPolynomial;       /*设置CRC校验的表达式 */
} SPI_Init Type Def;

最后

如果本文对你有所帮助,还请三连支持一下博主!
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/164882.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能网联汽车基础软件信息安全需求分析

目录 1.安全启动 2.安全升级 3.安全存储 4.安全通信 5.安全调试 6.安全诊断 7.小结 1.安全启动 对于MCU,安全启动主要是以安全岛BootROM为信任根,在MCU启动后,用户程序运行前,硬件加密模块采用逐级校验、并行校验或者混合校…

深度图(Depth Map)

文章目录 深度图深度图是什么深度图的获取方式激光雷达或结构光等传感器的方法激光雷达RGB-D相机 双目或多目相机的视差信息计算深度采用深度学习模型估计深度 深度图的应用场景扩展阅读 深度图 深度图是什么 深度图(depth map)是一种灰度图像&#xf…

2011年408计网

第33题 TCP/IP 参考模型的网络层提供的是()A. 无连接不可靠的数据报服务B. 无连接可靠的数据报服务C. 有连接不可靠的虚电路服务D. 有连接可靠的虚电路服务 本题考查TCP/IP 参考模型的网络层 若网络层提供的是虚电路服务,则必须建立网络层的…

vite + electron引入itk报错

代码 import { readImageArrayBuffer } from itk-wasm console.log(readImageArrayBuffer)通过itk-wasm官网,创建新的项目vitevue(vue2或者vue3),都没问题。加入electeon后包此错。通过排查,意外找到原因,…

TCP/IP的基础知识

文章目录 TCP/IP的基础知识硬件(物理层)网络接口层(数据链路层)互联网层(网络层)TCP/IP的具体含义传输层应用层(会话层以上的分层)TCP/IP分层模型与通信示例发送数据包的一个例子接收…

Mysql数据库 11.SQL语言 储存过程 下 储存过程管理和游标

一、存储过程管理 1.查询存储过程 查询所有储存过程 语法 show procedure status; 代码实现 #查询存储过程 show procedure status; 运行结果 加入条件查询储存过程 语法 show procedure status where db储存过程名; 代码实现 #查询带有条件的储存过程 查询名字为pro…

龙迅LT8911EXB功能概述 MIPICSI/DSI TO EDP

LT8911EXB 描述: Lontium LT8911EXB是MIPIDSI/CSI到eDP转换器,单端口MIPI接收器有1个时钟通道和4个数据通道,每个数据通道最大运行2.0Gbps,最大输入带宽为8.0Gbps。转换器解码输入MIPI RGB16/18/24/30/36bpp、YUV422 16/20/24bp…

ElementUI-tree拖拽功能与节点自定义

前言 在管理端会遇到多分类时,要求有层次展示出来,并且每个分类有额外的操作。例如:添加分类、编辑分类、删除、拖到分类等。 下面将会记录这样的一个需求实习过程。 了解需求 分类展示按层级展示分类根据特定的参数展示可以操作的按钮&a…

详解 SpringMVC 的 HttpMessageConverter

文章目录 前言参考资料内容1、[RequestBody ](/RequestBody )2、RequestEntity3、[ResponseBody ](/ResponseBody )4、SpringMVC处理json5、SpringMVC处理ajax6、RestController注解7、ResponseEntity 推荐读物 《Spring Boot微服务实战(第2版)》内容简介目录 前言 HttpMessag…

【解密ChatGPT】:从过去到未来,揭示其发展与变革

🎊专栏【ChatGPT】 🌺每日一句:天行健,君子以自强不息,地势坤,君子以厚德载物 ⭐欢迎并且感谢大家指出我的问题 文章目录 一、ChatGPT的发展历程 二、ChatGPT的技术原理 三、ChatGPT的应用场景 四、ChatGPT的未来趋势 五、总结 引言:随着…

目标检测算法 - YOLOv1

文章目录 1. 作者简介2. 目标检测综述3. YOLOv1算法3.1 预测阶段3.2 预测阶段后处理3.3 训练阶段 YOLO的全称是you only look once,指只需要浏览一次就可以识别出图中的物体的类别和位置。 YOLO是目标检测模型。目标检测是计算机视觉中比较简单的任务,用…

“双11”近300万商家为消费者贴息,花呗分期免息成增长“利器”

今年双11,很多消费者发现,能用花呗分期免息的商品变多了,不光是品牌旗舰店,还有中小淘宝卖家,不少直播间里的商品,都能用花呗分期免息。这背后,是平台、商家对花呗分期免息的重视和需要。 数据…