产品选型

单片机接口 什么是单片机的通信接口

小编 2024-11-24 产品选型 23 0

什么是单片机的通信接口

作为一名优秀的硬件工程师,相信在设计图纸和写程序的过程中,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通信接口的芯片看一下时序图就可以了。我们要做的,就是用单片机的引脚,把它的时序做出来。

玩转电子硬件,每晚与您相约今日头条!

详解单片机的IO接口

MCS-51系列单片机有4组I/O接口:P0、P1、P2和P3。前面简单介绍了一下各个端口,要学好单片机技术,非常有必要详细了解这些端口的内部结构及工作原理。

P0端口

P0 端口有 P0.0~P0.7 共 8 个引脚,这些引脚除了可作 I/O 引脚外,在外接存储器时,还可作地址 / 数据总线引脚。 P0端口每个引脚的内部电路结构都相同,其内部电路结构如图2-6所示。

图2-6 P0端口内部电路结构

(1)当P0端口用作输出端口时

如果要将P0端口用作输出端口,单片机内部的CPU会发出一个“0”到与门的控制端。控制端的“0”一方面关闭与门(即与门的一端为“0”时,不管另一端输入何种信号,输出都为“0”),使地址/数据总线送来的信号无法通过与门;另一方面控制电子开关,让电子开关与锁存器的Q端接通。

此时若给锁存器的写锁存器端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q和Q端输出,如D端输入“1”,则Q端输出“0”(Q端输出“1”),该“0”经电子开关送到场效应管VT2的栅极,VT2截止,从P0端口输出“1”。

也就是说,当给P0端口内部的与门控制端送“0”,同时给写锁存器端送写脉冲信号时,单片机内部总线的信号就可以通过接口电路从P0端口输出。

(2)当P0端口用作输入端口时

当将P0端口用作输入端口时,P0端口的信号既送到三态门,又送到VT2的漏极。如果锁存器之前锁存的为“0”,即Q=0、Q=1,其中Q=1会使VT2导通,P0端口被钳在“0”电平上,“1 ”将无法送入P0端口。

解决的方法是:在将数据输入P0端口前,先通过内部总线向锁存器写“1”,即让Q=0,VT2截止,P0端口输入的“1”就可以送到三态门的输入端,此时再给三态门的读引脚送一个读控制信号,“1”就可以通过三态门送到内部总线。

也就是说,要将P0端口作为输入端口,先要将P0端口的锁存器写“1”,然后再给输入三态门送读控制信号,P0端口的数据就可以通过接口电路,送到单片机内部的总线上。

(3)当P0端口用作地址/数据总线引脚时

如果要将P0端口用作地址/数据总线引脚,先要给与门的控制端送“1”,于是与门打开,同时电子开关和非门输出端接通。当地址/数据总线为“1”时,“1”一方面通过与门送到VT1的栅极,VT1导通,另一方面送到非门,经反相变为“0”,再经电子开关送到VT2的栅极,VT2截止,VT1导通,VT2截止使P0端口输出为“1”;当地址/数据总线为“0”时,VT1导通,VT2也导通,P0端口输出为“0”。

也就是说,当给与门的控制端送“1”时,内部地址/数据总线上的信号就可以从P0端口输出,P0端口就可当作地址/数据总线引脚使用。

P1端口

P1 端口有 P1.0~P1.7 共 8 个引脚,这些引脚可作 I/O 引脚。 P1端口每个引脚的内部电路结构都相同,其内部电路结构如图2-7所示。

图2-7 P1端口内部电路结构

从图2-7中可以看出,P1端口的结构较P0端口简单很多,由于P1端口内部采用了一只场效应管,并且与电源之间接了一只上拉电阻,所以不需要在P1端口的外部接上拉电阻。

(1)当P1端口用作输出端口时

如果要将P1端口用作输出端口,应给锁存器的写锁存器CL端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q和Q端输出,如D端输入“1”,则Q端输出“0”(Q端输出“1”),该“0”送到场效应管的栅极,场效应管截止,从P1端口输出“1”。

(2)当P1端口用作输入端口时

当将P1端口用作输入端口时,如果锁存器以前锁存的为“0”,即Q=0、Q=1,其中Q=1会使场效应管导通,P1端口被钳在“0”电平上,“1”将无法送入P1端口。所以与P0端口一样,在将数据输入P1端口前,先要通过内部总线向锁存器写“1”,让Q=0,场效应管截止,P1端口输入的“ 1”就可以送到输入三态门的输入端,此时再给三态门的读引脚送一个读控制信号,“1”就可以通过输入三态门送到内部总线。

P2端口

P2端口有P2.0~P2.7共8个引脚,P2端口每个引脚的内部电路结构都相同,其内部电路结构如图2-8所示。

图2-8 P2端口内部电路结构

从图2-8中可以看出,P2端口的内部结构与P0端口很相似。P2 端口也可作 I/O 引脚,在外接存储器时,还可以作为地址总线引脚。

(1)当P2端口用作地址总线引脚时

如果要将P2端口用作地址总线引脚,单片机内部的CPU会发出一个控制信号到电子开关的控制端,让电子开关与内部地址总线接通,地址总线上的信号就可以在通过电子开关、非门和场效应管后从P2端口引脚输出。

(2)当P2端口用作I/O接口时

如果要将P2端口用作I/O接口,单片机内部的CPU会发出一个控制信号到电子开关的控制端,让电子开关与锁存器接通。

当将P2端口用作输出端口时,给锁存器的CL端送写脉冲信号,内部总线上的数据就被锁存进锁存器并从Q端输出,再通过电子开关、非门和场效应管从P2端口引脚输出。

当将P2端口用作输入端口时,如果锁存器以前锁存的为“0”,即Q=0,经非门反相后会使场效应管导通,P2端口被钳在“0”电平上,“1”将无法送入P2端口。所以与P0、P1端口一样,在将数据输入P2端口前,先通过内部总线向锁存器写“1”,让Q=1,场效应管截止,P2端口输入的“1 ”就可以送到输入三态门的输入端,此时再给读引脚送一个读控制信号,“1”就可以通过三态门送到内部总线。

P3端口

P3 端口有 P3.0~P3.7 共 8 个引脚, P3 端口可作为 I/O 接口,还可以用于其他方面。P3端口每个引脚的内部电路结构都相同,其内部电路结构如图2-9所示。

图2-9 P3端口内部电路结构

(1)当P3端口用作I/O接口时

如果要将P3端口用作I/O接口,应让与非门的选择输出功能端为“1”,以开通与非门。

当将P3端口用作输出端口时,给锁存器的CL端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q端输出,再通过与非门和场效应管从P3端口引脚输出。

当将P3端口用作输入端口时,应先通过内部总线向锁存器写“1”,让Q=1,场效应管截止,P3端口输入的信号就可以通过缓冲器、输入三态门送到内部总线。

(2)当P3端口用作第二功能时

P3端口用作第二功能(又称复用功能)时,实际上也是在该端口输入或输出信号,只不过输入、输出的是一些特殊功能的信号。所以当P3端口用作第二功能时,其内部电路的工作原理与用作I/O接口时是一样的,在用作输入功能时,端口的锁存器同样要先置“1”。

P3端口8个引脚的第二功能详见表2-1。例如P3.2引脚用作第二功能时,该端口可输入由外部设备送到的中断请求信号,该信号通过缓冲器、输入三态门送到内部总线。

P3端口除了可以接收外界的输入信号外,还可以接收内部的替代输入功能端送来的信号,该信号通过输入三态门送到内部总线。

总之,P0、P1、P2 和 P3 端口的功能是:都可以作输入或输出端口; P0、P2、P3 端口具有第二功能,各种端口的第二功能见表2-1。例如,表中说明P0端口的第二功能可以用作低8位地址总线/ 数据总线,P2端口可用作高8位地址总线,P3.0端口可用作串行数据接收端。

表2-1 MCS-51系列单片机各端口的第二功能

相关问答

单片机 的JTAG 接口 功能是什么-ZOL问答

烧写FLASH的软件有很多种包括jatg.exeflutedflashpgm等等,但是所有这些软件都是通过jtag接口来烧写flash的,由于pc机上是没有jtag接口的,所以利用并口来传递信.....

单片机 原理及 接口 技术的介绍?

本人工科狗一枚,专业是机械大类的一类,大学本科也学了单片机。单片机原理与应用算是比较基础的一门课,能够学习通过单片机进行一些简单的控制。如果题主是一...

单片机 ,什么是串行口,什么是并行口? - 珂珂珂的 的回答 - 懂得

两种接口都是用来传送二进制数据的接口形式。串行接口,一般有一根时钟线,一根数据线,一个时钟周期传送二进制1位,要传送一个字节至少需要8个时钟周...

单片机 ,什么是串行口,什么是并行口? - 小小一个小明 的回...

两种接口都是用来传送二进制数据的接口形式。串行接口,一般有一根时钟线,一根数据线,一个时钟周期传送二进制1位,要传送一个字节至少需要8个时钟周...

请问 单片机 开发板上的串口 接口 、USB电源接口以及外部电源接口的各个功能是什么?

串口接口的功能:1、与其他串口通讯2、下载程序(如果单片机有ISP功能的话)USB电源接口的功能:1、提供开发板5V电源(内部电源)2、下载程序(如果单片机...1...

单片机 怎么烧程序 接口 ?

需要利用下载器和下载软件才能将keil程序输出的hex文件烧录到单片机中。具体操作请参照以下步骤,演示单片机为51单片机。1、首先准备好51单片机最小系统板和...

内部集成了以太网 接口 单片机 有哪些?

……种类太多了,基本上M3、M4以上内核的中档以上单片机都会提供集成以太网接口。其中TI的M3/M4还会集成有PHY,出来过个变压器就可以进RJ45了——可惜功耗偏大...

单片机 usb 接口 那两根是电源线,那两根是数据线-ZOL问答

4条回答:【推荐答案】一般的排列方式是:红白绿黑从左到右定义:红色-USB电源:标有-VCC、Power、5V、5VSB字样白色-USB数据线:(负)-DATA-、USBD-、PD-、USBDT-绿色...

51 单片机 数据 接口 怎么用?

使用51单片机需要达到以下基本条件:1、至少要搭建一个最小系统;2、你需要编制一个51的控制程序;3、你需要将程序编译连接成HEX或BIN格式的代码并下载或烧录...

单片机 的JTAG 接口 功能是什么?

1用于烧写FLASH烧写FLASH的软件有很多种包括jatg.exeflutedflashpgm等等,但是所有这些软件都是通过jtag接口来烧写flash的,由于pc机上是没有jtag接口的,所...

猜你喜欢