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根线的。
所以,这种协议要从本质上去理解它们,不需要死记硬背要接几个引脚,你学废了吗?
更多单片机开发实战干货可以到无际单片机编程。
什么是单片机的通信接口
作为一名优秀的硬件工程师,相信在设计图纸和写程序的过程中,I2C和SPI芯片肯定是十分常见的,而且在许多项目这两者是比不可少的。那到底什么是IIC和SPI呢?今天小编就和大家分享一下。
对于许多初学者而言,包括小编在刚开始接触单片机的时候,经常听到同事说起I2C和SPI,但是一直不知道是什么意思。其实I2C和SPI和单片机的串口或者CAN一样都是一种通信接口,而且都是有标准的协议的,只是它们的时序不同,仅此而已。
在实际的使用过程中,用I2C的芯片最常见的是EEPROM芯片,比如AT24CXX系列。使用SPI通信的芯片一般外置FLASH芯片,蓝牙芯片,RFID等等。
I2C通信需要用到两个引脚:。SCL表示的是时钟引脚,SDA表示的是数据引脚。如下图所示。
(上面的图表示的是EEPROM芯片)
(上面的图表示的是时钟芯片)
SPI通信需要4个引脚:SPI_CS,SPI_SCK,SPI_MOSI,SPI_MISO。SPI通信芯片的引脚名称一般都是这种写法,例如SPI_MOSI表示的意思就是“主机输出从机输入”主机一般就是指我们的单片机,从机是指待操作的芯片。
SPI标准的通信过程是:先把片选SPI_CS引脚拉低,SPI_SCK引脚输出时钟,然后就可以在SPI_SMOSI引脚上输出数据,同时可以在MISO上获得数据了。
(下面这幅图是一个SPI FLASH的芯片,芯片引脚和标注的名称意思一致)
目前市场上常见的单片机中,大部分使用的都是带有I2C口和SPI口的,有的还有有可能还会有好几个I2C口和SPI口。比如现在比较流行的STM32,Freescale,NXP,PIC等单片机。但是有的单片机本身不带硬件I2C口和SPI口的,也可以通过模拟的方式通信。并且对于新手而言,学习一下用普通引脚模拟是十分有必要的,以为这样对他们的通信本质理解更深刻。
在实际的通信全程中,其实单片机就是要控制相应引脚的高低电平,或者检测输入引脚的高低电平的过程。IIC和SPI就是控制引脚的高低电平,本质上和点灯没什么区别,只是在时序上有标准的要求。
IIC中是用两条线来通信,一条时钟线(SCK),一条数据线(SDA)。时钟线用来产生一个脉冲,再说的直接一点,就是把引脚变高变低的信号,用延时函数来确定频率。如下图:这就是个时钟信号
比如我们规定,在SCK高电平时,读取SDA的电平,连续8个SCK读一个字节。数据的那一端,在检测到低电平的时候,就把要发送的数据按照位体现在数据引脚上面。例如一个数据:0x88,写成二进制以后就是1000 1000。我们来看一下传输这个数据的过程:从机检测时钟引脚,检测到一个下降沿(就是从高电平落到了低电平),就把要发送的数据的bit7体现在数据引脚上,例如1000 1000的bit7是1,就把数据引脚变高电平,主机在时钟引脚的高电平,检测这个数据引脚,把这个位记录下来,从机再次发现时钟引脚的下降沿后,再把数据的bit6体现在数据引脚上,由于1000 1000 的bit6是0,所以从机把数据引脚拉低,然后当时钟引脚为高电平的时候,主机检测数据引脚的高低电平,再把bit6记录下来,……以此8次,就可以把一个字节由从机传输到主机了。是不是很简单呢?
SCK的速率,是指数据传输的快慢,通过控制SCK电平之间的时间间隔就可以。
I2C通信,SPI通信,只不过是在我刚才讲的例子上面,又多了一些协议内容。具体的协议,你们随便找一个I2C和SPI通信接口的芯片看一下时序图就可以了。我们要做的,就是用单片机的引脚,把它的时序做出来。
玩转电子硬件,每晚与您相约今日头条!
相关问答
单片机SPI 编程?1.定义三个gpio:p0-sclk,p1-sdi,p2-sdo;p0用于模拟spi的clock,p1用于接收数据,p2用于f发送数据;硬件上单片机A的p0接单片机B的p0,A的p1接B的p2,...
单片机 为什么要用模拟 SPI ?一个方面是自身的不好用,设置麻烦,另一个是通信方式和被控的器件时序不兼容,还一个原因就是自带的可能专用IO被其他功能占用了,或是已经使用在别的SPI器件上...
51 单片机 有 spi 协议吗?有很多型号的51单片机具备SPI接口,内部通过特殊功能寄存器方式实现SPI通讯协议,例如STC系列51单片机几乎都有SPI接口。对于没有SPI接口的51单片机,也可以通过...
光电耦合器和 单片机 的通信方式?光电耦合器和单片机之间的通信方式可以通过串口通信实现。光电耦合器将光信号转换为电信号,然后通过串口发送给单片机。单片机接收到电信号后,可以解析并处理...
STM32 单片机 可以用来做人机交互界面吗?第二种方案利用stm32单片机自带的Fsmc接口驱动TFT彩屏,Fsmc原是stm32的一种存储并线接口,那用在彩屏驱动时,在硬件设计上就需要考虑布线等长,还要做防静电...总...
ADXL345加速度计通信速率问题我用的 单片机 的 SPI 速度是125K,...[最佳回答]ADXL345加速度计的输出数据率指的是1s内输出数据的次数.3200Hz表示1s内将ADXL345内部0x32~0x37寄存器的值输出3200次,与SPI的速率无关.ADXL345DO口...
什么是 SPI 接口?一般是指同步外设接口串行外设接口(SerialPeripheralInterface)是一种同步外设接口,它可以使单片机与各种外围设备以串行方式进行通信以交换信息。外围设...
ft232和 spi 可以通信吗。ft232是usb转串口,上面有tx rx引脚,而我用24l01?无法直接连接。需要单片机来转接。无法直接连接。需要单片机来转接。
8052 单片机 怎么通信?1、单片机与其他单片机或芯片级的通讯有:RS232、IIC、SPI、并口(I/O)、DMA(如msp430、ARM);2、单片机通过电缆与PC或其他设备通讯有:RS232、RS485、USB、CA....
51 单片机 基础知识重点?一、STC51单片机外部引脚介绍1、电源和时钟引脚。如Vcc、GND、XTAL1、XTAL22、编程控制引脚。如RST(复位)。3、I/O口引脚。Vcc、GND——单片机电源引脚,不...