欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > STM32F1学习——SPI通信

STM32F1学习——SPI通信

2025/5/21 2:52:50 来源:https://blog.csdn.net/qq_55958175/article/details/145652305  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词