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

STM32F1学习——SPI通信

一、SPI 同步串行通信协议

        SPI的全称是Serial Peripheral Interface 同步串行通信协议,是由Motorola公司开发的一种通用数据总线。

        四根通信线:SCK (Serial Clock) 、 MOSI(Master Output Slave Input) 、MISO (Master Input Slave Output) 、 SS(Slave Select)。因为他有两根数据线和一根时钟线,所以他是同步全双工的,同时SS线提供了一主多从机制。

二、SPI的硬件电路

        SPI的MOSI使用的是推挽输出,有强驱动能力,在波形上表现出快速上升和下降,这也是他相比I2C速度更快的原因。MISO使用浮空输入或上拉输入,在SS片选为高的时候必须为高阻态。

        这也是SPI要注意的地方,因为MISO可以连接多个设备,如果使用推挽输出可能会出现一个从机高一个从机低而出现短路问题。

三、SPI的通信原理

        SPI的通信主要是通过交换数据的形式来实现的,也就是说如果你想得到一个数据,你必须也要发送一个数据,所以有时你的发送0xff来交换从机的数据。

        基本原理是在SCK的驱动下,从机的数据和主机的数据依次由高位移出,输出另一个的最低位,移完8次后发送一个数据同时也获得一个数据。

四、SPI的运行逻辑和波形图

        SPI有四种模式,我们最常用的是模式0,但其他模式很简单,只是将电平翻转和顺序变化一下即可,为了兼容更多设备而设计的。

模式0

模式1

模式2

模式3

五、SPI如何实现读写功能

        SPI是一种基于指令来控制读写,0x02表示写指令,0x03表示读指令,一般情况下SPI使用的是8位数据,3字节地址的方式。

        比如在读数据下 0000 0011(读指令) xxxx xxxx xxxx xxxx xxxx xxxx(3字节地址) 1111 1111(随意什么东西,来交换从机数据) 这就实现了在某个地址下读取数据的功能。

参考

[11-1] SPI通信协议_哔哩哔哩_bilibili

相关文章:

  • VIE(可变利益实体)架构通俗解析 —— 以阿里巴巴为例(中英双语)
  • C++ | 虚函数
  • C#插件实现单据审核不通过报错提示
  • JG类软件测试报告编写注意事项
  • Elasticsearch 数据建模:从原理到实战的降维打击指南
  • 【git】工作场景下的 工作区 <-> 暂存区<-> 本地仓库 命令实战 具体案例
  • 什么是RDD以及它在Spark中的作用
  • 百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用
  • Cocos Creator资源自动释放之2.x和3.x版本的使用及区别
  • 数值分析与科学计算导引——误差与算法举例
  • 深入解析Qt事件循环
  • Java中的Spliterator与并行计算
  • MongoDB数据导出工具mongoexport
  • LeetCode刷题---哈希表---387
  • 【机器学习】线性回归 多元线性回归
  • 【嵌入式Linux应用开发基础】fork()函数
  • vue事件修饰符的实现
  • 作用域链精讲
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_save_argv函数
  • docker下部署kong+consul+konga 报错问题处理
  • 网站后台的关键词/杭州优化外包哪里好
  • 网站多种语言是怎么做的/搜狗seo查询
  • lol网站怎么做/直通车关键词优化口诀
  • 网站的小图标怎么做的/河南网站seo推广
  • 网站做支付接口/网站排名查询软件
  • 工业设计产品设计公司排名/怎么进行网站关键词优化