Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2008|回复: 1

SPI总线管脚定义和基本时序图

[复制链接]

253

主题

362

帖子

2426

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2426
发表于 2023-1-30 01:09:20 | 显示全部楼层 |阅读模式
<SPI特点>  高速、同步、全双工、非差分、总线式。
SPI有3个引脚或者4个引脚,3个引脚是主设备输出,4个引脚还加上一个主设备输入(从设备输出):
分别定义如下:CS、 SCK、 DO(MOSI)、 DI(MISO)   
具体说明:
1) CS:片选,总线CS拉低标志传输开始,CS拉高标志传输结束。是所谓从机选择信号。

也即从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需 要将从设备对应的片选引脚电平拉低或者是拉高。
(当然这时主设备的IO使能接口要有多个,如下图) 接线图.png
<SPI主从设备连线图>

2)SCK :时钟信号,由主设备产生;
3)DO/MOSI :DataOut 主设备数据输出 (从设备数据输入);
4)DI/MISO : DataIn 主设备数据输入 (从设备数据输出);

SPI通信有4种不同的模式,通过CPOL(时钟极性)和CPHA(时钟相位)来配置不同的模式:
Mode0:CPOL=0,CPHA=0;
Mode1:CPOL=0,CPHA=1;
Mode2:CPOL=1,CPHA=0;
Mode3:CPOL=1,CPHA=1;

时序图1.png
时序图2.png

SPI协议能够通过控制时钟信号线,当没有数据交流的时候时钟线要么是保持高电平要么是保持低电平,来控制通信周期:因为SPI并没有如I2C以及UART一样的通信控制协议,那样有专门的开始结束信号。
在SPI协议中,根据不同的模式,靠时钟触发来读取/写入信号。详见时序图。
SPI总线标准化不是很完全,需要匹配不同从设备datasheet来实现读写,实现和实际应用相对复杂一些。


由于没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较起来在数据可靠性上有一定的缺陷,但就是由于简单,传输速度比较快,可达30Mbps以上(I2C总线传输速度100Kbps----4Mbps)。

SPI内部实现机制: 内部工作机制.png
SSPSR 是 SPI 设备内部的移位寄存器(Shift Register). 它的主要作用是根据 SPI
时钟信号状态, 往 SSPBUF 里移入或者移出数据, 每次移动的数据大小由 Bus-Width 以 及 Channel-Width 所决定.

<具体数据操作:>
SPI有主从两种工作方式。
主动方式  -----
      主动方式下,SPI为其他节点的SPICLK引脚提供串行时钟,数据从SPISIMO引脚输出,从SPISOMI引脚输入。主控制器写人数据到寄存器SPITXBUF便启动发送,数据从SPITXBUF传送到SPIDAT中再通过SPISIMO引脚发送出去,先发送最高位;同时,主控制器接收到的数据通过SPISOMI引脚移入寄存器SPIDAT的最低位。当选定数量的位数发送完时,整个数据发送完毕,紧接着接收完毕(通过SPISIMO引脚发送的SPIDAT的数据最高位每移出一位后就会从SPISOMI引脚移人一位到SPIDAT最低位)。首先将接收到的数据传送到寄存器SPIRXBUF,并进行右对齐,供CPU读取。
从动方式  -----
      在从动方式下,数据从SPISOMI引脚移出并由SPISIMO引脚移入。SPICLK引脚作为串行移位时钟的输入。
为了接收数据,串行外设接口等待网络主控制器送出的SPICLK信号,然后它将SPISIMO引脚上的数据移入到SPIDAT寄存器。如果从控制器同时也发送数据,则必须在SPICLK信号开始之前把数据写入到SPIRXBUF或SPIDAT寄存器中

<其它说明:>
SPI为单主机系统,单主系统只有一台主控制器,其他均为从控制器。其数据的传输格式是高位(MSB)在前,低位(LSB)在后。

<参考文献:>
1)https://www.eefocus.com/e/511362.html
2)https://blog.csdn.net/crusierLiu/article/details/122985844
3)https://baike.baidu.com/item/%E4%B8%B2%E8%A1%8C%E5%A4%96%E8%AE%BE%E6%8E%A5%E5%8F%A3/2845092?fromtitle=SPI%E6%8E%A5%E5%8F%A3&fromid=2527392&fr=aladdin














SPI接线图.png
回复

使用道具 举报

253

主题

362

帖子

2426

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2426
 楼主| 发表于 2023-4-5 23:47:26 | 显示全部楼层
SPI通信过程为:把CS引脚拉低,然后SCK输出时钟,然后就可以在MOSI引脚上输出数据,同时可以在MISO上获得数据了。
SPI_FLASH.png (这是一个SPI FLASH芯片,DO是MISO,DI是MOSI,CLK是SCK,功能一样,叫法不一样而已)
SPI_ADC.png
(这是一个SPI接口的ADC芯片,Dout是MISO,DCLOCK就是SCK,这个芯片有3个SPI引脚)
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-4-14 22:17 , Processed in 0.021127 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表