当前位置: 首页 > 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库相关函数

相关文章:

  • 怎么使用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照片一键转矢量工具使用教程
  • 曾毓群说未来三年重卡新能源渗透率将突破50%,宁德时代如何打好换电这张牌
  • 技术派|威胁F-35、击落“死神”,胡塞武装防空战力如何?
  • 中国情怀:时代记录与家国镜相|澎湃·镜相第三届非虚构写作大赛征稿启事
  • 农行回应“病重老人被要求亲自取钱在银行去世”:全力配合公安机关调查
  • 视频丨美国两名男童持枪与警察对峙,一人还试图扣动扳机
  • 熊出没!我驻日本札幌总领馆提示中国公民注意人身安全