SPI基础知识

一、SPI简介

1.1SPI总线

SPl(Serial Peripheral lnterface)是串行外设接口的缩写,SPI是一种高速的、全双工同步串行通信总线。

速度比IIC和串口快,但是比USB和网口慢。

SPI采用主从方式工作,一般有一个主设备和一个或多个从设备。

SPI需要至少4根线,分别是MIS0(主设备输入|从设备输出)、MOSI(主设备输出|从设备输入)、SCLK(时钟)、CS(片选)。

SPI使用引脚较少且布线方便,所以越来越多的芯片集成了这种通信协议。

SPI和IIC都允许一条总线上挂跟多设备,一般从机是四根线,主机最少四根线(因为可能有多个从机),每个从机都要对应一个片选线。

IIC允许有多个主机,有仲裁机制,SPI一般只有一个主机,仲裁机制差一些。

1.2寻址方式

当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或者低电平,根据从机而定)表示选中该从设备。

cs表示高电平有效,\overline{cs}是低电平有效。

例如:主机要和Slave2通信,片选线低电平有效。
则:cs1=1,cs2=0。

1.3通信过程

SPI总线在进行数据传送时,先传送高位,后传送低位(和IIC一样),如下图MSB表示最高位,LSB表示最低位;

数据线为高电平表示逻辑'1’,低电平表示逻辑'0’;

一个字节传送完成后无需应答即可开始下一个字节的传送;

SPI没有开始信号,没有结束信号,没有应答,直接发完一个字节发下一个字节;

SPI总线采用同步方式工作,时钟线在下降沿(或上升沿)时发送器向数据线上发送数据,在紧接着的上升沿时(或下降沿)接收器从数据线上读取数据(第一位数据有细微差别),完成一位数据传送,八个时钟周期即可完成一个字节数据的传送.

1.4极性和相位

SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)。

CPOL表示SCLK空闲时的状态

  • CPOL=0,空闲时SCLK为低电平
  • CPOL=1,空闲时SCLK为高电平

CPHA表示采样时刻

  • CPHA=0,每个周期的第一个时钟沿采样
  • CPHA=1,每个周期的第二个时钟沿采样

1.4.1CPOL=0,CPHA=0

空闲时SCLK为低电平,(低→高)每个周期的第一个时钟沿采样(采样就是接收数据)。

1.4.2CPOL=0,CPHA=1

空闲时SCLK为低电平,(低→高→低)每个周期的第二个时钟沿采样(采样就是接收数据)。

1.4.3CPOL=1,CPHA=0

空闲时SCLK为高电平,(高→低)每个周期的第一个时钟沿采样(采样就是接收数据)。

1.4.4CPOL=1,CPHA=1

空闲时SCLK为高电平,(高→低→高)每个周期的第二个时钟沿采样(采样就是接收数据)。

1.4.5其他说明

对于一个特定的设备来说,一般在出厂时就会将其设计为某种特定的工作模式。在使用该设备时就必须保证主设备的工作模式和该从设备保持一致,否是无法进行通信的则。

所以一般是根据从设备的数据手册对主设备的CPOL和CPHA进行配置。

二、IIC与SPI的对比

IICSPI
相同点

均采用串行、同步的方式

均采用TTL电平,所以传输距离不会太长和应用场景类似

均采用主从方式工作

不同点IIC半双工SPI全双工
IIC有应答机制SPI无应答机制
IIC较低速SPI较高速
IIC通过向总线广播从机地址来寻址(通信慢但是主机占用引脚少)SPI通过向对应从机发送使能信号来寻址(通信快但是主机占用引脚多)
IIC的时钟极性和时钟相位固定SPI的时钟极性和时钟相位可调

其中,TTL电平:简单用高电平表示1,低电平表示0。

IIC节省硬件资源,SPI节省时间。

  • 29
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值