news 2026/6/5 13:57:07

SPI协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SPI协议

一、定义

SPI 是一个同步的数据总线,也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和接收端的完美同步

边沿触发

总线接口 ( 引脚 ) SCK 、 MOSI 、 MISO 、 CS

CS信号线进行从机的选择

遵循一主多从或者一主一从的结构

数据帧长度 8bit 或 1 6bit

数据传输的格式 MSB 或 LSB

MSB表示先发送最高位;LSB表示发送最低位

工作过程

通信总是由主机发起;主机通过MOSI引脚给从机发数据;从机同时通过MISO引脚给主机发送数据;由同一个时钟进行的同步全双工(也可以半双工和单工)

二、通信协议

SPI控制器挂在APB2总线上的

通信过程

  • 主机先将NSS信号拉低,这样保证开始接收数据;

  • 接收端检测到时钟的边沿信号时,它将立即读取数据线上的信号,这样就得到了一位数据(1 bit);

由于时钟是随数据一起发送的,因此指定数据的传输速度并不重要,尽管设备将具有可以运行的最高速度。

  • 主机发送到从机:主机产生相应的时钟信号,然后数据一位一位地从MOSI信号线上进行发送到从机;

  • 主机接收从机数据:如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO信号线发送;

时钟极性

除了配置串行时钟速率(频率)外,SPI主设备还需要配置时钟极性

时钟极性通常写为CKPCPOL

时钟极性和相位共同决定读取数据的方式,比如信号上升沿读取数据还是信号下降沿读取数据;

  • CKP = 0:时钟空闲 IDLE 为低电平 0;(上升沿触发)

  • CKP = 1:时钟空闲 IDLE 为高电平 1;(下降沿触发)

时钟相位

除配置串行时钟速率和极性外,SPI主设备还应配置时钟相位(或边沿)。

时钟相位通常写为CKECPHA

时钟相位/边沿,也就是采集数据时是在时钟信号的具体相位或者边沿:

  • CKE = 0:在时钟信号SCK的第一个跳变沿采样;

  • CKE = 1:在时钟信号SCK的第二个跳变沿采样;

三、硬件实现

在单片机上选PA4到7

引脚配置

STM32 手册规定 SPI 最大速率是18 MHz

四、实现结果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 13:57:00

国产EDA工具立创EDA实战评测:从入门到快速原型设计的完整指南

1. 从一次“律师函警告”说起:我们为什么需要关注国产EDA几年前,我在一家规模不小的硬件公司任职。一个普通的下午,IT部门的同事神色紧张地找到我们硬件组,说收到了一封来自某国际EDA巨头的邮件,附件是一份措辞严谨的律…

作者头像 李华
网站建设 2026/6/5 13:56:11

AI如何提升软件项目交付效率——进度提速质量兜底经验杠杆

AI如何提升软件项目交付效率——进度提速、质量兜底、经验杠杆 这不是一篇"AI真好用"的体验报告。是做了大量真实项目之后总结的:AI到底能替代什么、不能替代什么、怎么用才能在真实软件交付中让效率翻倍。附一套"两步法"操作框架和六个测试环节…

作者头像 李华
网站建设 2026/6/5 13:56:09

在PowerBuilder里手写XML序列化——没有现成库的年代怎么拼报文

在PowerBuilder里手写XML序列化——没有现成库的年代怎么拼报文 PB 9.0原生没有XML序列化,但医保接口的对接需要XML格式的报文。没有库、没有现成的工具——全靠字符串拼接和OLE调用MSXML自己造一套。这篇记录在PB里从零手写XML编解码的过程:转义字符处理…

作者头像 李华
网站建设 2026/6/5 13:54:32

QueryExcel:如何3分钟内完成100个Excel文件的内容搜索?

QueryExcel:如何3分钟内完成100个Excel文件的内容搜索? 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 在日常办公场景中,Excel文件内容搜索已成为数据工作者面临的…

作者头像 李华
网站建设 2026/6/5 13:54:28

千问 LeetCode 2959. 关闭分部的可行集合数目 Java实现

这道题是一道经典的状态压缩(二进制枚举) 图论(最短路)的问题。💡 核心解题思路1. 状态压缩(二进制枚举):题目中分部的数量 n 最大为 10,这是一个非常小的数据规模。我们…

作者头像 李华
网站建设 2026/6/5 13:50:12

Spring AI 生产级实战:向量数据库

一、为什么需要向量数据库? 在前面的 Spring AI 生产级实战中,我们已经讲到了 RAG,也就是检索增强生成。 RAG 的核心思路是: 先检索相关资料,再让大模型基于资料回答。但这里有一个关键问题:用户提出的问题…

作者头像 李华