打印
[其他ST产品]

SPI通信

[复制链接]
1221|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SPI接口
1.1 SPI接口简介
        SPI(Serial Peripheral Interface,串行外设接口)是由摩托罗拉(Motorola)在1980前后提出的一种全双 工同步串行通信接口,它用于MCU与各种外围设备以串行方式进行通信以交换信息,通信速度最高可达 25MHz以上。 SPI接口主要应用在EEPROM、FLASH、实时时钟、网络控制器、OLED显示驱动器、AD转换器,数字信号处理器、数字信号解码器等设备之间。

        SPI接口通常由四条线组成,一条主设备输出与从设备输入(Master Output Slave Input,MOSI),一条主设 备输入与从设备输出(Master Input Slave Output,MISO),一条时钟信号(Serial Clock,SCLK),一条从设备使能选择(Chip Select,CS)。



图1  SPI 一主一从示意图

        SPI通信只能有一个主机,但可以有一个或多个从机。图1显示了主机和从机之间的SPI连接。产生时钟信号的器件称为主机。主机和从机之间传输的数据与主机产生的时钟同步。SPI接口可以同时发出和接收数据,因此SPI接口的理论传输速度比I²C更快。SPI 接口通过片选引脚选择从机,一个片选一个从机,因此在多从机结构中,需要占用较多引脚。

        来自主机的CS(片选信号)用于选择从机。这通常是一个低电平有效信号,拉高时从机与SPI总线断开连接。当使用多个从机时,主机需要为每个从机提供单独的片选信号。本文中的片选信号始终是低电平有效信号。MOSI和MISO是数据线。MOSI将数据从主机发送到从机,MISO将数据从从机发送到主机。

使用特权

评论回复
沙发
铁血丹心LLLL|  楼主 | 2023-6-28 17:05 | 只看该作者
1.2 多从机配置
        多个从机可与单个SPI主机一起使用。从机可以采用常规模式连接,或采用菊花链模式连接。

1.2.1 常规模式连接     在常规模式下,主机需要为每个从机提供单独的片选信号。一旦主机使能(拉低)片选信号,MOSI/MISO线上的时钟和数据便可用于 所选的从机。如果使能多个片选信号,则MISO线上的数据会被破坏,因为主机无法识别哪个从机正在传输数据。从上图可以看出,随着从机数量的增加,来自主机的片选线的数量也增加。这会快速增加主机需要提供的输入和输出数量,并限制可以使用的从机数量。可以使用其他技术来增加常规模式下的从机数量,例如使用多路复用器产生片选信号。

使用特权

评论回复
板凳
铁血丹心LLLL|  楼主 | 2023-6-28 17:05 | 只看该作者
1.2.2 菊花链模式        在菊花链模式下,所有从机的片选信号连接在一起,数据从一个从机传播到下一个从机。在此配置中,所有从机同时接收同一SPI时钟。来自主机的数据直接送到第一个从机,该从机将数据提供给下一个从机,依此类推。使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。
————————————————

使用特权

评论回复
地板
铁血丹心LLLL|  楼主 | 2023-6-28 17:05 | 只看该作者
      例如在上图所示的8位系统中,为使第3个从机能够获得数据,需要24个时钟脉冲,而常规SPI模式下只需8个时钟脉冲。上图显示了时钟周期和通过菊花链的数据传播。并非所有SPI器件都支持菊花链模式。请参阅产品数据手册以确认菊花链是否可用。

使用特权

评论回复
5
铁血丹心LLLL|  楼主 | 2023-6-28 17:06 | 只看该作者
SPI协议

        要开始SPI通信,主机必须发送时钟信号,并通过使能CS信号选择从机。片选通常是低电平有效信号。因此,主机必须在该信号上发送逻辑0以选择从机。SPI是全双工接口,主机和从机可以分别通过MOSI和MISO线路同时发送数据。在SPI通信期间,数据的发送(串行移出到MOSI/SDO总线上)和接收(采样或读入总线(MISO/SDI) 上的数据)同时进行。串行时钟沿同步数据的移位和采样。SPI接 口允许用户灵活选择时钟的上升沿或下降沿来采样和/或移位数据。欲确定使用SPI接口传输的数据位数,请参阅器件数据手册。

使用特权

评论回复
6
铁血丹心LLLL|  楼主 | 2023-6-28 17:06 | 只看该作者
时钟极性和时钟相位
        在SPI通信中,主机可以选择时钟极性和时钟相位。在空闲状态期间,CPOL位设置时钟信号的极性。空闲状态是指传输开始时CS为高电平且在向低电平转变的期间,以及传输结束时CS为低电平且在向高电平转变的期间。CPHA位选择时钟相位。根据CPHA位的状态,使用时钟上升沿或下降沿来采样和/或移位数据。主机必须根据从机的要求选择时钟极性和时钟相位。根据CPOL和CPHA位的选择,有四种SPI模式可用。表1显示了这4种SPI模式。 表1  SPI四种工作模式

        这里要重点强调CPHA(时钟相位)的作用:

​当CPHA=0时,表示数据线上的数据在第一个时钟边沿被采样;
当CPHA=1时,表示数据线上的数据在第二个时钟边沿被采样;​

使用特权

评论回复
7
铁血丹心LLLL|  楼主 | 2023-6-28 17:07 | 只看该作者
2.2 四种SPI模式下的通信示例
        下图显示了四种SPI模式下的通信示例。在这些示例中,数据显示在MOSI和MISO线上。传输的开始和结束用绿色虚线表示,采样边沿用橙色虚线表示,移位边沿用蓝色虚线表示。请注意,这些图形仅供参考。要成功进行SPI通信,用户须参阅产品数据手册并确保满足器件的时序规格。

SPI模式0, CPOL=0, CPHA=0

使用特权

评论回复
8
铁血丹心LLLL|  楼主 | 2023-6-28 17:07 | 只看该作者
SPI模式0, CPOL=0, CPHA=0

上图给出了SPI模式0的时序图。在此模式下,时钟极性为0,表示时钟信号的空闲状态为低电平。此模式下的时钟相位为0,表示数据在第一个时钟边沿(上升沿)采样(由橙色虚线显示),并且数据在时钟信号的下降沿移出(由蓝色虚线显示)。

使用特权

评论回复
9
铁血丹心LLLL|  楼主 | 2023-6-28 17:07 | 只看该作者
SPI模式1, CPOL=0, CPHA=1

   上图给出了SPI模式1的时序图。在此模式下,时钟极性为0,表示时钟信号的空闲状态为低电平。此模式下的时钟相位为1,表示数据在第二个时钟边沿(下降沿)采样(由橙色虚线显示),并且数据在时钟信号的上升沿移出(由蓝色虚线显示)。

使用特权

评论回复
10
铁血丹心LLLL|  楼主 | 2023-6-28 17:08 | 只看该作者
SPI模式2, CPOL=1, CPHA=0

上图给出了SPI模式2的时序图。在此模式下,时钟极性为1,表示时钟信号的空闲状态为高电平。此模式下的时钟相位为0,表示数据在第一个时钟边沿(下降沿)采样(由橙色虚线显示),并且数据在时钟信号的上升沿移出(由蓝色虚线显示)。

使用特权

评论回复
11
铁血丹心LLLL|  楼主 | 2023-6-28 17:08 | 只看该作者
SPI模式3, CPOL=1, CPHA=1

   上图给出了SPI模式3的时序图。在此模式下,时钟极性为1,表示时钟信号的空闲状态为高电平。此模式下的时钟相位为1,表示数据在第二个时钟边沿(上升沿)采样(由橙色虚线显示),并且数据在时钟信号的下降沿移出(由蓝色虚线显示)。

使用特权

评论回复
12
小小蚂蚁举千斤| | 2023-6-30 16:06 | 只看该作者
SPI通信速率其实挺快的,高达8M我用的

使用特权

评论回复
13
szt1993| | 2023-6-30 16:07 | 只看该作者
华邦的EEPROM基本上是SPI通讯,速率快稳定

使用特权

评论回复
14
Undshing| | 2023-7-1 22:38 | 只看该作者
小小蚂蚁举千斤 发表于 2023-6-30 16:06
SPI通信速率其实挺快的,高达8M我用的

spi速度没上限吧

使用特权

评论回复
15
周半梅| | 2023-12-30 08:03 | 只看该作者

整流器或功率开关管与每个电容端的连线长度和宽度都要一样

使用特权

评论回复
16
Pulitzer| | 2023-12-30 09:06 | 只看该作者

不要根据不同的参数类型走不同的代码逻辑

使用特权

评论回复
17
童雨竹| | 2023-12-30 11:02 | 只看该作者

其他的信号和地要与这些高压引线和它的散热部分隔开

使用特权

评论回复
18
Wordsworth| | 2023-12-30 12:05 | 只看该作者

对于没有else的场景,使用ifPresent即可

使用特权

评论回复
19
Clyde011| | 2023-12-30 13:08 | 只看该作者

每个Strategy交由Spring管理,并在构造后注册

使用特权

评论回复
20
公羊子丹| | 2023-12-30 14:01 | 只看该作者

变压器隔离拓扑中,变压器有多少个绕组

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

488

帖子

1

粉丝