STM32学习记录--Day4

今天了解了一下SPI总线:

1.SPI内部结构


​🔌 SPI 四大核心引脚功能详解​

1. ​MOSI (Master Output Slave Input)​
  • ​功能​​:​​主机输出数据线​
  • ​工作流程​​:
    • 主机内部发送数据寄存器 (TxDR) 的数据 → 移位寄存器 → ​​数据控制单元​​ → 通过MOSI引脚输出至从机。
  • ​关键控制​​:
    • 数据控制单元受 ​​“顺序”​​ 设置(MSB/LSB优先)和 ​​“极性/相位”​​ 配置(时钟边沿采样)影响。
  • ​用户代码关联​​:
    // 用户代码中MOSI配置(PB5)
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; // 复用推挽输出

2. ​MISO (Master Input Slave Output)​
  • ​功能​​:​​主机输入数据线​
  • ​工作流程​​:
    • 从机返回的数据 → 通过MISO引脚 → ​​接收数据寄存器 (RxDR)​​。
  • ​状态监测​​:
    • RxNE (Receive Not Empty)​​ 标志:当 RxDR 收到新数据时置1,触发中断或供CPU读取。
  • ​用户代码关联​​:
    // 用户代码中MISO配置(PB4)
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;  // 输入上拉

3. ​SCK (Serial Clock)​
  • ​功能​​:​​主机输出的同步时钟​
  • ​控制单元​​:
    • ​时钟控制模块​​ 生成SCK信号,受以下参数控制:
      • ​波特率​​:时钟频率(由PCLK分频)。
      • ​极性 (CPOL)​​:
        • CPOL=0:空闲时SCK为低电平
        • CPOL=1:空闲时SCK为高电平
      • ​相位 (CPHA)​​:
        • CPHA=0:数据在时钟​​第一个边沿​​采样
        • CPHA=1:数据在时钟​​第二个边沿​​采样
  • ​用户代码关联​​:
    SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;  // CPOL=0
    SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge; // CPHA=0

4. ​NSS (Slave Select)​
  • ​功能​​:​​从机片选信号​​(低电平有效)
  • ​工作模式​​:
    • ​硬件模式​​:
      • 由SPI控制器自动控制(图示中 ​​“内部NSS”​​)。
    • ​软件模式​​:
      • 用户通过GPIO手动控制(图示中 ​​“软/硬NSS”​​ 选择)。
  • ​关键场景​​:
    • 传输开始前:拉低NSS选中从机。
    • 传输结束后:拉高NSS释放从机。
  • ​用户代码关联​​:
    // 用户代码中使用PA0模拟NSS(软件控制)
    GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET); // 选中从机(W25Q64)
    SPI_Cmd(SPI1, ENABLE);  // 启动SPI传输

⚙️ ​​辅助功能模块关联引脚​

  1. ​中断系统​​:

    • TxE (Transmit Empty)​​:发送寄存器空 → 可写入新数据。
    • RxNE (Receive Not Empty)​​:接收寄存器非空 → 可读取数据。
    • OVR (Overrun)​​:数据覆盖错误 → 需清除标志。
    // 用户代码中轮询标志位
    while(SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_TXE) == RESET); // 等待TxE
  2. ​通信方向选择​​:

    • 支持多模式(图中红框区域):
      • ​2线全双工​​:同时使用MOSI和MISO(标准SPI)。
      • ​2线只收​​:仅用MISO(从机到主机)。
      • ​单线模式​​:半双工通信(共用单数据线)。
    SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  3. ​主从控制​​:

    • ​主/从模式​​:决定SCK由谁生成(主机:SCK输出;从机:SCK输入)。
    SPI_InitStruct.SPI_Mode = SPI_Mode_Master; // 主机模式

📝 ​​引脚功能总结表​

​引脚​​方向​​核心功能​​关键关联模块​
​MOSI​主机→从机主机输出数据发送数据寄存器 → 数据控制单元
​MISO​从机→主机主机输入数据接收数据寄存器 → RxNE中断
​SCK​主机→从机提供同步时钟时钟控制(CPOL/CPHA)
​NSS​主机→从机从机选择控制(低有效)软/硬NSS选择 → 内部控制逻辑

💡 深入理解引脚配置

此处用的PA15上电后默认功能不是普通IO,所以可以改用其它IO口,或重映射。

2.SPI总线电路结构

3.SPI总线通信流程

3.1收发流程

数据传输顺序有两种:

3.2时钟模式

极性与相位:

当SCK开始与结束的电平为低时,极性为低;当SCK开始与结束的电平为高时,极性为高

  • 相位=第1边沿采集(CPHA=0):数据在SCK的第一个边沿(即CPOL变化的第一个边沿)被采样。
  • 相位=第2边沿采集(CPHA=1):数据在SCK的第二个边沿(即CPOL变化的第二个边沿)被采样。

3.3通信方向

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

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

相关文章

【网络安全】等级保护2.0解决方案

等保2.0(网络安全等级保护2.0)是我国网络安全领域的基础性制度,在1.0版本基础上扩展了云计算、大数据、物联网等新兴领域,形成覆盖全场景的安全防护框架。其核心是按信息系统重要程度划分等级(1-5级)&#…

TypeScript 基础介绍(二)

引言:从基础到结构化类型 在《TypeScript 基础介绍(一)》TypeScript基础介绍(一)-CSDN博客中,我们探讨了 TypeScript 的类型系统基础、联合类型、类型断言和类型守卫等核心特性。这些内容解决了 JavaScript…

【科研绘图系列】R语言绘制线性相关性

文章目录 介绍 加载R包 数据下载 导入数据 数据预处理 画图 系统信息 参考 介绍 【科研绘图系列】R语言绘制线性相关性 加载R包 library(tidyverse) library(ggplot2) library(ggsignif) library(RColorBrewer) library(dplyr) library(reshape2

FastAPI的请求-响应周期为何需要后台任务分离?

url: /posts/c7b54d6b3b6b5041654e69e5610bf3b9/ title: FastAPI的请求-响应周期为何需要后台任务分离? date: 2025-07-31T06:11:25+08:00 lastmod: 2025-07-31T06:11:25+08:00 author: cmdragon summary: FastAPI 的请求-响应周期遵循 ASGI 协议,类似于餐厅点餐流程。同步处…

多种录音笔录音芯片方案推荐

多种录音笔录音芯片方案推荐一、引言随着信息技术的飞速发展,录音笔作为一种重要的音频记录设备,在会议记录、采访、学习等众多场景中得到广泛应用。其核心的录音芯片方案直接影响录音质量、功能特性以及产品成本。唯创知音作为音频芯片领域的知名厂商&a…

Linux系统编程Day2-- Linux常用操作

一、Linux 基本命令概览以下是一些常用的Linux命令操作,后续我们会对其每个单独如何使用进行讲解。操作类型常用命令示例文件/目录操作ls, cd, cp, mv, rm, mkdir, rmdir查看文件内容cat, less, more, head, tail查找操作find, grep, locate, which权限管理chmod, c…

cs336 assignment1 作业环境配置

代码结构 所有的代码写到cs336_basics/* 下面,在adapters.py里调用自己的.py,通过所有的test。 作业资料参考 karpathy视频仓库: 视频 github仓库 测试项目运行环境 下载uv uv官网仓库 使用命令: powershell -ExecutionPoli…

YOLOv11来了,使用YOLOv11训练自己的数据集和推理(附YOLOv11网络结构图)

文章目录前言一、YOLOv11代码下载地址1.YOLOv11模型结构图二、数据集准备1.数据集标注软件2.voc数据集格式转换3.数据集划分4.修改yolo的训练配置文件三、YOLO环境配置教程1.pytorch环境安装2.其他依赖安装四、YOLOv11训练五、YOLOv11推理六、解决训练过程中断怎么继续上次训练…

20250731在荣品的PRO-RK3566开发板的Android13下跑通敦泰的FT8206触控芯片

20250731在荣品的PRO-RK3566开发板的Android13下跑通敦泰的FT8206触控芯片 2025/7/31 17:48缘起:本文前置条件:已经解决FT8206和PRO-RK3566的硬件连接。 通过i2cdect可以扫描到i2c从机地址:0x38。【8位地址为0x70】缘起:本文只分析…

异常检测:算法分类及经典模型概览

第一部分:异常检测的核心概念 在深入算法细节之前,理解异常检测的“语境”至关重要。 1. 什么是异常检测? 异常检测(Anomaly Detection 或 Outlier Detection)旨在通过数据挖掘技术,识别出数据集中与大多数…

技术干货 | 矢网DTF测量技术:透视线缆、天线与波导内部缺陷的“射频X光”(二)

无线通信、雷达等领域中,射频组件与传输系统的性能至关重要,其内部微小损伤易导致信号问题甚至系统失效。传统测试无法精确定位故障点,排查困难。DTF测量,矢网赋予的“透视眼”!它能穿透“黑箱”,精确定位线…

【[CSP-J 2022] 上升点列】

题目 [CSP-J 2022] 上升点列 题目描述 在一个二维平面内,给定 n 个整数点 (x i ,y i​ ),此外你还可以自由添加 k 个整数点。 你在自由添加 k 个点后,还需要从 nk 个点中选出若干个整数点并组成一个序列,使得序列中任意相邻两点间…

Kong API Gateway的十年进化史

一、技术基因的诞生(2007-2015) 2007年,三位意大利开发者Augusto Marietti、Marco Palladino和Michele Orru在博洛尼亚的一个小车库中创立了Mashape公司。 最初他们开发了一个名为Mashup的API聚合平台,试图通过整合第三方API为开发…

蓝牙设备配对:从机发现主机全过程

在蓝牙 paging 过程中,从设备(Slave)是通过特定的扫描机制和跳频方式来发现主设备发送的 ID 包的,具体过程如下:从设备处于特定扫描模式:从设备需要处于 Page Scan 模式,才能够接收主设备发送的…

聚观早报 | 三星获特斯拉AI芯片订单;小米16首发成安卓最强SOC;iPhone 17 Pro支持8倍光学变焦

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。整理丨肖羽7月29日消息三星获特斯拉AI芯片订单小米16首发成安卓最强SOCiPhone 17 Pro支持8倍光学变焦宁德时代滑板底盘公司启动首轮融…

Gemini Fullstack LangGraph Quickstart(DeepSeek+Tavily版本)

文章目录参考资料说明Gemini Fullstack LangGraph QuickstartDeepSeek Fullstack LangGraph Quickstart项目部署完整源码地址后端部署前端部署参考资料 DeepResearch应用开发实战网盘课件资料 说明 本文仅供学习和交流使用,感谢赋范社区相关老师的辛苦付出&#…

钢筋计数误差↓78%!陌讯多模态融合算法在建筑地产AI质检的落地实践

​摘要​​针对建筑地产行业钢筋验收场景的高误差痛点,本文解析陌讯视觉算法的多模态融合架构如何实现毫米级精度目标检测。实测显示:在Jetson Xavier NX边缘设备上,钢筋计数mAP0.5达​​92.4%​​,较基线模型提升28个百分点&…

负载均衡 LoadBalance

问题引入 我们一个服务可能会进行多机部署,也就说多台服务器组成的集群共同对外提供一致的服务,那么我们的微服务的代码就需要拷贝多份,部署到不同的机器上。 我们使用 IDEA 来开启多个相同的服务 这里以 product-service 为例:…

13. 若依框架中的 Sensitive 敏感字段过滤

若依框架中有Sensitive注解,但代码中并未使用,但该注解的实现还是比较值的学习的。该注解是一个运行时注解该注解只能应用在字段上JacksonAnnotationsInside 表示当使用Jackson序列化时,Jackson会自动识别该注解下的其他Jackson相关注解&…

git本地仓库,工作区和暂存区的知识

一 git工作原理 Git 的工作原理基于分布式版本控制,通过管理文件的不同版本状态,实现代码的追踪、协作和回溯。除了常见的工作区(Working Directory) 和暂存区(Staging Area/Index),核心还包括本…