首页 > 编程知识 正文

spi接口工作原理,spi接口工控机

时间:2023-05-03 07:47:06 阅读:44161 作者:4856

**串行外围设备接口(SPI ) *是微控制器与外围集成电路(IC )传感器、ADC、DAC、移位寄存器、SRAM等)之间使用最广泛的接口之一。 本文首先简要介绍了SPI接口。

SPI是同步、全双工和主从接口。

来自主或从站的数据在时钟的上升沿或下降沿同步。

主机和从机可以同时传输数据。

SPI接口为三线或4线式

本文重点介绍常用的四线SPI接口。

4线SPI器件有四个信号:

时钟(SPI CLK,SCLK ) ) )。

切片选择(CS ) )。

主机输出、从站输入(MOSI ) )。

主体输入、从站输出(MISO ) )。

产生时钟信号的设备称为主机。 在主机和从机之间传输的数据与主机生成的时钟同步。 与I2C接口相比,SPI设备支持更高的时钟频率。 有关SPI接口的时钟频率规格,请参阅产品数据手册。

SPI接口只能有一个主机,但可以有一个或多个从机。

来自主机的芯片选择信号用于选择从机。 这通常是低电平有效信号,上拉时从站和SPI总线断开。 使用多个从站时,主机必须为每个从站提供单独的芯片选择信号。 本文的芯片选择信号始终是低电平的有效信号。

MOSI和MISO是数据线MOSI将数据从主设备发送到从设备,MISO将数据从从设备发送到主设备

数据传输

要启动SPI通信,主机必须发送时钟信号,并在使能CS信号中选择从站。 芯片选择通常是低电平的有效信号。 因此,主机必须向此信号发送逻辑0以选择从机。 3358www.Sina.com/,SPI是全双工接口可分别通过MOSI和MISO线路3358www.Sina.com/。 在SPI通信期间,同时进行数据发送(串行输出到MOSI/SDO总线)和接收(采样或读取总线(MISO/SDI )上的数据)。 串行时钟沿同步数据的移位和采样。 使用SPI接口,您可以灵活地选择时钟的上升沿或下降沿来对数据进行采样和/或移位。 要确定使用SPI接口传输的数据位数,请参阅设备数据手册。

主机和从机

在SPI中,主机可以选择时钟极性和时钟相位。 在空闲期间,CPOL位设置时钟信号的极性。同时发送数据是指传输开始时CS在高电平转移到低电平的期间,以及传输结束时CS在低电平转移到高电平的期间。 CPHA位选择时钟相位。 根据CPHA位的状态,使用时钟的上升沿或下降沿对数据进行采样和/或移位。 主机必须根据从机的要求选择时钟极性和时钟相位。 根据CPOL位和CPHA位的选择,有四种SPI模式可用。 表1列出了这四种SPI模式。

时钟极性和时钟相位

图2至图5显示了四种SPI模式下的通信示例。 在这些示例中,数据显示在MOSI和MISO线上。 传输的开始和结束由绿色虚线表示,采样边缘由橙色虚线表示,并且移位边缘由蓝色虚线表示。 这些图形仅供参考,请注意。 要成功进行SPI通信,用户必须查阅产品数据手册,并确保符合设备的时间序列规范。

图2.SPI模式0、CPOL=0、CPHA=0:CLK空闲状态=低电平,数据在上升沿采样,在下降沿移动。

图3.SPI模式1、CPOL=0、CPHA=1:CLK空闲状态=低电平,数据在下降沿采样,在上升沿移动。

图4.SPI模式2、CPOL=1、CPHA=1:CLK空闲状态=高电平,数据在下降沿采样,在上升沿移动。

图5.SPI模式3,CPOL=1,CPHA=0:CLK空闲状态=高电平,数据在上升沿采样,在下降沿移动。

图3是SPI模式1的时序图。 在该模式下,时钟极性为0,表示时钟信号空闲状态为低电平。 此模式的时钟相位为1,表示数据在下降沿被采样,显示为橙色虚线,数据在时钟信号的上升沿移动,显示为蓝色虚线。

图4示出了SPI模式2的时序图。 在该模式下,时钟极性为1,表示时钟信号空闲状态为高电平。 此模式的时钟相位为1,表示数据在下降沿被采样,显示为橙色虚线,数据在时钟信号的上升沿移动,显示为蓝色虚线。

图5示出了SPI模式3的时序图。 在该模式下,时钟极性为1,表示时钟信号空闲状态为高电平。 此模式的时钟相位为0,表示数据在上升沿被采样,显示为橙色虚线,数据在时钟信号的下降沿移动,显示为蓝色虚线。

空闲状态

多个从机可用于单个SPI主机。 从站可以在正常模式下连接,也可以通过菊花链连接。

图6 .多从SPI配置

正常SPI模式

在正常模式下,主机必须为每个从机提供单独的芯片选择信号。 当主机启用/禁用切片选择信号时,MOSI/MISO线路的时钟和数据可用于选定的从站。 当启用多个芯片选择信号时,MISO

线上的数据会被破坏,因为主机无法识别哪个从机正在传输数据。

从图6可以看出,随着从机数量的增加,来自主机的片选线的数量也增加。这会快速增加主机需要提供的输入和输出数量,并限制可以使用的从机数量。可以使用其他技术来增加常规模式下的从机数量,例如使用多路复用器产生片选信号。


图7.多从机SPI菊花链配置

在菊花链模式下,所有从机的片选信号连接在一起,数据从一个从机传播到下一个从机。在此配置中,所有从机同时接收同一SPI时钟。来自主机的数据直接送到第一个从机,该从机将数据提供给下一个从机,依此类推。

使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。例如在图7所示的8位系统中,为使第3个从机能够获得数据,需要24个时钟脉冲,而常规SPI模式下只需8个时钟脉冲。图8显示了时钟周期和通过菊花链的数据传播。并非所有SPI器件都支持菊花链模式。请参阅产品数据手册以确认菊花链是否可用。


图8.菊花链配置:数据传播

附录:详解SPI中的极性CPOL和相位CPHA
https://blog.csdn.net/ce123_zhouwei/article/details/6923293

SPI的极性Polarity和相位Phase,最常见的写法是CPOL和CPHA,不过也有一些其他写法,简单总结如下:
(1) CKPOL (Clock Polarity) = CPOL = POL = Polarity = (时钟)极性
(2) CKPHA (Clock Phase) = CPHA = PHA = Phase = (时钟)相位
(3) SCK=SCLK=SPI的时钟
(4) Edge=边沿,即时钟电平变化的时刻,即上升沿(rising edge)或者下降沿(falling edge)
对于一个时钟周期内,有两个edge,分别称为:
(1)Leading edge=前一个边沿=第一个边沿,对于开始电压是1,那么就是1变成0的时候,对于开始电压是0,那么就是0变成1的时候;
(2)Trailing edge=后一个边沿=第二个边沿,对于开始电压是1,那么就是0变成1的时候(即在第一次1变成0之后,才可能有后面的0变成1),对于开始电压是0,那么就是1变成0的时候;
本博文采用如下用法:
极性=CPOL
相位=CPHA
SCLK=时钟
第一个边沿和第二个边沿

CPOL和CPHA,分别都可以是0或时1,对应的四种组合就是:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。