spi通信

一、简介

SPI(Serial Peripheral Interface,串行外设接口) 协议是一种高速高效率、全双工的通信总线,允许CPu与低速的外围设备之间进行同步串行数据的传输,主要是用同步的时钟信号对串行的数据同时进行发送和接收操作,从而实现全双工。常用于短距离通讯,主要是在嵌入式系统中。 SPI接口在芯片内部只占用四根线,主要有两条数据线、一根片选线和一根时钟信号线。这四根线分别对应SPI协议传输时的四种信号,分别有主机输出信号MOSI、从机输入信号MISO、片选信号sS n以及输出的时钟信号SCK。 SPI协议里定义了主模式和从模式两种工作方式,在协议里规定工作在主模式下的模块是主机,工作在从模式下的模块是从机。主机和从机之间按照SPI时序要求进行数据交换。 一个典型的SPI系统应包括只能有一个主机、一个或多个从机。

SPI接口只能有一个主机,但可以有一个或多个从机。下图显示了主机和从机之间的SPI连接。 在这里插入图片描述

常规SPI模式 在常规模式下,主机需要为每个从机提供单独的片选信号。一旦主机使能(拉低)片选信号,MOSI/MISO线上的时钟和数据便可用于所选的从机。如果使能多个片选信号,则MISO线上的数据会被破坏,因为主机无法识别哪个从机正在传输数据。

在这里插入图片描述

二、数据通信过程
2.1 通信总过程总结

SPI数据通信的流程可以分为以下四步:

1、主设备发起信号,将CS/SS拉低,选择片选,启动通信。

2、主设备通过发送时钟信号,来告诉从设备进行写数据或者读数据操作(采集时机可能是时钟信号的上升沿(从低到高)或下降沿(从高到低),根据spi模式而定),它将立即读取数据线上的信号,这样就得到了一位数据(1bit)。

3、主机(Master)将要发送的数据写到发送数据缓存区(Memory),缓存区经过移位寄存器(缓存长度不一定,看单片机配置),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。

4、从机(Slave)也将自己的串行移位寄存器(缓存长度不一定,看单片机配置)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。 当MASTER片选一个SLAVE时,每向SLAVE发送一个周期的SCLK信号,都会有1bit的数据从MOSI发送至slave,与此同时,slave每收到一个周期的SCLK信号,都会从MISO向master发送1bit的数据。这种全双工通讯,是由硬件保证的(MASTER与HOST中各有一个移位寄存器作为收发数据的缓存)。

2.2 具体协议规则

SPI总线上的数据传输由串行时钟SCK进行同步处理,串行时钟SCK由SPI主机产生,每个时钟周期仅发送1bit数据。,SPI有四种操作模式——SPI0、SPI1、SPI2和SPI3,它们的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。每种模式由一对参数刻画,它们称为时钟极性(clock polarity)CPOL与时钟相位(clock phase)CPHA。 2.2.1 时钟极性与时钟相位

CPOL表示SCK的空闲状态的有效电平; CPOL = 0表示SCK的空闲状态是低电平,CPOL = 1表示SCK的空闲状态是高电平; CPHA规定了数据的采样时间; CPHA = 0表示在SCK的有效电平的第一个跳变边沿进行数据采样,CPHA = 1表示在SCK的有效电平的第二个跳边沿进行数据采样;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

主机和从机都有一个移位寄存器也是串行移位寄存器,主机移位寄存器数据经过MOSI将数据写入从机的移位寄存器,此时从机的串行移位寄存器的数据也通过MISO传给了主机,实现了两个移位寄存器的数据交换。无论主机还是从机, 发送和接收都是同时进行的,如同一个“环”。

SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

2.3 SPI模式

SPI0: 时钟极性和时钟相位均为0。

SPI1: 时钟极性为0,时钟相位为1。

SPI2: 时钟极性为1,时钟相位为0。

SPI3: 时钟极性和时钟相位均为1。

这四种传输模式,使用最广泛的是SPI0和SPI3模式。

在使用SPI系统的时候,可根据数据传输的要求,通过对时钟极性和时钟相位寄存器位的配置就可以得到所需的传输模式。不同模式下的时序客参考SPI协议详解。

此外,SPI数据传输方式还有MSB传输和LSB传输两种。MSB传输表明主机和从机首先传输数据的最高位,LSB恰恰相反,主机和从机首先传输数据的最低位。在SPI系统寄存器里需要设置相应的寄存器位,通过配置寄存器来决定数据传输的方式。

2.4 SPI协议优缺点总结

优点 无起始位和停止位,因此数据位可以连续传输而不会被中断; 没有像I2C这样复杂的从设备寻址系统; 数据传输速率比I2C更高(几乎快两倍); 分离的MISO和MOSI信号线,因此可以同时发送和接收数据; 极其灵活的数据传输,不限于8位,它可以是任意大小的字; 非常简单的硬件结构。从站不需要唯一地址(与I2C不同)。从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同)。不需要收发器(与CAN不同)。

缺点

使用四根信号线(I2C和UART使用两根信号线); 无法确认是否已成功接收数据(I2C拥有此功能); 没有任何形式的错误检查,如UART中的奇偶校验位; 只允许一个主设备; 没有硬件从机应答信号(主机可能在不知情的情况下无处发送); 没有定义硬件级别的错误检查协议; 与RS-232和CAN总线相比,只能支持非常短的距离;

具体可以参考:

http://t.csdnimg.cn/6mx5Dicon-default.png?t=N7T8http://t.csdnimg.cn/6mx5D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值