SPI接口介绍

SPI接口介绍SPI接口的全称是”SerialPeripheralInterface”,即串行外围接口。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几十Mbps。S

大家好,又见面了,我是你们的朋友全栈君。

SPI接口的全称是”Serial Peripheral Interface”,即串行外围接口。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几十Mbps。

SPI接口主要有4根信号线,连接方式如下图所示:
(1)SCLK:串行时钟,用来同步数据传输,由主机输出;
(2)MOSI:Master Output Slave Input ,即主机输出,从机输入 数据线;
(3)MISO:Master Input Slave Output ,即主机输入,从机输出 数据线;
(4)SS: 片选线,低电平有效,由主机输出。主要是用在一个主机连接多个从机的情况,用来选择某一时刻跟主机进行通信的从机。
这里写图片描述

 根据不同的时钟极性(CPOL)及相位(CPHA)可以组合成4种工作模式:
(1) CPOL=0 ,CPHA=0
(2) CPOL=0 ,CPHA=1
(3) CPOL=1 ,CPHA=0
(4) CPOL=1 ,CPHA=1
CPOL时钟极性定义了时钟空闲状态时的电平,对传输协议没有太大影响。
CPOL=0 :时钟空闲状态时为低电平。
CPOL=1 :时钟空闲状态时为高电平。
CPHA时钟相位定义采样的时间:
CPHA=0 :在时钟的第一个跳变沿(上升沿或下降沿)进行采样。
CPHA=1 :在时钟的第二个跳变沿(上升沿或下降沿)进行采样。

SPI的4种工作模式如下图所示:
这里写图片描述
所以,在使用SPI通信时,主从机必须协商好使用哪种工作模式,只有工作模式一致才能正确的收发数据。
比如经常使用 CPOL=0 ,CPHA=0的这种工作模式:
主机不发送或接收数据时 CLK为低,在发送或接收数据时,产生周期性时钟,同时拉低片选信号,每个时钟的下降沿发送一位数据,在时钟的上升沿则采样一位数据。当接收或发送完数据后,拉高片选,拉低时钟信号。

总结:SPI通信时,数据的收发是在时钟不同的沿 同时 进行的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150382.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • webstorm激活码最新【中文破解版】

    (webstorm激活码最新)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
    49
  • JAVA——Tess4J简单的图像识别DEMO

    JAVA——Tess4J简单的图像识别DEMO基本概念TesseractOpenSourceOCREngine:包含一个OCR引擎-libtesseract和一个命令行程序-tesseract。Tesseract4添加了一个新的基于LSTM的OCR引擎,该引擎专注于行识别,但仍支持Tesseract3的传统TesseractOCR引擎,该引擎通过识别字符模式进行工作。通过使用传统OCR引擎模式(–oem0),可以与Tesseract3兼容。它还需要训练有素的数据文件来支持旧式引擎,例如tessdata存储库中的文件。…

    2022年6月5日
    82
  • c语言opencv读取图像_matlab读取一幅图像并显示

    c语言opencv读取图像_matlab读取一幅图像并显示函数cv2.imread()用于从指定的文件读取图像OpenCV完整例程200篇01.图像的读取(cv2.imread)02.图像的保存(cv2.imwrite)03.图像的显示(cv2.imshow)07.图像的创建(np.zeros)08.图像的复制(np.copy)09.图像的裁剪(cv2.selectROI)10.图像的拼接(np.hstack)……………

    2022年8月31日
    3
  • 0xc0000225无法进系统_Win10无法开机0xc0000225错误代码解决方法

    0xc0000225无法进系统_Win10无法开机0xc0000225错误代码解决方法早在使用Win7系统的时候我们就会遇到0xc0000225错误无法开机的问题,而在Win10系统的使用中,同样很多小伙伴也遇到了该错误,那么这时我们要怎么解决呢?下面小编就和大家分享下Win10无法开机0xc0000225错误代码的原因和解决方法。出现0xc0000225错误的原因:出现错误代码0xc0000225,表示Windows无法找到用于引导的BCD(引导配置数据)文件。如果您的系统文…

    2022年6月26日
    39
  • 优先级队列(Priority Queue)「建议收藏」

    优先级队列(Priority Queue)「建议收藏」优先级队列(PriorityQueue)注:队列是一种特征为FIFO的数据结构,每次从队列中取出的是最早加入队列中的元素。但是,许多应用需要另一种队列,每次从队列中取出的应是具有最高优先权的元素,这种队列就是优先级队列(PriorityQueue),也称为优先权队列。1.优先级队列的概念1.1优先级队列的定义优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。

    2022年4月19日
    62
  • java常识-java怎么换行「建议收藏」

    java常识-java怎么换行「建议收藏」文章目录”\r”和”\n”的区别”\r”和”\n”的由来回车键和输入的”\n”有不同吗?系统影响java使用换行符的几种方式“\r”和”\n”的区别回车\r本义是光标重新回到本行开头,r的英文return,控制字符可以写成CR,即CarriageReturn换行\n本义是光标往下一行(不一定到下一行行首),并不移动左右。n的英文newline,控制字符可以写成LF,即LineFeed也就是说,如果想要到下一行行首,一般的写法应该是”\r\n”,0D0A,即ASCII码对应的‘\r

    2022年7月7日
    94

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号