产品选型

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

小编 2024-11-23 产品选型 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通信接口的芯片看一下时序图就可以了。我们要做的,就是用单片机的引脚,把它的时序做出来。

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

单片机常用电路1-晶振电路

在单片机的学习中,不光是单片机程序的编写,还有电路的设计。有些公司可能会把单片机开发分成两块:电路设计、程序设计。然后负责电路设计的人只负责电路设计,不用考虑单片机编程;程序设计的人只管单片机编程,不设计电路。

不过我个人认为,只搞电路设计的人可以不用关心单片机是怎么编程的,但是搞单片机程序设计的人,却必须要对电路很熟悉,你可以不用亲自设计电路,但是必须对单片机项目中各种电路的原理足够了解,这样才能确保设计出来的程序稳定、健壮。

举个例子来说吧,假如一个单片机系统中用到了EEPROM存储芯片,EEPROM芯片的SCL和SDA是开漏输出的,需要外接上拉电阻,假设电路板上的EEPROM芯片的SCL和SDA的上拉电阻忘记焊上或者坏掉了,这时候调试EEPROM是调不通的,如果这时候电路设计人员不在,而单片机程序设计人员又对EEPROM的原理不熟悉,就会陷入到麻烦中:因为对电路不熟悉,就会一遍一遍的查找程序的原因。可是程序明明没有问题啊,这个程序在别的项目中一直都是正常的,为什么在这个板子上就不行了呢?

还有一点,一般带有微控制器的电路板,电路功能是否正常,是需要编写一定的验证程序来测试电路板的性能的,单靠电路设计人员使用万用表、示波器等工具是无法验证电路的好坏的。

综上所述,单片机程序设计人员一定要对电路的原理熟悉,这样才能设计出正确的程序。

从本篇文章开始,我们就来简单学习一下单片机开发中常用的电路。

当然,由于本人水平有限,关于这些电路的讲解只限于简单原理的讲解。如果有错误,欢迎批评指正。

1. 单片机常用电路1-晶振电路

早期的单片机(比如经典的51单片机)系统,外接晶振是必须的(当然也可以外接时钟脉冲,但是很少用),因为单片机的运行必须依赖于稳定的时钟脉冲。但是随着技术的发展,现在很多单片机都已经集成了内部时钟,所以在一般的应用场合,可以不用外接晶振电路了。不过由于内部时钟容易受外界干扰,所以在要求严格的场合,晶振电路还是很有必要的。

晶振电路1

图1是典型的单片机外接晶振电路。

图1 单片机晶振电路

该电路不只是有一个晶振,还有两个电容,这两个电容有什么作用呢?

这两个电容一般称为“匹配电容”或者“负载电容”、“谐振电容”。晶振电路中加这两个电容是为了满足谐振条件。一般外接电容,是为了使晶振两端的等效电容等于或接近负载电容。只有连接合适的电容才能满足晶振的起振要求,晶振才能正常工作。

负载电容的值由如下公式计算:

负载电容无法满足的话一般会使晶体频率产生偏差,严重的话晶体无法起振。电路设计中要尽量满足晶体的负载电容需求,从而使晶体工作在最佳状态。负载电容计算公式如下:

CL = C1*C2 / (C1+C2) + CS

CL为晶振的负载电容值,一般通过查询晶振的数据手册获得。CS为电路板的寄生电容,一般取 3~5pF,取C1 = C2,那么公式可以简化成如下:

CL = C1 / 2 + CS

一般情况下,增大负载电容的值会使振荡频率下降,减小负载电容的值,会使振荡频率上升。

晶振电路2

我们有时候还会看到如图2所示的晶振电路。

图2 不带并联电阻和带并联电阻的晶振电路

该电路中晶振上又并了一个电阻,这是为什么呢?

这个电阻实际上是反馈电阻,是为了方便晶振起振的。对于COMS而言,这个电阻的阻值可以是1M以上,对于TTL则是需要视情况而定。最好的办法是看看芯片的数据手册,确认芯片晶振电路内部是否有电阻,如果没有,电路设计时最好加上。

晶振电路3

图3是有源晶振电路。

图3 有源晶振电路

有源晶振通常的用法:一脚悬空,二脚接地,三脚接输出,四脚接电压。有源晶振不需要CPU的内部振荡器,连接方式相对简单(主要是做好电源滤波,通常使用一个电容和电感构成的PI型滤波网络,输出端用一个小阻值的电阻过滤信号即可),不需要复杂的配置电路。相对于无源晶体,有源晶振的缺陷是其信号电平是固定的,需要选择好合适输出电平,灵活性较差,而且价格高。

相关问答

sda 和sck怎么接?

这个是传输数据用的sdata是数据传输口,sclk是时钟口,可能是iic或者其他的串行接口,和单片机的数字一样的io口接一起,自己不太清楚的话就接通用io口。这个绝对...

单片机 学习IIC总线EEPROM重要吗,有什么用?

单片机学习IIC总线是必须学习单片机的时候,大家都会学到IIC读、写EEPROM,可以说是入门必配。IIC是什么?IIC是一种串行总线结构,IIC串行总线一般只需要SDA...

存储器24C02工作时,他的晶振是由ScL提供还是由其他振荡源提供?

I2C写流程(图片3,一个写流程,写一个数据,上面通道是SDA,下面是SCL,往7F这个地址里写222这个数据)写寄存器的标准流程为:(这里Master是单片机,Slave是2...写寄...

arm 单片机 使用多种通讯协议,为什么不统一使用一种协议?

单片机的片上资源有多种通信方式,常用的如IIC、SPI、UART/USART、CAN,甚至高端一点的还具有以太网和USB通信。这么多的通信方式,为什么不统一成一种的?因为每...

硬件II2C和软件I2C有什么区别?

所谓硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的;软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。硬件I2C...

24C02是什么集成块-ZOL问答

AT24c02的SDA,SCL分别上拉5.1k电阻与单片机IO口连接EESDAEESCL接单片机的引脚。EEVCC接电源。不同的24C02的电源范围略有区别。一般3V-5V都可以。7条回...

在嵌入式开发中,怎么开发SPI IIC的驱动程序?

SPI和IIC都是比较常用的短距离通讯方式,主要用在PCB板间或者芯片之间实现近距离通信。比如AT24C02就是通过IIC和单片机实现数据通信的,BMP280即可以通过IIC又可...

SPI、I2C、USART等协议有什么共同点和区别?

这个,还是先说说三种协议的特点吧。1、SPI。串行通信协议,全双工的同步通信总线协议,要分主从,要占四根线(四个管脚),算是速度比较高的一种了(这三种...SPI、I2...

电子项目开发中,如何确定使用I2C总线还是SPI总线或者CAN总线?

电子项目开发中经常用到通讯功能,包括板子上芯片间的通讯和设备间的通讯。而常用的有线通讯方式无非就这几种,如I2C、SPI、RS232、RS485接口、CAN、USB等。其中...

门禁视频智能系统设计方案是怎么样的?

根据实际需求,在门外和门里各安装1台摄像机,摄像机就近取电。离机房远的摄像机,通过视频光端机将视频信号转换为光纤号,通过光纤传至嵌入式硬盘录像机里。离...

猜你喜欢