这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » SPI支持“一主多从”吗?

共12条 1/2 1 2 跳转至

SPI支持“一主多从”吗?

高工
2022-08-23 08:54:30     打赏
有小伙伴问了一个问题:SPI支持类似I2C那样的“一主多从吗?


答案是肯定的。
SPI虽然平时我们都是一主一从用的比较多,但也是支持类似I2C那种一主多从的通信方式,但需要增加硬件连接线、通信协议等。


SPI简介

SPI:Serial Peripheral Interface,是串行外设接口。

SPI是由摩托罗拉于 1985 年前后开发,是一种适用于短距离、设备到设备通信的同步串行接口。


从那时起,这种接口就已成为许多半导体制造商,特别是微控制器(MCU)和微处理器(MPU)采用的事实标准。


SPI接口

SPI总线是一种4线总线,通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以。


MOSI:Master Output Slave Input,主设备数据输出,从设备数据输入;

MISO:Master Input Slave Output,主设备数据输入,从设备数据输出;

SCLK:Serial Clock,时钟信号,由主设备产生;

SS:Slave Select,从设备选择信号,由主设备控制;

image.png


上面的SS信号,也可以理解为CS信号,一般是低电平有效,所以也是NSS(非)信号;


CS:Chip Select,片选信号(从设备使能/选择信号),由主设备控制;


一主一从

最基本的SPI通信就是一主一从,比如:一个STM32作为主机,一个W25Q16(SPI Flash)作为从机。还有两个MCU之间进行SPI通信等。 

image.png


上图例子是主机发送一个字节数据(0x53),从机应答一个字节数据(0x46)。


一主多从

SPI可以一主一从(一个主机,一个从机),但也可以一主多从。一主多从常见有两种连接方式。


A.常规

通常,每个从机都需要一条单独的SS线,要与指定的从机通信,将该从机的SS线设为低电平,并将其余的保持为高电平即可。

image.png


B.一条SS信号

某些应用只需要一条NSS即可(比如:移位寄存器),对于这种布局,数据从一个从设备移位到另一个从设备。

image.png


SPI数据传输

SPI的通信比较简单,一个时钟传输一位数据(主机 -> 从机,或者从机 -> 主机)。


SPI时钟

理论上SPI的时钟频率可以做到很大,一般几MHz~几百MHz,拿常见的W25Q16来说,SPI最高支持80MHz。


SPI通信速率要结合实际情况,不能超过主机或从机支持的最大时钟频率。


SPI数据

SPI的数据分两个方向:

MOSI:主机 -> 从机

MISO:从机 -> 主机


SPI通信有一个“缺点”:没有指定的流控制,没有应答机制确认是否接收到数据。


可以理解为:不知道是什么时候主机发给从机,什么时候从机发给主机,到底该发多少字节数据等。


此时,需要通信的主机和从机达成约定,一般由主机进行控制读写的操作。


比如下面这个读写SPI Flash数据的操作:

image.png


前面1字节是指令,紧接着再3字节(24位)地址,都是由主机发送给从机。之后,主机读取数据(由从机发送出来)。


时钟极性和相位

除了设置时钟频率外,主机还必须配置与数据有关的时钟极性和相位。

image.png


CPOL确定时钟的极性,极性可以通过简单的逆变器进行转换。


CPHA确定相对于时钟脉冲的数据位的时序(即相位)。


一般集成有SPI外设的处理器,都有SPI相关的配置寄存器,拿STM32来说,参考手册里面有详细介绍SPI配置的信息。


建议大家结合时序图理解,不要死记硬背。





关键词: SPI     一主多从    

专家
2022-08-23 09:08:30     打赏
2楼

谢谢分享


院士
2022-08-28 20:44:22     打赏
3楼

学习并收藏了,谢谢分享。


院士
2022-08-28 20:51:22     打赏
4楼
学习学习

院士
2022-08-28 20:51:30     打赏
5楼
谢谢

院士
2022-08-28 20:51:38     打赏
6楼
也可以

专家
2022-08-28 21:24:31     打赏
7楼

看看


专家
2022-08-28 21:34:51     打赏
8楼

谢谢


院士
2022-08-28 21:42:22     打赏
9楼

学习


专家
2022-08-29 00:07:01     打赏
10楼

感谢楼主的分享


共12条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]