设计与开发

单片机spi SPI通信协议:单片机spi通信接口什么意思,spi接口干什么用的?

小编 2024-10-06 设计与开发 23 0

SPI通信协议:单片机spi通信接口什么意思,spi接口干什么用的?

讲真,以前做开发的时候最怕就是调spi和iic。

因为公司没有逻辑分析仪,调起来全凭经验,一出问题找都找不到,只能仔细看代码盲调,看是不是哪个时序有问题。

说到这里,可能刚初学的小伙伴会问:单片机spi通信是什么鬼?spi接口是干什么用的?

一、单片机spi通信是什么鬼?

单片机是一个可编程的微控制器,和spi通信其实是两个独立的东西。

只不过我们用单片机可以去实现spi通信而已,但是实现spi通信不一定非要单片机。

我们人和人之间沟通,要靠说话,并且两个人语言要一样,比如说都用普通话。

那芯片和芯片沟通,它们又不会说话,怎么传递信息呢?

就是通过通信总线,通信总线有很多种,比如IIC、SPI、USART、CAN,它们的区别就像普通话、英语、韩语、俄语,都是用来传递信息用的,只是传递方式不同

但传递信息,有一个前提,就是语言要相同,也就是通信方式要相同。

所以说,spi是一种通信方式,是用来传递信息的

不同的通信方式,传递信息的方式不同。

Spi是一种全双工、高速的、同步 的通信总线。

简单来说,就是你们两个可以同时快速地说话,你能把你要说的告诉对方,同时也能听到对方说什么,这就是全双工

还有一种叫半双工,就是你们同时只能有一个人说,另一个听,说完了,另外一个才能说。

很明显,全双工传递信息的效率更高 吧。

同步的意思我给你们两个对话设定个条件,比如说我说开始你们才可以对话,我说停止就都不能说话。

二、spi接口是干什么用的?

我们人和人传递信息一般是靠耳朵和嘴巴对吧?

Spi通信传递信息是通过接口,来看下图:

spi接口有4根线,分别是CS、SCLK、MOSI、MISO

SCLK是同步信号 ,一般由主控来控制。

既然是通信,自然是需要有个”对象”,如上图A和B。

A是SPI Master,也就是主控,比如说单片机,一般就是主控的角色,主控来负责发送SCLK同步信号通知SPI Slave是否需要进行数据通信。

B是SPI Slave,也就是从机,比如说Flash芯片。

CS代表片选信号 ,为什么要用片选呢?

因为一个SPI Master可以跟不同的SPI Slave进行通信。

SPI Master就是通过CS来控制,具体跟哪个SPI Slave通讯,控制CS为低电平就代表选中该SPI Slave。

如果说只跟一个从设备通讯,也可以直接把CS串联电阻接地,省的每次都去控制它。

MOSI英文全称是Master Output Slave Input,这个一般接主控器件数据输出引脚,从机器件数据输入引脚。

MISO英文全称是Slave Input Master Output,这个一般接主控器件数据输入引脚,从机器件数据输出引脚。

除此以外,还有一种特殊的用法,就是只用SCLK和MOSI这两个引脚的SPI通信。

比如说我们无际单片机编程实战项目课程里有个OLED屏的应用。

片选引脚CS我直接硬件接地了,因为只有一个从设备。

我们主要是控制OLED屏去显示内容,并不需要从OLED读取数据,所以MISO也不需要。

这种情况是可以只用2根线的。

所以,这种协议要从本质上去理解它们,不需要死记硬背要接几个引脚,你学废了吗?

更多单片机开发实战干货可以到无际单片机编程。

单片机常用IIC、SPI、UART接口介绍

很多人听到IIC总线、SPI总线、485总线什么的就会晕,其实,数据传输的接线方式,大体上就是两种:一种是并行接口,一种是串行接口。

并行接口是什么?用并行方式来传输数据的接口。假如我想传输几个8位的数据,那好,单片机上用8个IO传送数据,每次就能传送一个。假如想传输几个16位的数据呢?那就要用16个IO!优点是速度快,缺点是占用的IO太多了。

串行接口是什么?是指数据在有限的几个IO上按照顺序,一位一位的进行传输。这类有很多:UART、IIC、SPI、CAN、USB等等,只要是串行传输的接口,都是串口的一种。但是由于早期人们都习惯把UART口称为串口,导致很多人都习惯了说串口的时候特指UART口。

IIC接口

IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的一种简单、双向、二线制、同步串行总线,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。主要包括启始、停止、读、写、应答信号。这种方式简化了信号传输总线接口。

IIC总线上可以挂多个器件,而每个器件都有唯一的地址,这样可以标识通信目标。数据的通信的方式采用主从方式,主机负责主动联系从机,而从机则被动回应数据。

能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像

主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作

为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。

SPI接口

SPI 是英语 Serial Peripheral Interface 的缩写,顾名思义就是串行外围设备接口。SPI 是一种高速的、全双工、同步通信总线,标准的 SPI 也仅仅使用 4 个引脚,常用于单片机和 EEPROM、FLASH、实时时钟、数字信号处理器等器件的通信。SPI 通信原理比 I2C要简单,它主要是主从方式通信,这种模式通常只有一个主机和一个或者多个从机,标准的 SPI 是 4 根线,分别是 SSEL(片选,也写作 SCS)、SCLK(时钟,也写作 SCK)、MOSI(主机输出从机输入Master Output/Slave Input)和 MISO(主机输入从机输出 Master Input/Slave Output)。

在时序上,SPI 是不是比 I2C要简单的多?没有了起始、停止和应答,UART 和 SPI 在通信的时候,只负责通信,不管是否通信成功,而 I2C却要通过应答信息来获取通信成功失败的信息,所以相对来说,UART 和 SPI 的时序都要比 I2C简单一些。

SPI总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此SPII总线占用的空间非常小,减少了

电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率

支持40个组件。SPI总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都

可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

UART接口

UART是串行异步通信接口,它包括RS232、RS499、RS423、RS422和RS485等接口规范和 标准规范,即UART是串行异步通信口的总称。

串口通信的概念非常简单,串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。

UART、SPI、I2C区别

1、UART就是两线,一根发送一根接收,可以全双工通信,线数也比较少。数据是异步传输的,对双方的时序要求比

较严格,通信速度也不是很快。在多机通信上面用的最多。

2、SPI接口和上面UART相比,多了一条同步时钟线,上面UART的缺点也就是它的优点了,对通信双方的时序要求不

严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容

量存储器等。

3、I2C接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复

杂。一般单片机系统里主要用来和24C02等小容易存储器连接。

SPI:高速同步串行口。3~4线接口,收发独立、可同步进行

UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢

SPI:一种串行传输方式,三线制,网上可找到其通信协议和用法的3根线实现数据双向传输串行外围接口

(Serial peripheral Interface)

相关问答

飞思卡尔两个 单片机 如何进行 SPI 通信?

飞思卡尔S12系列的单片机基本上都有SPI接口,而且一般可以切换复用的,比如XS128就可以用PS4-7或者PM口进行通信,2个单片机进行SPI通信的时候,普通模式下需要4...

单片机 外挂一个人 spi 的Flash,怎么操作是明白的,但是具体的原理呢, 单片机 通过so,嗖嗖嗖过去?

事实上Flash有一套自己定义的协议。你仔细分析一下你发送给FLASH的数据就会明白。通常的做法是需要单片机先告诉flash我需要读还是写,什么位置,多少字节,如果...

51 单片机spi 需要io口配置吗?

需要配置io口的,spi管脚接的哪个io就配置哪个需要配置io口的,spi管脚接的哪个io就配置哪个

PIC16F887 单片机SPI 通信?

连线的话很简单就是一对一连线就可以了,至于单片机初始化SPI,需要对SPI的主从模式,通讯速率,进行设置。连线的话很简单就是一对一连线就可以了,至于单片机初...

单片机 串口通信方式0 和 单片机 用用工作方式0进行 SPI 通信 是...

就是串口通信方式0不是SPI通信这两种通信方式有些相同之处,还有些不同相同:他们都是同步串行通讯。不同的地方:方式0:为同步移位寄存器的输入输出方...

单片机 的按键怎么外接-ZOL问答

1、每个I/O端口接一个按键:按键接另一端通常是接地,I/O口通常还应该接一个上拉电阻,有些单片机的I/O口可以配置成内部上拉,就不需要外接上拉电阻了。这种接法的...

spi 和i2c哪个值得入手?

只要搞单片机应用设计,SPI总线和I2C总线都必须掌握,因为单片机的外设有很多使用SPI总线或I2C总线。掌握这两个总线技术的应用,通常需要了解两方面的内容:第...

单片机 里ISP下载线是什么意思,ISP是什么的缩写?-ZOL问答

miso,mosi,sck这些属于单片机的SPI接口,单片机除了这个接口还有USART接口,I2C接口等,这些接口都是通信用的,各有特色。ISP是一种下载方式,SPI是一种接口。缩写...

单片机 与adc之间如何连接?

单片机与ADC之间可以通过多种方式进行连接,包括并行接口、串行接口、SPI接口等。其中,最常用的方式是通过SPI接口进行连接,通过SPI接口可以实现快速、稳定的数...

单片机 如何通过ADC模块采集模拟信号?

朋友们好,我是电子及工控技术,我来回答这个问题。众所周知单片机是一种超大规模的集成电路,它只能“读懂”并处理数字信号,对于连续量的模拟信号则无能为力。...

猜你喜欢