什么是SPI通信

ARM体系-SPI通信

一、什么是SPI通信

1、SPI是串行外设接口(Serial Peripheral Interface),可以理解为一种通信协议,也就是用来传输数据的。
2、SPI 是由摩托罗拉(Motorola)公司开发的全双工同步串行总线,是微处理控制单元(MCU)和外围设备之间进行通信的同步串行端口。主要应用在EEPROM、Flash、实时时钟(RTC)、数模转换器(ADC)、网络控制器、MCU、数字信号处理器(DSP)以及数字信号解码器之间。SPI 系统可直接与各个厂家生产的多种标准外围器件直接连接。

二、物理接线

1、一般使用4 条线:串行时钟线SCK、主机输人/从机输出数据线MISO、主机输出/从机输人数据线MOSI 和低电平有效的从机选择线CS。
2、CS:从设备选择信号线,常称为片选信号线。当有多个SPI从设备与SPI主机相连时,设备的其它信号线SCK、MOSI及MISO同时并联到相同的SPI总线上,即无论有多少个从设备,都共同只使用这3条总线;而每个从设备都有独立的这一条CS信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线。SPI协议中没有设备地址,它使用CS信号线来寻址,当主机要选择从设备时,把该从设备的CS信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行SPI通讯。所以SPI通讯以CS线置低电平为开始信号,以NSS线被拉高作为结束信号。
3、SCK:时钟信号线,用于通讯数据同步。它由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样,如STM32的SPI时钟频率最大为fpclk/2,两个设备之间通讯时,通讯速率受限于低速设备。
4、MOSI (Master Output, Slave Input)主设备输出/从设备输入引脚。主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。
5、MISO(Master Input,Slave Output):主设备输入/从设备输出引脚。主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即在这条线上数据的方向为从机到主机。

三、通信原理

1、这是一个主机的通讯时序。NSS、SCK、MOSI信号都由主机控制产生,而MISO的信号由从机产生,主机通过该信号线读取从机的数据。MOSI与MISO的信号只在NSS为低电平的时候才有效,在SCK的每个时钟周期MOSI和MISO传输一位数据。
2、SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。数据传输时,MSB先行或LSB先行并没有作硬性规定,但要保证两个SPI通讯设备之间使用同样的协定。
3、需要注意的是:我们的主设备能够控制时钟,因为我们的SPI通信并不像UART或者IIC通信那样有专门的通信周期,有专门的通信起始信号,有专门的通信结束信号;所以我们的SPI协议能够通过控制时钟信号线,当没有数据交流的时候我们的时钟线要么是保持高电平要么是保持低电平。

四、通信特点

1、SPI优点
①支持全双工通信
②通信简单
③数据传输速率块
2、缺点
①没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据可靠性上有一定的缺陷。
3、特点
①高速、同步、全双工、非差分、总线式
②主从机通信模式

五、通信时序

1、SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
①SDO/MOSI – 主设备数据输出,从设备数据输入;
②SDI/MISO – 主设备数据输入,从设备数据输出;
③SCLK – 时钟信号,由主设备产生;
④CS/SS –其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效,这就允许在同一总线上连接多个SPI设备成为可能。
⑤需要注意的是,在具体的应用中,当一条SPI总线上连接有多个设备时,SPI本身的CS有可能被其他的GPIO脚代替,即每个设备的CS脚被连接到处理器端不同的GPIO,通过操作不同的GPIO口来控制具体的需要操作的SPI设备,减少各个SPI设备间的干扰。

2、SPI通信有4种不同的模式
①不同的从设备可能在出厂是就是配置为某种模式,这是不能改变的。
②但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置。
③通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式,具体如下:
1)Mode0:CPOL=0,CPHA=0
2)Mode1:CPOL=0,CPHA=1
3)Mode2:CPOL=1,CPHA=0
4)Mode3:CPOL=1,CPHA=1

3、时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA是用来配置数据采样是在第几个边沿:
①CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
②CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
③CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿
④CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿

  • 12
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SPI(Serial Peripheral Interface)通信是一种同步的、全双工的、基于主从结构的串行数据传输协议。SPI通信协议可以用于短距离的数据传输,比如芯片和芯片之间的通信、传感器和单片机之间的通信等。 SPI通信的基本原理是,主设备通过时钟信号(SCLK)控制数据传输的时序,将数据按位发送给从设备,同时也接收从设备传回的数据。SPI通信需要用到以下四个信号线: 1. SCLK(时钟线):主设备通过SCLK线向从设备发送时钟信号,控制数据传输的时序。 2. MOSI(主设备输出,从设备输入):主设备通过MOSI线向从设备发送数据。 3. MISO(主设备输入,从设备输出):从设备通过MISO线向主设备发送数据。 4. SS(片选线):主设备通过SS线选中要进行通信的从设备。 SPI通信的具体过程如下: 1. 主设备通过SS线选中要进行通信的从设备。 2. 主设备向从设备发送一个时钟脉冲,从设备在时钟上升沿处读取MOSI线上的数据。 3. 主设备在下一个时钟脉冲时将下一位数据发送到MOSI线上。 4. 从设备在每个时钟上升沿处将要发送的数据放到MISO线上,主设备在下一个时钟脉冲时读取MISO线上的数据。 5. 数据传输完成后,主设备通过SS线取消对从设备的选择。 需要注意的是,SPI通信中的时序和数据格式需要主从设备事先约定好,并且在通信过程中要保持一致。同时,SPI通信的传输速率和传输距离也会受到一定的限制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值