【嵌入式】STM32中的SPI通信
SPI是由摩托罗拉公司开发的一种通用数据总线,其中由四根通信线,支持总线挂载多设备(一主多从),是一种同步全双工的协议。主要是实现主控芯片和外挂芯片之间的交流。这样可以使得STM32可以访问并控制各种外部芯片。本文主要是实现STM32连接W25Q64外挂Flash芯片。
I2C的优点是,无论外挂多少设备,只需要两根通信线就可以实现连接,但是由于其默认弱上拉的设计,其由低电平变换到高电平的时候会比较慢,这会使得其通讯频率较低,最高位400kHz。
SPI传输更快,其通讯频率更高,最高可达80MHz。SPI实现简单,没有继承这么多功能,没有应答机制,而且通信线较多。分别位四条通信线:
- SCK(Serial Clock):串行时钟线,由主机控制,将主机的时钟信号同步输出到所有从机中
- MOSI(Master Output Slave Input):主机输出从机输入
- MISO(Master Input Slave Output):主机输入从机输出
- SS(Slave Select):从机选择,其中每一个从机就需要一根SS信号线。当对应的从机SS线低电平的时候,表示主机和当前从机通信
硬件电路配置:
- 所有SPI设备的SCK、MOSI、MISO分别连接在一起
- 主机引出多条SS控制线,分别接到各个从机的SS引脚
- 输出引脚为推挽输出,输入引脚为浮空或者上拉输入
- 从机未被选中时,从机的MISO必须设置为高阻态
SPI基本收发电路

SPI基本收发电路使用的是一个移位模型,该模型中分别连接着主机和从机的两个移位寄存器,这两个移位寄存器就是负责存储需要发送的数据和需要接受的数据的。每当发送一个时钟信号,两个移位寄存器都会向左移位一位,然后最高位就会通过各自的MOSI口发送出去;而最低位则是通过MISO接收对方发送过来的一位数据。这就好像一个摩天轮一样轮转,主机的最高位会被移动到从机的最低位,相对的,从机的最低位会移动到主机的最高位上,经过8个时钟周期,刚好将两个移位寄存器的内容交换一次。
SPI时序基本单元
起始条件:SS从高电平切换为低电平
终止条件:SS从低电平切换到高电平
交换一个字节:
SPI对交换字节的时钟信号规定不是很严格,可以自定义。其中有两个标志位用于自定义时钟信号,CPOL用于指定极性,用于指定空闲状态的时候SCK是否为高电平,CPHA用于指定相位,CPHA=1指定MISO和MOSI在SCK的第一个边沿移入数据,第二个边沿移出数据。

CPOL=0,CPHA=0被称为模式0,是使用最广泛的模式,也是后面我们会继续使用的模式
SPI的报文模型
主机的第一个数据帧一般是指令帧,用于告诉从机需要机型什么操作。往后就是主机和从机的数据交换。
相关文章:
【嵌入式】STM32中的SPI通信
SPI是由摩托罗拉公司开发的一种通用数据总线,其中由四根通信线,支持总线挂载多设备(一主多从),是一种同步全双工的协议。主要是实现主控芯片和外挂芯片之间的交流。这样可以使得STM32可以访问并控制各种外部芯片。本文…...
后端:Spring、Spring Boot-配置、定义bean
文章目录 1. 什么是Bean,如何配置2. 如何配置bean2.1 使用注解Bean2.2 使用注解Import 1. 什么是Bean,如何配置 被spring容器所管理的对象被称为bean,管理方式可以有纯xml文件方式、注解方式进行管理(比如注解Component)。 在Spring Boot中&…...
【Git】Git 远程仓库命令详解
目录 引言1. Git Fetch、Git Pull 和 Git Push 简介1.1 概念总结1.2 图示概念 2. 分支的概念2.1 分支定义2.2 分支的特点2.3 分支示例2.4 基本操作命令2.5 分支的使用场景 3. Git Fetch 用法3.1 基本命令3.2 获取特定分支3.3 查看更新内容3.4 使用示例3.5 适用场景 4. Git Pull…...
html简易流程图
效果图 使用htmlcssjs,无图片,没用Canvas demo: <!DOCTYPE html> <html> <head><link href"draw.css" rel"stylesheet" /><script src"draw.js" type"text/javascript"></…...
Java 入门
目录 Java简介 Java JDK开发环境配置 第一个Java程序 Java标识符与关键字 Java注释 Java常量 Java变量的定义和使用 Java简介 Java简介: Java是由Sun Microsystems公司于1995年推出的一门面向对象的高级程序设计语言,可以运行于多个平台,其…...
JVM基本结构和垃圾回收机制
一、JVM基本结构 Java虚拟机(JVM, Java Virtual Machine)是Java程序执行的环境,其基本结构可以分为以下几个主要部分: 类加载器子系统(Class Loader Subsystem): 负责加载Java类文件到内存中。…...
CentOS 7 安装 ntp,自动校准系统时间
1、安装 ntp yum install ntp 安装好后,ntp 会自动注册成为服务,服务名称为 ntpd 2、查看当前 ntpd 服务的状态 systemctl status ntpd 3、启动 ntpd 服务、查看 ntpd 服务的状态 systemctl start ntpdsystemctl status ntpd 4、设置 ntpd 服务开机启…...
Spring Boot 配置文件启动加载顺序
前言 Spring Boot的启动加载顺序是一个涉及多个步骤和组件的过程。Spring Boot通过一系列默认设置简化了应用程序的配置,使得开发者能够快速地搭建和部署应用。为了实现这一目标,Spring Boot采用了一种分层和优先级机制来加载配置文件。 一、Spring Bo…...
webrtc agc2实现原理
WebRTC的AGC2(自适应增益控制器)是一种用于音频处理的算法,可以根据输入信号的强度自动调整增益,使输出信号的音量保持稳定。其详细原理如下: 噪声估计 首先,AGC2需要对输入信号中的噪声进行估计ÿ…...
2024.11.03 周报
一 实时超分音频同步问题: 处理方向: 按照胡学长的办法尝试: 前面处理视频, 将视频中音频提取出来, 将音频每隔 1-2 秒保存为一段 (这样将音频缓存在内存中) , 然后依次播放, 但是音频是44.1KHz采样率,每秒44100次的频率. 每次间隔中程序处理的极短时间…...
Oceanbase学习之一迁移mysql数据到oceanbase
一、数据库环境 #mysql环境 root192.168.150.162 20:28: [(none)]> select version(); ---------- | version() | ---------- | 8.0.26 | ---------- 1 row in set (0.00 sec) root192.168.150.162 20:28: [(none)]> show variables like ‘%char%’; ---…...
Milvus - GPU 索引类型及其应用场景
1. 背景概述 Milvus 是一款高效的矢量数据库管理系统,支持在高并发和高调用场景下加速相似度搜索。Milvus 的 GPU 支持由 NvidiaRAPIDS 团队提供,可以借助各种 GPU 索引类型来优化性能。本篇将重点解析 Milvus 支持的 GPU 索引类型、适用场景及各自的性…...
Webserver(2.8)守护进程
目录 守护进程案例 守护进程案例 每隔2s获取系统时间,将这个时间写入到磁盘文件中 #include<stdio.h> #include<sys/stat.h> #include<sys/types.h> #include<unistd.h> #include<fcntl.h> #include<sys/time.h> #include<…...
HarmonyOS :
HarmonyOS 移动应用开发 什么是HarmonyOS?: 官方解释:HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。 鸿蒙操作系统在传统的单设备系统能力的基础上,提出了基于同一套系统能力、适配多种终端形态的分布式理念&#…...
C# EF 使用
WPF EF MySQL - - -版本.NET Framework4.7.2EntityFramework6.5.1MySql.Data.EntityFramework9.1.0 创建数据库 ccApp.config <connectionStrings><add name"MyDbContext" providerName"MySql.Data.MySqlClient" connectionString"server…...
简介Voronoi图Voronoi Diagrams
这是计算机的经典算法。 问题引入 倘若一张大白纸上有很多三角点,掉进去一个五星点,问,哪个三角离着五星最近?简单,算距离呗,这个五星到其他所有三角点的距离,找到最小的那个就行。 若掉进去…...
硬件测试工程师之EMC项目-辐射抗扰度试验(RS)测试标准解析思维导图
1:链接上一篇文章 硬件测试工程师之EMC项目-电磁干扰-谐波测试标准解析 2:总结思维导图并进行深入解析EMC-辐射抗扰度测试项目 附上相关报告文档以及图片解析。 3:以下为思维导图大致展示,后续可可方便观看。如有需要也可以下载。 本期先…...
H265编码丢帧问题分析
问题 通过海思芯片编码后,将编码的数据通过UDP网口发送到UDP 服务端,UDP服务端收到后保存成文件。 保存的文件有时候用VLC软件可以打开。有时候不能打开,同时用Elecard HEVC Analyer工具打开,发现VLC不能打开时丢帧。如下图,实际为858帧,而此处只有846帧。 分析 UDP包…...
CentOS Linux教程(12)--常用编辑器
文章目录 1. 背景2. nano编辑器2.1 检查安装2.2 安装nano2.3 使用nano 3. emacs编辑器3.1 检查安装3.2 安装emacs 3.3 使用emacs 1. 背景 我们经常需要编辑文件内容,windows上这个工作可以用记事本来做。 linux上对应的,我们可以使用nano或者emacs编辑…...
【浏览器学习笔记】-- 浏览器检查jQuery是否加载
环境:最近做爬虫实验,需要用到上下文http数据请求,为了能够兼容上下文环境,因此采用就jQuery请求,请求前需要加查是否有JQuery加载成功。 浏览器F12,打开浏览器控制台,复制粘贴以下代码&#x…...
Topgrade性能优化技巧:提升大规模更新效率的5种方法
Topgrade性能优化技巧:提升大规模更新效率的5种方法 【免费下载链接】topgrade Upgrade all the things 项目地址: https://gitcode.com/gh_mirrors/top/topgrade Topgrade是一款强大的系统更新工具,它能自动检测并升级系统中的所有包管理器、编程…...
如何用MusicFree插件打造你的专属音乐播放器:终极免费指南
如何用MusicFree插件打造你的专属音乐播放器:终极免费指南 【免费下载链接】MusicFreePlugins MusicFree播放插件 项目地址: https://gitcode.com/gh_mirrors/mu/MusicFreePlugins MusicFree插件是一个开源的音乐播放器扩展系统,它允许你将多个音…...
实战教你用美股api获取实时行情与报价
前几天我在整理投资数据,突然发现自己平时关注的几支热门美股,价格波动比新闻还快。光靠网页刷新完全跟不上节奏,尤其是NVDA、META这样的科技股,几分钟就能有明显变化。想随时看到最新行情,又不想盯着网页刷新…...
终极指南:一键解决iPhone USB网络共享驱动问题
终极指南:一键解决iPhone USB网络共享驱动问题 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_mirrors/ap…...
告别兼容性烦恼,让老旧应用在现代浏览器中“无缝”运行
在数字化转型的浪潮中,企业的技术架构往往承载着历史的痕迹。当我们享受着现代浏览器带来的极速体验与丰富扩展时,一个不容忽视的挑战正悄然影响着员工的工作效率与IT运维的平静——那就是“传统浏览器支持”问题。这并非一个遥不可及的技术概念…...
United VARs CoE创享会重回上海,全球伙伴共议AI时代云ERP演进
时隔七年,United VARs Cloud ERP CoE 创享会再次回到中国!3月10日至12日,由Acloudear司享承办的United VARs Cloud ERP CoE 创享会在上海举行。来自全球多家United VARs成员机构及SAP的专家与管理者齐聚上海,围绕 Cloud ERP 战略、…...
Pixel Language Portal保姆级教程:Hunyuan-MT-7B模型蒸馏轻量化(TinyMT)与移动端适配路径
Pixel Language Portal保姆级教程:Hunyuan-MT-7B模型蒸馏轻量化(TinyMT)与移动端适配路径 1. 项目背景与核心价值 Pixel Language Portal(像素语言跨维传送门)是一款基于腾讯Hunyuan-MT-7B大模型构建的创新翻译工具。…...
基于Dify的智能问答系统:从意图识别到规范化回复的全流程设计
1. 从零开始理解Dify智能问答系统 第一次接触Dify时,我完全被它的可视化编排能力惊艳到了。这个平台就像搭积木一样,让不懂代码的产品经理也能设计出复杂的AI应用。举个实际例子,去年我们团队要做一个游泳健身领域的问答助手,传统…...
别再死记硬背MIPI状态转换图了!用Python脚本模拟单向/双向Data Lane状态机
用Python脚本动态解析MIPI状态机:从理论到实践的可视化之旅 每次打开MIPI协议文档看到那些密密麻麻的状态转换图,是不是感觉像在解读外星密码?作为嵌入式开发者,我们需要的不是死记硬背那些LP-11→LP-01的箭头指向,而…...
BilibiliDown:让B站视频下载变得简单高效
BilibiliDown:让B站视频下载变得简单高效 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliDo…...
