SPI通信协议

简介

spi协议是由Motorola公司开发的一种通用数据总线。由四根通信线组成,分别是SCK(Serial Clock)、MISO(Master Input Slave Output)、MOSI(Master Output Slave Input)、SS(Slave Select)。具有同步、全双工、多设备的数据传输特点,可以实现同时收发数据。通信速度快,最大传输速度取决于芯片的设计。

连接方式

  1. 主机和从机的SCK、MOSI、MISO分别接在一起。
  2. 主机需要多条SS控制线,分别接到从机的SS。
  3. 主机的输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入。在这里插入图片描述
    SCK: 主机输出,从机输入
    MOSI:主机输出,从机输入
    MISO:主机输入从机输出,当从机SS为高电平是,从机的MISO必须为高阻态。
    SS:主机的SS线都是输出,从机的SS线都是输入,低电平有效。主机想指定谁就把对应的SS输出线置低电平就行了

工作原理

在这里插入图片描述
左边是SPI主机,右边是从机,里面都有一个8位的寄存器。有一个时钟输入端,因为是高位先行的,所以每来一个时钟会向左移动一位。移位寄存器的时钟源由主机提供,叫波特率发生器,产生的时钟驱动移位寄存器进行移位,同时通过SCK引脚进行输出到从机的移位寄存器。

主机移位寄存器左边移出去的数据通过MOSI脚输入到从机移位寄存器的右边,从机移位寄存器左边移出去的数据通过MISO引脚输入到主机移位寄存器的右边。

工作方式:波特率发生器时钟的上升沿,所有移位寄存器向左移动一位,移出去的位放到引脚上。波特率发生器时钟的下降沿,引脚上的位采样输入到移位寄存器的最低位。接下来假设主机有个数据10101010要发送到从机,同时从机有个数据01010101要发送到主机。那就可以驱动时钟先产生一个上升沿,这时所有的位向左移动一位,移出去的位会放到数据线上,实际是放到输出寄存器里。时钟继续执行,在下降沿时主机和从机内都会进行数据采样输入。8个时钟后主机中的10101010到了从机中,从机里的01010101到了主机中。这样通过数据交换实现数据传输。

时序

起始条件:SS从高电平切换到低电平
终止条件:SS从低电平切换到高电平
在这里插入图片描述

spi的时序有4种模式

模式一

空闲状态时,SCK为低电平
SCK第一个边沿移入数据,第二个边沿移出数据
在这里插入图片描述

模式二

空闲状态时,SCK为低电平
SCK第一个边沿移出数据,第二个边沿移入数据
在这里插入图片描述

模式三

空闲状态时,SCK为高电平
SCK第一个边沿移入数据,第二个边沿移出数据
在这里插入图片描述

模式四

空闲状态时,SCK为高电平
SCK第一个边沿移出数据,第二个边沿移入数据
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值