作为一名精良的硬件工程师,相信在设计图纸和写程序的过程中,I2C和SPI芯片肯定是十分常见的,而且在许多项目这两者是比不可少的。那到底什么是IIC和SPI呢?本日
对付许多初学者而言,包括
在实际的利用过程中,用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通信接口的芯片看一下时序图就可以了。我们要做的,便是用单片机的引脚,把它的时序做出来。
玩转电子硬件,每晚与您相约今日头条!