• 97查看
  • 0回复

[芯片硬件] 为什么说SPI总线的数据传输与众不同?

[复制链接]


该用户从未签到

发表于 昨天 19:53 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


SPI(Serial Peripheral interface)表示串行外围设备接口,是一种同步、串行、高速的全双工通信总线。它在芯片中只用4个信号线来实现控制信号和数据信号的传输。

SPI总线速率高、结构简单、管脚数量少、节省PCB布局空间,所以SPI总线在线路板内部的应用非常广泛,不仅可以用于Flash/EEPROM、RTC,ADC、SBC、Driver等外围芯片,还可以用于SOC、MCU等主芯片间的通信。

1.物理接口

SPI总线的连接主要包括4个信号线,2个数据线MOSI和MISO,1个时钟线SCK和1个片选信号SS。

为什么说SPI总线的数据传输与众不同?w1.jpg

SPI总线接口1对1原理框图

如上面原理框图所示,芯片间的数据线MOSI和MISO、时钟线SCK按信号名对应连接即可。

各个管脚信号的含义如下:

1.MOSI(Master Output,Slave Input):主设备输出/从设备输入,主设备的数据输出管脚,相应的对于从设备来说就是数据输入管脚;

2.MISO(Master Input,Slave Output):主设备输入/从设备输出数据,主设备的数据输入管脚,相应的对于从设备来说就是数据输出管脚;

3.SCK(Serial Clock):时钟信号,由主设备发出,用于同步数据传输的速率和时序;

SPI并没有规定最大传输速率,传输速率主要取决于SCK串行时钟频率,而SCK又取决于芯片的工作频率,通常可以达到20MHz甚至更高。

4.SS(Slave Select):从设备选择,用于主设备片选使能从设备,信号为低时有效。使被选中的从设备能够被主设备所访问。主设备也可以不使用SS管脚,使用通用的IO口,通过软件发送片选信号。

这里要说明的是,上面介绍的4个管脚的名称是典型的名称,SPI的名称并不是唯一的,有的芯片不是以主从的角度命名,而是以设备的角度命名。

比如用SDO或SO表示串行数据输出,用SDI或SI表示串行数据输入。两个设备的名称也不称为主设备和从设备,而是称为控制器和外设,相应的片选也由SS从设备选择改为芯片选择CS(chip select) 。

比如外设上的SDI信号是接收控制器数据的输入引脚。同样,控制器上的SDO引脚是向外设发送数据的输出引脚。

为什么说SPI总线的数据传输与众不同?w2.jpg

有些芯片也可以以SDI、SDO、CS命名

无论是使用哪种名称,他们都遵循SPI协议,工作原理是完全一样的。

为什么说SPI总线的数据传输与众不同?w3.jpg

SPI管脚命名方式可能不同,但都是SPI总线

2.主从模式

与CAN的多主模式不同,SPI总线与LIN总线类似,采用的是主从模式。这一点从管脚信号的命名上(MOSI、MISO)也可以看出。

SPI 规定了两个 SPI 设备之间通信必须由主设备(Master)来控制从设备(Slave);主设备通过提供 SCK(Clock)和SS (Slave Select)来控制多个从设备。

从设备的 Clock 由主设备通过 SCK 管脚提供,而从设备本身不能产生或控制 Clock,没有 Clock 则 Slave 设备不能正常工作。

当有多个从设备的时候,主设备会分配给每个从设备一个片选信号,当主设备和某个从设备进行通信时,需要将从设备对应的片选引脚电平拉低。

从设备会一直等待,直到接收到Master设备发过来的片选信号,然后根据时钟信号来工作。

为什么说SPI总线的数据传输与众不同?w4.jpg

SPI总线1对3原理框图

如上面原理框图所示,其中的主芯片SOC为主设备,外围器件SBC和ADC为从设备,另外一个主芯片MCU也是从设备。

当SPI主设备想读/写从设备时,它首先拉低从设备对应的SS线,接着开始发送工作脉冲到时钟线SCK上,在相应的脉冲时间上,主设备把信号发到MOSI实现“写”,同时可对MISO采样而实现“读”,如下图:

为什么说SPI总线的数据传输与众不同?w5.jpg

SPI通讯时序图

3.工作时序/模式

在上面的SPI的通讯时序图中,我们可以发现SPI的传输时序与SCK有很大的关系,SCK是一个固定频率的方波,每个周期都由半个周期的低电平和半个周期的高电平组成。

上面的SPI通讯时序图中,SCK平时空闲时为高,数据在上升沿时采样,这里只是列举了一种模式,实际上SPI有4种不同的数据传输时序/模式,4种传输时序是通过CPOL和CPHA来设置的。

CPOL和CPHA表示的是SPI时钟的极性Clock Polarity和相位Clock Phase。所谓的极性,就是指电平的高低,这里是指时钟信号空闲时的电平是低电平还是高电平:

1,CPOL=0时空闲电平为低电平,即有效电平是高电平。

2,CPOL=1时空闲电平为高电平,即有效电平是低电平。

为什么说SPI总线的数据传输与众不同?w6.jpg

CPOL极性设置

所谓的相位,是指各个边沿的序号,比如上图中CPOL=1时第1个边沿是下降沿,第2个边沿是上升沿,而CPOL=0时,第1个边沿是上升沿,第2个边沿是下降沿。

1,CPHA=0时在时钟的奇数(1,3,5,…,15)边沿采样,即每个周期的第1个边沿。

2,CPHA=1时在时钟的偶数(2,4,6,…,16)边沿采样,即每个周期的第2个边沿。

为什么说SPI总线的数据传输与众不同?w7.jpg

CPHA相位设置

也就是说CPOL决定了时钟条件边沿是上升沿还是下降沿,而CPHA决定了哪个条边沿采样;组合起来采样模式Mode0/1/2/3如下表所示:

为什么说SPI总线的数据传输与众不同?w8.jpg

采样模式

主、从设备的SPI工作模式设置要相同,双方按照一致的规则采样和发送数据,否则数据发送/接收会存在问题。很多外围芯片出厂时已经固定了工作模式,主设备就需要根据芯片的模式设置自己的CPOL和CPHA值。

CPHA=0,在时钟的第1个跳变沿(上升沿或下降沿)进行数据采样,对应的不同极性SCK如下图所示:

为什么说SPI总线的数据传输与众不同?w9.jpg

SPI Clock Format 0 (CPHA = 0)

CPHA=1,在时钟的第2个跳变沿(上升沿或下降沿)进行数据采样,对应的不同极性SCK如下图所示:

为什么说SPI总线的数据传输与众不同?w10.jpg

SPI Clock Format 1 (CPHA = 1)

主设备根据将要交换的数据来产生相应的时钟信号,时钟信号通过时钟极性(CPOL)和时钟相位(CPHA)控制两个SPI 设备间何时数据传输以及何时进行采样,通过相同的工作模式来保证数据在两个设备之间的同步传输;

4.数据交换

SPI 设备间的数据传输又被称为数据交换,是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只是一个发送者或只是一个接收者。

在每个Clock周期内,SPI 设备都会发送并接收一个bit大小的数据(主设备和从设备都是如此),相当于该设备有1bit 大小的数据被交换了。SPI数据传输机制如下图示所示:

为什么说SPI总线的数据传输与众不同?w11.jpg

SPI数据传输机制-数据交换

图中的SHIFT REGISTER是设备里的内部移位寄存器。

主设备移位寄存器的MSb(高位)通过MOSI发送给从(Slave)设备移位寄存器(SSPSR)的LSb(低位);

同时从设备移位寄存器的MSb(高位)通过MOSI发送给主设备移位寄存器的LSb(低位);

比如主设备移位寄存器的数据是:11111111,发送掉1bit后,数据变成1111111x。

从设备移位寄存器的数据是:00000000;发送掉1bit后,数据变成0000000x。

经过1个SCK的时钟,主、从设备的移位寄存器都向外发送了1bit,同时又接收到了1bit,移位寄存器的数据向左移动了1bit。此时主设备移位寄存器内的数据是:11111110;而从设备移位寄存器内的数据为:00000001;主、从设备移位寄存器的数据完成了一次交换。

如此经过8个SCK时钟后,主从设备移位寄存器中的数据完成了所有的交换。主设备移位寄存器内的数据是:00000000;而从设备移位寄存器内的数据为:11111111;接下去设备必须在下次总线操作之前,将数据从移位寄存器转移到芯片内部的数据寄存器中。

也就是写入SPI主设备数据寄存器中的数据会变成向从设备发出的数据,传输完成一次后从SPI主设备数据寄存器读取的数据是来自从设备的输入数据。

所以在数据传输的过程中,每次接收到的数据必须在下一次数据传输之前被采样,如果之前接收到的数据没有被读取,那么这些已经接收完成的数据将有可能会被丢弃,导致SPI数据传输最终失效;在程序中一般都会在SPI传输完数据后去读取SPI设备里的数据,即使这些数据在程序里是无用的。

这样看来,其实SPI并没有单独的发送或接收,也就是没有单独的读或写操作。因为根据上面的循环移位原理,设备发一个数据必然会收到一个数据,而想要收一个数据必须也要先发一个数据。无论何时,读和写都是同时进行的。

主、从设备之间会产生一个数据链路回环(Data Loop),数据通过MOSI和MISO信号线在主、从设备之间进行交换。

为什么说SPI总线的数据传输与众不同?w12.jpg

5.小结

SPI是一种同步、串行、高速的全双工通信总线,它只用4个信号线来实现控制信号和数据信号的传输。SPI与CAN不同,它只规定了基本的通信方式,并没有规定通信应答机制,也没有定义地址标识ID,它通过硬线的片选信号使能从设备,采用主从模式和数据交换的通信方式。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 11-2-2025 15:08 , Processed in 0.470015 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.