5分钟看懂!串口RS232 RS485最本质的区别!-4分钟看懂!I2C通讯协议 最简单的总线通讯!-深入理解SPi通讯协议,5分钟看懂!
- 一、5分钟看懂!串口RS232 RS485最本质的区别!
- 二、4分钟看懂!I2C通讯协议 最简单的总线通讯!
- 三 , 深入理解SPi通讯协议,5分钟看懂!
来自
一、5分钟看懂!串口RS232 RS485最本质的区别!
先讲串口通讯,因为不管是R4232还是R485,都是串口通讯的变种。知道了串口通讯,再来看232和485,就很容易理解了。串口通讯非常容易实现,它在两个芯片之间就可以实现信号的传输。在进行串口通讯时,首先要约定好真格式和波特率。这是一帧我们常见的帧格式,一共有十位,它的第一位是起始位,都是以低电平开始,中间的八个是数据位。数据位的内容由我们用户定义的。正好是一个字节。通过中间这八个数据为不同的排列组合,就能代表256种不同的信息。第十位是停止位,都是以高电平结束。当然还有其他的真格式,比如数据位只有七位或者五位。约定好真格式,就需要对波特率进行设定了,这些都是串口通讯常用的。
波特率,
就拿9600的波特率来说,9600代表的是在一秒之内,窗口可以传输9600个高低电瓶。那串口通讯的高低的电压范围是多少呢?窗口通讯采用的是TTL逻辑,它输出的高电平最小为2.4伏。说出的低电平最大为0.4伏。我们一般都会认为串口通讯的高电平是五伏,而低电瓶是零伏。这就造成了它的抗干扰能力很弱,如果这时候突然来一个静电,很可能把某一位低电平变高,这就导致穿口通讯的距离很短,一般都是在一块电路板上,两块芯片之间的通讯,或者芯片和电脑通讯。距离一般都在一米之内。为了提高串口通讯的距离和稳定性。美国电子工业联盟制定了一个RS232标准,RS是recommend standard首字母缩写,意思是推荐标准。可以看一下,这是RR。
232的接口虽然有很多线,但我们一般只用这三根线和我们的串口通讯保持一致。串口通讯使用的也是这三根线,串口通讯是全双工通讯,也就是他可以同时进行收发工作。一根线是单片机a的发送。第二根线是单片机a的接收,第三根线是D线,是两个单片机的参考电压,那单片机怎么进行RS232通讯呢?也非常简单。我们只需要在原来串口通讯的基础上加一个电瓶转换芯片,例如MAX232。这样它就能把TTL电瓶转换为RS232电瓶了。比如我们单片机给MAX232发送的是五伏,则它输出12伏,如果给他发送灵符,则他输出负12副。而如果这个芯片接收到12伏电压,又会把12伏电压转换成五伏的TTL电瓶,而4232的高电的范围很广。
电压处在三到15伏之间都算高电平。低电平是负三至负15伏。RS232只是改变了电瓶大小,传输的还是原来的串口的那些零或者一的数据,而且RS232也是全双工通讯,还是我们最开始那一帧串口数据,如果转换成232之后是这样的,它最大的好处就是抗干扰能力增强了。因为它的高低电平相差了近20伏,这样即使某一个信号受到干扰,它的高低电瓶还有很大的改变余量,所以它的抗干扰能力增强了很多,它的传输距离也会更长,通讯距离可达15米,但是速率只有20K,也就是19200的波特率。
但是面对更为严苛的工业环境和更远的距离需求,而3232就力不从心了。所以人们又制定了R4485标准,和R4232差不多,485通讯是在串口通讯的基础上加了一个485电。
转换芯片,485转换芯片可以把输入的串口信号转化成差分信号。查分信号只需要两根线,不需要地线。比如,当信号a大于信号B的时候,它代表逻辑零,而信号a小于信号B时,它代表逻辑一。485芯片既可以把串口TTL信号转化成差分信号。也可以把差分信号转化单片机能识别的TTL信号。差分信号最大的优势就是抗干扰能力强。因为他用的是两根信号线的差值来表示逻辑零和一。而且它的两根线采用双绞线形式缠绕在了一起,这样即使受到干扰也是两根线同时受到干扰,所以最后的电压差值也基本上会保持不变。因此RS485可以传输更远的距离,可达1200米,而且传输的频率还更高,可达50兆,可以看一下它和RS232的对比,还有就是RS485一般是半双工通讯。
也就是在同一时间,他要么在发送数据,要么在接收数据,不能同时进行。这样带来的好处是它可以进行一主多从的组网通讯,也就是可以和很多设备进行通讯,而串口通讯和RS4232只能进行点对点的简单通讯。最后我们再来看,其实无论是R4232还是RS485,他们只定义了物理层,规定了电瓶标准,对我们编程几乎没有影响,我们只需要会简单的串口通讯,就能快速的进行RS232或者485通讯。这就是我认为的串口RS232和RS485的最本质的区别,希望对你理解有帮助。
二、4分钟看懂!I2C通讯协议 最简单的总线通讯!
串口通讯只能在两个设备之间进行,如果是三个设备互相通讯,那每个设备得需要两组串口,它其实是三组相互独立的串口通讯,如果是四个设备相互通讯就更加麻烦了。最突出的问题就是线连接比较复杂,为了解决这个痛点,人们设计了一种总线通讯。总线通讯有很多种协议,今天给大家介绍一下简单易懂的iPhonec通讯。iPhone c的全称是integir,意思是芯片与芯片之间的通讯。可以看一下,使用iPhone c通讯之后,即使有很多芯片,线路连接显得也非常简单。iPhonec通讯一般采用一主多从模式,比如我们的单片机是主机,而其他设备都是从机,那它到底是如何通讯的呢?以单片机像从事。
写信息为例,可以看一下,这是一帧标准的写数据帧。串口通讯的两根线分别是发送和接收,而iPhonec这两根线分别是时钟线和数据线。我们的这一帧写数据是由时钟线和数据线共同作用的。也就是在同一时间,他要么是在发送信息,要么就是在读取信息。当处于空闲状态时,数据线和时钟线都处于高电平状态。而当开始传递信息时,比如传递第一位起始位。此时必须要在时钟信号为高电平期间。数据信号完成由高到低的跳变,也就是下降沿,这样起始信号就发送完成了。
接下来是七位设备地址码。因为我们有很多从设备,每一个从设备的地址码都是唯一的,为了区别要和哪一个从设备通讯。需要先发送七位地址吗?
七位不同的零或者一的排列组合,一共可以表示128种结果。它的零或者一是这样表示的。当时中线为高电平时。数据线上的数据必须保持稳定。比如,时钟线为高时,数据线上的数据始终为高。这样就完成了逻辑一的传输。如果数据线上始终是低电平。则表示逻辑零。比如,我们发送一串这样的数据。它就表示1010000。也就是要和地址为101000的设备通讯。假如24C02的地址就是1010000。此时就是单片机和这个24C02通讯。接下来的一位是读写数据位,如果我们想要写数据,就给它至零。读数句是质疑,
再下面一位是应答信号。
这个信号是由从机发送给主机的,如果从机收到了之前的信息,他会回复零。没有收到或者读取接收完成。回复一。下面的八位是设备寄存器的地址。因为我们是给24C02通讯的。24C02是一个存储器。它可以存储256个字节。而我们发送的八位寄存器地址,正好可以访问这256个字节。比如,我们写的寄存器地址是0X01,它就会往这里写入数据。然后单片机需要存储器返回一个应答信号。接下来的八位是给这个存储器的寄存器要写入的数据。比如我们发送00001111。在这八个,我就会存储这八位信息,即使后来断电,它里面依旧会永久的保存这些信息。发送完数据之后,需要。
再给主机发送应答信号令,告诉主机写入成功,最后再写入停止位,它和起始位相反,是当时钟信号为高时,数据信号需要由低到高的跳变,这样一个标准的写数据帧就完成了。那怎么读取数据呢?其实读数据和写数据差不多,可以看一下,这是一个标准的读数据帧,它也是首先写入设备地址,然后是写数据,
接下来写的是寄存器的地址。在收到从机的应答信号之后,主机需要再发送一个起始信号,然后需要再发送一遍设备的地址,然后才能发送读数据。接下来存储器就会把寄存器里面的数据发送给单片机,这样就完成了一帧数据的读取。这就是我对iPhonec通讯协议的理解,希望对您有帮助。
三 , 深入理解SPi通讯协议,5分钟看懂!
spi是一种芯片和芯片之间的通讯,它的全称是sa,这是采用了spi通讯的电路连接图。spi通讯采用艺术多重模式,也就是它只能有一个主机,从机可以有一个或者多个SPI通讯需要四条信号线,一条是偏选信号线SS,单片机通过给偏旋信号线高低电瓶来确定哪一个从级通讯,一般当这根线为低电瓶时评选才有效。第二条是时钟信号线SCK,它的信号是这样的,由主设备产生,第三条是发送信号线mosi,全称是master input,也就是主设备从这条线上输出数据,而从设备通过这条线上接收数据。第四条是接收信号线m mro,主设备通过这根线接收数据。
那这四根线是怎么实现spi通讯的呢?接下来用SPI读写93C46里面的数据,让大家对SPI通讯有一个更加深入的了解。在讲spr通讯之前,我们得先了解93C46是什么。93C46是一个一方pro存储器,等同于电脑的固态硬盘,还有1024位存储空间。也就是128个字节。每一个字节都有属于他的地址,他可以经受100万字擦写,数据可以保存100年,那怎么读写片内的这1024位的数据呢?最直接的办法是给每一位都外接一根线,但这显然是不现实的,因此PI就发挥出它的优势了。通过SSP只需要四根线,单品机就可以完全读写片内的这1024位数据了。先说片选信号SS。如果我们要和93C46同学。
应该是高电平还是低电瓶呢?绝大多数都是低电平有效。但是也有例外。数据手册上说他的SS在高电平期间才有效,所以这时候连接93C46的偏选信号就应该给他高电平。
而其他的层级药就不要生效。此时单片机和存储器93C46建立通讯了。为了便于理解,我们暂不展示其他的从句。接收怎么给存储器写入数据?比如,我们要给存储器写入0000111。写入数据的地址是0X01,也就是这一个字节,那怎么给他写入这一串数据呢?这个还得参考存储器的数据手册,可以看一下。要想写数据,首先需要给存储器发送起始位一,然后再发送写数据的操作码零一,然后是七位地址码,因为只有128个字节。
这七位地址码不同的排列组合就有128种结果,正好访问存储器的128个字节。因为我们要访问的地址是0X01,所以这里的地址码就是0000001。最后再发送我们要写入的数据,00001111。这样存储器的这个地址的数据就会保存00001111这一串数据。那是不是只要把这些高低电平通过mosi引脚发出去,数据就能成功写入呢?不是的,因为SPI是串行同步通讯,因此我们的这个数据线要和时钟线两根线配合才能给存储器发送数据。可以看一下真正的一帧spr写数据是这样的。当片选信号被拉高之后,从设备开始生效。接下来,关键的来了,只有在时钟信号的上升沿,数据信号才会被采样,也就是在时钟信号的上升沿这一刻。
数据信号如果是一,它采集到的就是一。如果这一瞬间是零,它采集到的就是零,有几个上升沿,就会传输多少个数据。数据线和时钟线就是这样配合来发送数据的。之所以在时钟的上升沿采集数据,是由这个从设备存储器决定的。要想给他写数据,我们必须这么发送数据。
这种采集方式只是spi的一种模式,还有其他的采集模式。比如只有在时钟的下降沿采集。以上这两种模式的空闲时钟都是低电平。还有两种模式,适当时钟空闲为高电平时,在它的上升沿或者下降沿采集数据。算下来一共四种采集方式,具体要用哪种采集方式,需要我们查阅芯片的数据手册。说完怎么写数据之后,接下来我们再来说一下怎么读数据。我们接下来读取地址0X01里面的数据,再读。
数据的时候也必须给他先写数据。可以看一下芯片的指令集,要想读取这里面的数据,首先得给他写入这十位数据,第一位是起始位一,接下来是读数据的操作码一零,告诉从计我们要读数据,然后发送要读取的地址0X01,接下来我们就能收到这个地址里面的数据了。接收数据用的是时钟线和数据输入线,即使只接收不发送数据,主机也得继续给它提供时钟信号。这就是spi读写存储器的全过程。那是不是spi通讯的读写数据就必须得有这么多位呢?完全不是的,SPI通讯对于一帧数据有多少位没有规定,这个完全取决于芯片的设定了。不管是一位数据或者是100位数据,只要符合SPI的这四种采样模式和电器属性,它就属于SPI通讯。这就是我对S。
PI通讯的理解,希望对你有帮助。