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

STM32——SPI通信

SPI介绍

SPI:串行外设设备接口(Serial Peripheral  Interface),是一种高速的,全双工同步通信总线。

 

内部框图 

1. SPI相关引脚
        MOSI(主机输出、从机输入)
        MISO(主机输入,从机输出)
        SCK(时钟信号,由主设备产生)
        NSS(片选信号,由主设备产生) 

2. 数据发送和接收
        与缓冲区、移位寄存器以及引脚相关

3. 时钟信号
        SPI时钟信号是通过SPI_CR1寄存器配置

4. 主控制逻辑
        涉及两个控制寄存器SPI_CR1/2用于配置SPI工作,SPI_SR用于查看工作状态

SPI外设引脚

 STM32芯片有多个SPI外设,每个SPI外设输出的信号会到不同的GPIO口。
 STM32F1有三个SPI。

 

SPI工作原理

 外设的写操作和读操作是同步完成的。如果只是进行写操作,主机只需忽略接收到的字节。反之,若主机要读取从机的一个字节,就必须发送一个空字节引发从机传输。

 

SPI工作模式

时钟极性 (CPOL)     没有数据传输时时钟线的空闲状态电平
0:SCK在空闲状态保持低电平
1:SCK在空闲状态保持高电平
时钟相位 (CPHA)     时钟线在第几个时钟边沿采样数据
0:SCK的第一(奇数)边沿进行数据位采样,数据在第一个时钟边沿被锁存
1:SCK的第二(偶数)边沿进行数据位采样,数据在第二个时钟边沿被锁存

 

 

 

 

相关寄存器 

 

SPI控制寄存器1(SPI_CR1) 

 

 SPI状态寄存器(SPI_SR)

 

 SPI数据寄存器(SPI_DR)

 

  HAL库相关函数

http://www.dtcms.com/a/117952.html

相关文章:

  • 怎么使用vue3实现一个优雅的不定高虚拟列表
  • mysql知识总结 基础篇
  • Light RPC:一款轻量高效的Java RPC框架实践指南
  • vscode Colipot 编程助手
  • 【CF】Day26——Teza Round 1 (Codeforces Round 1015, Div. 1 + Div. 2) CD
  • UE5学习笔记 FPS游戏制作44 统一UI大小 sizeBox
  • 关于OEC/OEC-turbo刷机问题的一些解决方法(2)——可能是终极解决方法了
  • day24学习Pandas库
  • k8s核心资源对象一(入门到精通)
  • 3D激光轮廓仪知识整理(待补充)
  • browser-use开源程序使 AI 代理可以访问网站,自动完成特定的指定任务,告诉您的计算机该做什么,它就会完成它。
  • 大模型论文:Improving Language Understanding by Generative Pre-Training
  • windterm终端软件使用
  • React-Markdown 组件底层实现原理详解
  • 服务异常挂掉问题:java invoked oom-killer
  • 数字三角形(dfs+动态规划)通过率未达100%
  • 第三次PID状态机
  • 评价区动态加载是怎么实现的?
  • 【AI学习】初步了解Gradio
  • Motionface MFvector照片一键转矢量工具使用教程
  • LeetCode算法题(Go语言实现)_34
  • 排序扩展-文件递归排序(外排序)
  • [ERROR] Some problems were encountered while processing the POMs
  • 鸿蒙开发_ARKTS快速入门_语法说明_组件声明_组件手册查看---纯血鸿蒙HarmonyOS5.0工作笔记010
  • 1631. 最小体力消耗路径
  • Quartz 数据持久化 接入MySQL数据库 数据不丢失 数据入库
  • 人工智能通识速览(Part4. 评估指标)
  • Android WiFi协议之P2P介绍与实践
  • git功能点管理
  • Redis 与 MongoDB 对比分析