首页 > 其他分享 >SPI总线

SPI总线

时间:2023-11-20 22:35:40浏览次数:34  
标签:CPOL 总线 CPHA 模式 SPI SCLK 设备

SPI :一种高速、全双工、同步串行的通信总线。

主、从模式:
一个SPI系统包含有且仅有一个主设备、多个从设备。主设备提供时钟、发起读写操作,从设备接受时钟信号,响应读写操作。
当存在多个从设备时,通过片选线进行处理。

信号线:
MISO:(o:out,对于从设备来说为输出) 主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
MOSI: (i:in,对于从设备来说为输入)主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
SCLK:串行时钟信号,由主设备产生。
CS/SS:从设备片选信号,由主设备控制。它的功能是用来作为“片选引脚”,也就是选择指定的从设备,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。

数据的接受发送:
首先,片选信号选中目的从设备;
主机通过发送时钟信号告知目的机读或写;
主机将要发送的数据发送到数据缓存区,经由移位寄存器和MOSI传到从机。
同时,从机将要发送的数据经由移位寄存器和MOSO传到主机。
!!!!注意:SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;
反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

SPI的四种通信模式:
时钟极性(CPOL)定义了时钟空闲状态电平:CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
时钟相位(CPHA)定义数据的采集时间:CPHA=0,在时钟的第一个跳变沿(上升沿或下降沿)进行数据采样,在第2个边沿发送数据。
CPHA=1,在时钟的第二个跳变沿(上升沿或下降沿)进行数据采样,在第1个边沿发送数据
MODE 0:CPOL=0,CPHA=0
SCLK低电平空闲,高电平有效,先采后发,故:上升沿采样,下降沿发送
MODE 1:CPOL=0,CPHA=1
SCLK低电平空闲,高电平有效,先发后采,故:上升沿发送,下降沿采样
MODE 2:CPOL=1,CPHA=0
SCLK高电平空闲,低电平有效,先采后发,故:下降沿采样,上升沿发送
MODE 1:CPOL=1,CPHA=1
SCLK高电平空闲,低电平有效,先发后采,故:下降沿发送,上升沿采样

!!!注意:主从设备必须使用相同的工作模式——SCLK、CPOL 和 CPHA,才能正常工作。
如果有多个从设备,并且它们使用了不同的工作模式,那么主设备必须在读写不同从设备时需要重新修改对应从设备的模式。

???SPI的三种工作模式:
运行模式:基本操作模式。
等待模式:一种可配置的低功耗模式,可以通过SPICR2寄存器的SPISWAI位进行控制。
在等待模式下,如果SPISWAI位清0,SPI操作类似于运行模式。如果SPISWAI位置1,SPI进入低功耗状态,并且SPI时钟将关闭。
如果SPI配置为主机,所有的传输将停止,但是会在CPU进入运行模式后重新开始。如果SPI配置为从机,会继续接收和传输一个字节,这样就保证从机与主机同步。
停止模式:为了降低功耗,SPI在停止模式是不活跃的。如果SPI配置为主机,正在进行的传输会停止,但是在CPU进入运行模式后会重新开始。
如果SPI配置为从机,会继续接受和发送一个字节,这样就保证了从机与主机同步。

SPI优缺点
优势:
1、传输速度高,SPI并未限定最高速度。有的应用甚至高达10Mbps。
2、全双工,但有的芯片没有MISO,则不支持。
3、相较于I2C而言,SPI简单一些,编程容易,控制简单
4、信号为单向信号,易于电隔离。尤其在工业产品中电气隔离在抗干扰方面、以及本质安全方面要求比较高。
5、没有复杂的总线仲裁机制,相对健壮。
劣势:
1、无寻址机制,需要额外的片选信号
2、SPI总线对于多从模式支持不好,两种拓扑都无法支持很多从设备,而且系统中也仅有一个主设备
3、没有定义错误检测机制
4、事实上的标准,但无正式标准
5、与I2C一样也只是芯片间总线,无法长距离通信

 

标签:CPOL,总线,CPHA,模式,SPI,SCLK,设备
From: https://www.cnblogs.com/sejwy/p/17845055.html

相关文章

  • 十四.SPI使用1——SPI基础和ICM20608的使用
    在日常设备使用中,最常用通讯协议就是I2C和SPI了,前面过了一遍I2C,I2C接口速度最快能到400K,但是SPI能到几时兆。下面我们来实现SPI的使用。SPI接口SPI硬件定义SPI和I2C一样属于一种串行通讯协议,但是I2C需要2根线实现通讯,这样就限制了传输的速度;SPI则需要4根线才能数据通信(如果是......
  • Linux驱动开发十九.SPI驱动开发
    SPI是一种非常常用的串行通讯协议,今天我们过一遍如何在Linux下试下SPI驱动的编写,并且借助一个IC来实现ARM主机通过SPI和外设之间进行数据交互。Linux下的SPI框架SPI在Linux中也是以一种Bus呈现出来的。和前面我们做的Platform总线一样,只不过platform是一种虚拟的总线而SPI是一种......
  • 16_AT24C02(I2C总线)
    AT24C02(I2C总线)存储器介绍存储器简化模型AT24C02介绍引脚及应用电路内部结构框图I2C总线介绍I2C电路规范弱上拉模式开漏输出模式I2C时序结构I2C数据帧AT24C02数据帧AT24C02数据存储I2C.c#include<REGX52.H>sbitI2C_SCL=P2^1;sbitI2C_SDA......
  • 微软发布.NET云原生开发框架——.NET Aspire
    众所周知,微软于2023-11-14日发布了.NET8的正式版。伴随着这个重要.NET版本的发布,微软也发布了一个全新的.NET云原生开发框架——.NETAspire。.NETAspire提供了如下3个方面的能力,来帮助我们使用.NET开发分层、云就绪的可观测、本地与生产环境一致的分布式云原生应用程序:微服......
  • T507开发板如何配置GPIO功能为I2C_SPI_UART
    T507开发板如何配置GPIO功能为I2C_SPI_UART引脚功能复用思路:1、确认新的功能需要哪些引脚,并确认这些引脚原来用做什么功能2、去掉原来功能对这些引脚的使用(关掉功能)3、添加新的功能并使用这些引脚I2C一、确认TWI0需要的引脚打开T5_Series_User_Manual_V1.0手册的第10章的Operatio......
  • 快速入门:构建您的第一个 .NET Aspire 应用程序
    前言云原生应用程序通常需要连接到各种服务,例如数据库、存储和缓存解决方案、消息传递提供商或其他Web服务。.NETAspire旨在简化这些类型服务之间的连接和配置。在本快速入门中,您将了解如何创建.NETAspireStarter应用程序模板解决方案。准备条件要使用.NETAspire,您需......
  • 【溶解度工具】上海道宁为您带来了解溶解度、分散性、扩散、色谱等问题的强大而实用的
      高度参数化的UNIFAC技术可以提供出色的预测COSMO-RS方法的量子化学基础可以在明确的公式中进行精确预测Abraham参数和NRTL-SAC也各有其独特的功能优秀的配方师会使用正确的工具来完成手头的工作  如果您必须只使用一种工具那么它应该是HSP......
  • Arduino之TFT_eSPI驱动彩色LCD屏
    原文:https://blog.csdn.net/qq_45355603/article/details/132298259一、TFT_eSPI库简介1.1安装TFT_eSPI库在User_Setup.h中进行个人屏幕参数的配置: User_Setup.h TFT驱动板 备注TFT_MISO 无 TFT_MOSI SDA TFT_SCLK CLK TFT_CS CS 液晶屏片选信号,低电平使能TFT_DC RS ......
  • FTDI的MPSSE使用示例(SPI协议背景知识简介及其FT4232H配成USB to SPI使用实例)
    MPSSEApplicationExample:http://ftdichip.cn/Support/SoftwareExamples/MPSSE.htmMPSSE:AN_129FTDIUSBToJTAGTAPExampleMPSS:AN_114FTDIUSBtoSPIExampleMPSSE:AN_113FTDIUSBtoI2CExampleMPSS:AN_114FTDIUSBtoSPIExampleFTDIMPSSE(Multi-Pr......
  • P3513 [POI2011] KON-Conspiracy
    题目描述:Byteotia的领土被占领了,国王Byteasar正在打算组织秘密抵抗运动。国王需要选一些人来进行这场运动,而这些人被分为两部分:一部分成为同谋者活动在被占领区域,另一部分是后勤组织在未被占领的领土上运转。但是这里出现了一个问题:后勤组织里的任意两人都必须是熟人,以促进合作......