[其他ST产品] SPI通信

[复制链接]
 楼主| 铁血丹心LLLL 发表于 2023-6-28 17:00 | 显示全部楼层 |阅读模式
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)。


65070649bf6b463730.png
图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 常规模式连接 34527649bf7b94681c.png     在常规模式下,主机需要为每个从机提供单独的片选信号。一旦主机使能(拉低)片选信号,MOSI/MISO线上的时钟和数据便可用于 所选的从机。如果使能多个片选信号,则MISO线上的数据会被破坏,因为主机无法识别哪个从机正在传输数据。从上图可以看出,随着从机数量的增加,来自主机的片选线的数量也增加。这会快速增加主机需要提供的输入和输出数量,并限制可以使用的从机数量。可以使用其他技术来增加常规模式下的从机数量,例如使用多路复用器产生片选信号。
 楼主| 铁血丹心LLLL 发表于 2023-6-28 17:05 | 显示全部楼层
1.2.2 菊花链模式 6560649bf7d508931.png        在菊花链模式下,所有从机的片选信号连接在一起,数据从一个从机传播到下一个从机。在此配置中,所有从机同时接收同一SPI时钟。来自主机的数据直接送到第一个从机,该从机将数据提供给下一个从机,依此类推。使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。
————————————————
 楼主| 铁血丹心LLLL 发表于 2023-6-28 17:05 | 显示全部楼层
59389649bf7ea79e5e.png       例如在上图所示的8位系统中,为使第3个从机能够获得数据,需要24个时钟脉冲,而常规SPI模式下只需8个时钟脉冲。上图显示了时钟周期和通过菊花链的数据传播。并非所有SPI器件都支持菊花链模式。请参阅产品数据手册以确认菊花链是否可用。
 楼主| 铁血丹心LLLL 发表于 2023-6-28 17:06 | 显示全部楼层
SPI协议

        要开始SPI通信,主机必须发送时钟信号,并通过使能CS信号选择从机。片选通常是低电平有效信号。因此,主机必须在该信号上发送逻辑0以选择从机。SPI是全双工接口,主机和从机可以分别通过MOSI和MISO线路同时发送数据。在SPI通信期间,数据的发送(串行移出到MOSI/SDO总线上)和接收(采样或读入总线(MISO/SDI) 上的数据)同时进行。串行时钟沿同步数据的移位和采样。SPI接 口允许用户灵活选择时钟的上升沿或下降沿来采样和/或移位数据。欲确定使用SPI接口传输的数据位数,请参阅器件数据手册。
 楼主| 铁血丹心LLLL 发表于 2023-6-28 17:06 | 显示全部楼层
时钟极性和时钟相位
        在SPI通信中,主机可以选择时钟极性和时钟相位。在空闲状态期间,CPOL位设置时钟信号的极性。空闲状态是指传输开始时CS为高电平且在向低电平转变的期间,以及传输结束时CS为低电平且在向高电平转变的期间。CPHA位选择时钟相位。根据CPHA位的状态,使用时钟上升沿或下降沿来采样和/或移位数据。主机必须根据从机的要求选择时钟极性和时钟相位。根据CPOL和CPHA位的选择,有四种SPI模式可用。表1显示了这4种SPI模式。 46685649bf810558c8.png 表1  SPI四种工作模式

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

​当CPHA=0时,表示数据线上的数据在第一个时钟边沿被采样;
当CPHA=1时,表示数据线上的数据在第二个时钟边沿被采样;​
 楼主| 铁血丹心LLLL 发表于 2023-6-28 17:07 | 显示全部楼层
2.2 四种SPI模式下的通信示例
        下图显示了四种SPI模式下的通信示例。在这些示例中,数据显示在MOSI和MISO线上。传输的开始和结束用绿色虚线表示,采样边沿用橙色虚线表示,移位边沿用蓝色虚线表示。请注意,这些图形仅供参考。要成功进行SPI通信,用户须参阅产品数据手册并确保满足器件的时序规格。

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

 楼主| 铁血丹心LLLL 发表于 2023-6-28 17:07 | 显示全部楼层
SPI模式0, CPOL=0, CPHA=0
1866649bf840c9cec.png
上图给出了SPI模式0的时序图。在此模式下,时钟极性为0,表示时钟信号的空闲状态为低电平。此模式下的时钟相位为0,表示数据在第一个时钟边沿(上升沿)采样(由橙色虚线显示),并且数据在时钟信号的下降沿移出(由蓝色虚线显示)。
 楼主| 铁血丹心LLLL 发表于 2023-6-28 17:07 | 显示全部楼层
SPI模式1, CPOL=0, CPHA=1
50728649bf8628b271.png
   上图给出了SPI模式1的时序图。在此模式下,时钟极性为0,表示时钟信号的空闲状态为低电平。此模式下的时钟相位为1,表示数据在第二个时钟边沿(下降沿)采样(由橙色虚线显示),并且数据在时钟信号的上升沿移出(由蓝色虚线显示)。
 楼主| 铁血丹心LLLL 发表于 2023-6-28 17:08 | 显示全部楼层
SPI模式2, CPOL=1, CPHA=0
93223649bf88581314.png
上图给出了SPI模式2的时序图。在此模式下,时钟极性为1,表示时钟信号的空闲状态为高电平。此模式下的时钟相位为0,表示数据在第一个时钟边沿(下降沿)采样(由橙色虚线显示),并且数据在时钟信号的上升沿移出(由蓝色虚线显示)。
 楼主| 铁血丹心LLLL 发表于 2023-6-28 17:08 | 显示全部楼层
SPI模式3, CPOL=1, CPHA=1
85722649bf89079dd5.png
   上图给出了SPI模式3的时序图。在此模式下,时钟极性为1,表示时钟信号的空闲状态为高电平。此模式下的时钟相位为1,表示数据在第二个时钟边沿(上升沿)采样(由橙色虚线显示),并且数据在时钟信号的下降沿移出(由蓝色虚线显示)。
小小蚂蚁举千斤 发表于 2023-6-30 16:06 | 显示全部楼层
SPI通信速率其实挺快的,高达8M我用的
szt1993 发表于 2023-6-30 16:07 | 显示全部楼层
华邦的EEPROM基本上是SPI通讯,速率快稳定
Undshing 发表于 2023-7-1 22:38 | 显示全部楼层
小小蚂蚁举千斤 发表于 2023-6-30 16:06
SPI通信速率其实挺快的,高达8M我用的

spi速度没上限吧
周半梅 发表于 2023-12-30 08:03 | 显示全部楼层

整流器或功率开关管与每个电容端的连线长度和宽度都要一样
Pulitzer 发表于 2023-12-30 09:06 | 显示全部楼层

不要根据不同的参数类型走不同的代码逻辑
童雨竹 发表于 2023-12-30 11:02 | 显示全部楼层

其他的信号和地要与这些高压引线和它的散热部分隔开
Wordsworth 发表于 2023-12-30 12:05 | 显示全部楼层

对于没有else的场景,使用ifPresent即可
Clyde011 发表于 2023-12-30 13:08 | 显示全部楼层

每个Strategy交由Spring管理,并在构造后注册
公羊子丹 发表于 2023-12-30 14:01 | 显示全部楼层

变压器隔离拓扑中,变压器有多少个绕组
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

541

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部