【基础知识】SPI通信协议

目录

概述

电气连接

接口定义

 连接方式

通信协议 

片选信号

时钟

时钟极性(Clock Polanrity)

时钟相位(Clock Phase)

综述

 时序

 注意


概述

SPI是一个同步全双工串行通信协议

主从机双方共用一个时钟(由主机产生)

在同一时刻硬件可以允许双向传输(虽然在SPI协议中没有同一时刻双向传输)

SPI的速度快于常见的I2C与USART,一般能达到几MHz

比起CAN和USART来,其传播距离较短

电气连接

接口定义

名称

功能

GND

接地

MOSI

主机发送,从机接收

MISO

主机接收,从机发送

CLK

时钟线

CS1(NSS1)

片选线

……

多个设备时的片选线

不同厂商的接口名称可能有不同,详情看产品的技术手册 

 连接方式

一般情况使用多片选信号(多NSS)模式,连接如图

通信协议 

片选信号

这个信号是由主机发送的一个用于选择不同设备的信号,一般情况为低电平有效(选中了该设备)

在一次通信过程中,一般只有一个设备被选中

只有被选中的设备才会接受主机发送出的数据信号,并且根据自己的功能进行回传信息

对于单片机来说,这个信号一般使用推挽(浮空)输出的模式

有些设备使用开漏上拉输出会出现问题,咱也不知道为啥

时钟

时钟极性(Clock Polanrity)

可以这样理解,默认状态是高电平还是低电平(低电平有效还是高电平有效)

默认状态是低电平

默认状态是高电平

时钟相位(Clock Phase)

可以这样理解,在第几个边沿进行采集(这里指的是一个时钟信号的边沿),一个时钟信号会出现两个边沿

第一个边沿(如图在橘线处采集信号)

第二个边沿(如图在橘线处采集信号)

综述

 时序

在片选信号选中下,每一个时钟信号触发(详见上文),根据MISO和MOSI的电平高低来判断数据

先发送高位再发送低位(可以选择先低后高)

时钟信号的箭头表示一次采集

本图中以黄线为界出现两次信号传输

第一次:主机向从机发送的数据为(0xF0)(0b11110000),从机向主机发送的信号为(0x00)(0b00000000)

第二次:主机向从机发送的数据为(0x00)(0b00000000),从机向主机发送的信号为0x7C(0b0111 1100)

 注意

SPI每一次信号传输(通信周期)中都需要主机接受和发送一次

(可以将从器件当做一个数据会自动修改的移位寄存器)

也就是说主机接受数据时也要发送数据(必须发送),发送数据时也会接受数据(可能接收的数据无意义)

往往与器件通信时是主机先发送命令(此时收到的信号是无意义的),从机再根据命令更改寄存器的值,在下一个通信周期时在发送给主机(主机也需要发送某些数据(可能无意义))

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值