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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值