通信协议—串口,RS232,485,IIC,SPI

        从最简单的形式上出发,只有一根线通讯这根线。一根线最多只能实现半双工通信。同一时刻不是你发我收就是你收我发,但这就存在一个问题,难以实现两者互相同时通信,而且双方收发节奏上要个约定,错开时间来发送,不然两边同时想发的话那就僵住了。

串口:

        先解决同时通信的需求,再加一根线,你发你的,我发我的,这样就互不干涉,也不存在同时发生冲突。那这就已经是我们常见的串口,但这种情况下速率还是得提前约定,不然发送的结果也会出错;有两根线以后双方都非常自由抒发的节奏也不受约束了。假设速率也约定好,但问题是怎么样正确的提取有效数据呢?毕竟一根线只有0或一两种状态,空闲与非空闲本身都不好识别,那这时候我就需要在数据链路层增加一些额外的信息来标记一针有效的数据。

        UART为例,在传输数据的基础上,加上起始位和结束位,并且规定空闲时为高电平,额外的两个比特来保证数据的正确接收这个代价看上去还是可以接受的。但这是因为这个数据帧头和尾过于简单了,所以数据真还得规定好固定的长度就是数据帧长度。根据这个长度来取,不然也没法判断某个电平是真数据还是头尾的标识符。

IIC:

        那我们回到一根数据线的基础上,再加一根时钟线。当没有时钟的时候,代表自然也就代表停止发送。这样不仅速率有了依据,数据传输的节奏也很明确。比方说约定我在时钟上面发送,对里面就在下边采样,那这样总是能够保证一个时钟周期内双方能够正确传输一个比特,这就是同步传输了进一步的,因为现在我们有两个不同作用的线了,我们还可以用这两个线的电平组合来作为切分比特流的依据。

        比如我们规定时钟高电平的时候数据线不允许变化,低电平数据线在变化。如果始终在高电平时数据线发生的条件,那就正好是当做开始和结束的标志。有两根线组合判断,而不是只看数据的特殊电瓶,这样一来,接收端也不用数固定的比特数来确定采样中点了。理论上帧长度也不需要提前约定而变得灵活了。如果再加上应答就能够很好的实现半双的总线通信,

        使用两个双向的开路线,引入线与特性。从机在正确接收后就能够通过在数据线上主动ACK 来通知主机,那如果没有做好接受数据的准备,从今天还能够通过拉低时钟线来影响主设备发送节奏。如果是多主机的场景下同时发送数据所需要的仲裁机制也能够通过线与的特性来实现,那到这儿其实就已经是大家所熟悉的IIC总线。

SPI:

        那接下来在解决半双工全双工的问题,再加一个反向数据线呗,对方发过来的数据也由刚刚的时钟线驱动,那这样形成的全双工,双方的发送节奏其实都用一方来控制,也就形成了主动关系。如果要满足与多个从设备的风险,那就再带上一根用于选中从设备片选信号用来使能不同的通讯对象。与此同时,还能简化传输流程,寻址ID都省了,那只需要传输最纯粹的有效信息利用率也提高了一些。这就形成了标准的SPI。那么进一步,我们想要提高通讯的距离,稳定性和速度呢?
这些都常常用在板级器件之间的通讯,实现共地也比较简单,但是他们很少用在大于一米的长距离通信上。另外,这些信号线基本每一根都有各自的作用,而独立的一根线不仅容易受到外界的干扰。

抗干扰:

        但是本身电流的高频电话还会对外产生电磁干扰,影响到周围的细节。说到电磁干扰最直接的解决思路肯定是屏蔽干扰同轴线缆就是这样一个解决思路,通过加屏蔽层来实现抗干扰性,但相对应呢?他的体积,重量,成本和抗弯抗扭的属性就有点拉胯那怎么解决呢

        再加一点线,传输完全相反的信号,两根线的差分电平来表示一个信号,这样外界的干扰就能够被差分电平和消除,那你可能要问,如果因为两根线的线距而导致干扰产生的相位不同呢?我们只需要把这两根线绞起来,干扰就基本均匀的影响,因为极性相反也会产生相反的磁场,相互抵消会大大减弱。

RS232

        由此引出RS232。

        串口通讯的高低的电压范围是多少呢?串口通讯采用的是TCL逻辑,高电平最小为2.4V低电平最大为0.4伏。我们一般都会认为窗口通讯的高电平是5伏
        而电瓶是零伏。这就造成了它的抗干扰能力很弱。
如果这时候突然来一个静电,很可能把某一位低电平变高。这就导致串口通讯的距离很短。一般都是在一块电路板上两块芯片之间的通讯或者芯片和电脑通讯。距离一般都在一米之内。为了提高窗口通讯的距离和稳定性,由此引出RS232。在原来串口通讯的基础上加一个电平转换芯片。比如我们单片机给发送的是5伏,转换输出12伏,如果给他发送0V,他输出负12 ,RS232的高电平的范围很广。电压处在3到15伏之间都算0。-3~-15伏算1,他最大的好处就是抗干扰能力增强了。因为它的高低电平相差了近20幅。

        这样即使某一个信号受到干扰,它的高低电平还有很大的改变与量。所以它的抗干扰能力增强了很多。它的传输距离也会更长。但是素率只有20k,所以制定了RS485标准。

RS485:

        在串口通讯的基础上加了一个485电平转换芯片,485转换芯片可以把输入的窗口信号转化成差分信号。差分信号只需要两根线。比如当信号a大于信号b的时候,它代表逻辑0,而信号a小于信号b是他代表逻辑一,485芯片把串口TTL信号转化成差分信号,它用的是两根信号线的差值来表示逻辑0和1,而且他的两根线采用双绞线形式缠绕在了一起,这样即使收到干扰也是两根线同时受到干扰。所以最后的电压差值也基本上会保持不变。不过就是在同一时间,她要么在发送数据,要么在接收数据。不能同时进行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值