什么是串口通信
常见的串口通信一般是指异步串行通信。
这里就要说一下同步和异步的区别了。
先讲一下串行通信的概念。那么,与串行通信相对的是什么呢?
与串行通信相对的是并行通信。数据传输一般都是以字节传输的,一个字节8个位。拿一个并行通信举例来说,也就是会有8根线,每一根线代表一个位。一次传输就可以传一个字节,而串口通信,就是传数据只有一根线传输,一次只能传一个位,要传一个字节就需要传8次。就像小虎队那首歌一样,把你的心,我的心,串一串,再烤一烤。。串口通信就是把数据串在一根线上传输,所以就叫串口吧。 与异步通信相对的就是同步通信了。同步通信一般是指有一个时钟信号进行数据信号同步。同步通信对接收方来说就相对简单一些。因为有时钟信号在,每一个高低电平变化一下,就去取一下数据就行了。通信速率可以由发送方或者说是主站设备进行控制。通信速度也相对比串口通信快很多。但是为什么很多设备,屏和plc,控制器不采用这种方式,都使用串口呢。
那么,在很多设备上,不方便接太多线,比如接8根数据线,也不方便接同步时钟信号(这个后面再说),于是一种异步串行通信就诞生了。
相对来说,异步串口通信,就只需要一根线就可以发送数据了。在对速率要求不高的情况,使用一根线发送数据是带来大大的方便和实用价值的。
那么问题来了,怎么样才能保证一根线就能发送正常的数据呢。也就说发送方发送的数据,接收方是怎么知道是什么数据呢。 为了能正常发送数据和接收正确的数据,那异步串口通信就需要满足以下几个条件: 也就是双方必要约定一种暗号。 也许当时发送这个通信的小组是这样讨论的。
经理:我要用一根线就能传输数据,你来给我定个标准。 研发:好。 经理:只有一根线,我怎么知道数据什么时候开始呢。 研发:就一根线,默认是高电平,那就有一个起始位吧。当检测到有低电平的时候,就是开始有一个字节的数据发送了,起始位之后,先是字节的最低位,传送一个字节。 经理:可是,就一根线,过来的数据会不会有干扰,容易出错呀。 研发:行呀,那就在字节数据后再加一个校验位。可以作奇校验,偶校验,1校验,0校验,无校验。 经理:嗯 ,很不错。有起始位就应该有停止位,那我们就再加个停止位在后面吧。 研发:。。。。。。。。。 经理:传输一串数据,对方要怎么知道数据的拆分呢,怎么按时间或频率去解读数据位,校验位呢。 研发:这样吧,双方约定一个波特率吧,定义一个每个位占用多长的时间,这样双方按这个波特率就可以处理了。 经理:这个比特率呀。。。 研发:老板,是波特率。 经理:我知道,是比特率嘛。 研发:这个波特率呢,是指1S钟可以传输多个位,也就知道一个位占用多长时间。这样就解决传输的问题了。 经理:那万一传输过程,数据快太,判断失误停不下来怎么办。 研发:那就把停止位可以调节为1个停止位或者2个停止位。这样就可以停下来了。 经理:嗯,听着不错。就这样办吧。
于是,串口通信就这样出来了。 在串口的通信参数上,就有了波特率,数据位,停止位,校验位这几个参数来确保串口通信的正确性和稳定上。当然,这只是某个方面保证串口通信的正确性和稳定性,不代表设备间通信的正确性和稳定性。
|