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

STM32-----SPI

SPI简介

SCK:

和I2C中SCL的时钟线一个作用,都是在高电平拿出数据,在低电平写数据

MOSI:

主机输出从机输入

MISO:

主机输入从机输出,只有当对应从机的SS为低电平,从机的MISO引脚才能设置推挽输出,当从机SS为高电平时,引脚为高阻态

SS:

从机选择线,主机想选择谁就把谁的SS线置低电平(起始条件),当主机想结束通信就把指定从机SS置高电平(终止条件)。SPI就可以不用像I2C一样通过通信线找从机地址,

注:SPI不允许多主多从,只允许一主多从

当SCK高电平时主机和从机的移位寄存器的高位数据会移到数据线上(SPI是高位先行),移位数据寄存器的剩下7位会整体向高处平移,当SCK低电平时主机和从机都会获取数据线上的数据进入移位数据寄存器的最低位,依次进行8次一个字节的数据就传输完成

如果只想接收不想发送,我们就随便发送一个数据(从机不会看他,我们一般发0x00或0xff),再读移位数据寄存器进行了

如果只想发送不想接收,我们不读接收过来的数据进行了 

四种模式

模式0:

模式0:就是在SCK高电平时接收在数据线上的数据,在SCK低电平时将以移位寄存器上的数据发送到数据线上,因为SCK一开始就是低电平所以当SS置低电平时就要把数据发送到数据线上

模式一:

就是在SCK高电平时发送数据,在低电平时接收数据

模式一和模式三的区别就是SCK的极性取反,模式0和模式2的区别也是SCK的极性取反

注:CPHA决定的是第几个时钟沿采样,并不能决定上升沿采样或下降沿采样,只有确定CPOL,CPHA才能决定是上升沿采样或下降沿采样

软件控制SPI

发送指令

在SPI中第一个交换的字节是指令码加读写模式,在从机中有相应的指令集,发送不同的指令码会与从机中的指令集对应,来产生指令

指定地址写

当发送完指令码(0x02,这是指定地址写的指令)后发送指定地址,不同的芯片地址大小不一样(具体要发多少位字节的地址要看芯片手册),由于SPI没有应答机制,发送完一个字节就可以继续发送下一个字节,

有些芯片可能会把地址融合到指令码里面

指定地址读

指定地址读的指令码是(0x03),再发送要指定的地址后,交换的发送字节我们发送0x00或0xFF

这时交换回来的字节就是我们想要的数据

注:这时软件指定SPI,只要我们在软件方面指定每个字节的作用就很容易控制SPI


文章转载自:

http://cGaIpFPA.yryjL.cn
http://8Avq0NCV.yryjL.cn
http://4iTicemG.yryjL.cn
http://2mla2CAO.yryjL.cn
http://vg2UjnQd.yryjL.cn
http://K5vJJQc2.yryjL.cn
http://ebRLSvBO.yryjL.cn
http://cZOn1Gge.yryjL.cn
http://IYmoqb8Y.yryjL.cn
http://5Y5Z928Y.yryjL.cn
http://b3FYReYA.yryjL.cn
http://5Jiu8QJP.yryjL.cn
http://bVkUJpWb.yryjL.cn
http://fRWy9UdL.yryjL.cn
http://ZW2736pQ.yryjL.cn
http://ITYCTlXH.yryjL.cn
http://OOtwvIgi.yryjL.cn
http://tM5bGnby.yryjL.cn
http://aOyDQTA9.yryjL.cn
http://f1keXOZl.yryjL.cn
http://ggbWkzda.yryjL.cn
http://On8evFHM.yryjL.cn
http://mIqDEK1p.yryjL.cn
http://rTwZDsgb.yryjL.cn
http://85oEiKZD.yryjL.cn
http://ysnNMiq3.yryjL.cn
http://QEdndT9g.yryjL.cn
http://l2jzeqAa.yryjL.cn
http://M1VsK9Me.yryjL.cn
http://k3Nu3Ruj.yryjL.cn
http://www.dtcms.com/a/370803.html

相关文章:

  • 洛谷 P1591 阶乘数码-普及-
  • DEEP THINK WITH CONFIDENCE-Meta-基于置信度的深度思考
  • Qt 基础教程合集(完)
  • swagger接口文档规范化(苍穹外卖)
  • 【微知】dmesg如何将dmesg消息查看日志等级?(dmesg -x; prefix)
  • 基于STM32智能阳台监控系统
  • Ubuntu 22.04.1上安装MySQL 8.0及设置root密码
  • 【混元AIGC+腾讯云智能体+首创Coze核心流思维导图MCP】:打造一个文思通-智能写作助手Agent
  • B.50.10.09-RPC核心原理与电商应用
  • C语言字符函数和字符串函数(2)
  • 基于STM32的智慧民宿环境监测系统设计
  • 从 JDK 1.8 切换到 JDK 21 时遇到 NoProviderFoundException 该如何解决?
  • [bat-cli] 打印机 | `src/printer.rs`
  • RLPR: EXTRAPOLATING RLVR TO GENERAL DOMAINS WITHOUT VERIFIERS
  • 抽成独立组件库:微前端架构下公共组件共享的最佳实践
  • 前端上传切片优化以及实现
  • 自适应滤波器:Ch1 正交性原理->维纳-霍夫方程
  • 1.5、机器学习-回归算法
  • 【基础-单选】UIAbility实例创建完成时触发的回调
  • 【YOLOv11】5.安装PyCharm
  • 从技术架构、接入路径、应用场景全梳理的智慧地产开源了
  • Javaweb 14.4 Vue3 视图渲染技术
  • 算法与数据结构实战技巧:从复杂度分析到数学优化
  • clang(clangd)与arm-linux-gcc、ARMGCC、ICCARM(IAR)、C51编译器的兼容性
  • 计算机视觉(八):开运算和闭运算
  • 工业显示器在地铁电力监控与运维中的应用
  • 集成学习 —— 梯度提升树GBDT、XGBoost
  • c++八股文1
  • CAD:注释
  • C++ 并发编程指南 并发设计模式:Actor vs. CSP (生活场景版)