
关于串口通信的一些基本概念和术语,让我们先来了解一下。如果你对串口通信已经比较熟悉,那么这部分内容可以作为复习,如果有什么讲解不到位的地方,欢迎及时指出。
这里不打算详细讲解串口的编程,主要从应用角度谈谈。很多时候,产品已经做好,比如触摸屏需要与控制器、PLC进行通信。理想情况下,通常一上电,不需要太多的操作和配置,就可以开始通信。
文章的后半部分罗列了一些相关问题,在解答之前,我们先来了解一下什么是串口通信、232、485、422等概念。
串口通信通常指的是异步串行通信。那么,与串行通信相对的就是并行通信。数据传输一般以字节为单位,一个字节由8个位组成。并行通信指的是有8根线,每一根线代表一个位,一次传输可以传一个字节。而串口通信则只能通过一根线传输,一次只能传一个位,要传一个字节需要传8次。
与异步通信相对的是同步通信。同步通信有一个时钟信号进行数据信号同步。对于接收方来说,每个高低电平的变化就意味着一个数据的获取。通信速率可以由发送方即主站设备进行控制,通信速度相对串口通信要快很多。但在很多设备如屏、PLC、控制器上,为什么都选择使用串口通信呢?
这是因为,在很多设备上,接太多的线不方便,比如接8根数据线,同步时钟信号也不好处理(这个我们后面再讲)。异步串行通信只需要一根线就可以发送数据,这在速率要求不高的情况下,带来了极大的方便和实用价值。
那么问题就来了,怎样能保证一根线就能正常发送数据呢?也就是说,发送方发送的数据,接收方怎样知道是什么数据呢?
为了正常发送和接收数据,异步串口通信需要满足以下几个条件:双方需要约定一种“暗号”。比如经理和研发小组进行如下讨论:
经理:我要用一根线就能传输数据,你给我定个标准吧。研发:好的。经理:只有一根线,我怎样知道数据什么时候开始呢?研发:那就设置一个起始位吧。当检测到低电平的时候,就表示开始传输一个字节的数据了。起始位之后,先是字节的最低位,然后传送一个字节。经理:可是,一根线传来的数据会不会有干扰,容易出错呀?研发:那可以在字节数据后加一个校验位。可以有奇校验、偶校验、1校验、0校验或无校验。经理:嗯,很不错。有起始位就应该有停止位,那我们再加一个停止位吧。研发:…………经理:传输一串数据,对方怎样知道数据的拆分呢?怎样按时间或频率解读数据位、校验位呢?研发:双方约定一个波特率吧,定义一个每位占用多长时间,这样双方按这个波特率就可以处理了。经理:这个比特率……研发:老板,是波特率。经理:我知道是波特率的意思。研发:这个波特率是指每秒可以传输多个位,也就知道一个位占用多长时间。这样就解决了传输的问题了。经理:那万一传输过程数据太快停不下来怎么办?研发:可以把停止位设置为一个或两个停止位这样就可以停下来了。经理:嗯听起来不错就这样办吧。于是串口通信的标准就这样确定了。
