串口通讯之我见

一. 串口初识

平时较为常见的9针串口。也是我这次编程中所使用的硬件,其引脚的定义如下:

  Pin Name Dir Description

  1 CD Carrier Detect

  2 RXD Receive Data

  3 TXD Transmit Data

  4 DTR Data Terminal Ready

  5 GND System Ground

  6 DSR Data Set Ready

  7 RTS Request to Send

  8 CTS Clear to Send

  9 RI Ring Indicator

在一般的通讯条件下,我们只需要用到串口的三个引脚,分别为2.RXD, 3.TXD, 5.GND.

在计算机与计算机的通讯中,一般的所采取的联线方式为:RXD-TXD TXD-RXD GND-GND

那么看到这幅图我们就有了一个直观的概念,两台计算机通过将对应的串口中相应的引脚相连使得计算机在硬件上能够进行通讯。(这点不难吧,直观点说计算机A把想发的讯息交给TXD口使得讯息得以发送,计算机B通过读取RXD上的讯息得到相应的讯息)。

可是这只是一个直观的感觉有些地方还是有问题。比如说到底是什么样的讯息计算机才能识别?形象点的比喻就是当你用四川话和美国佬交流的时候你期望他能听懂多少?他只会说一句“I don’t speak Chinese”.

上面的问题说的技术点就是协议的问题,那么我们来看看串口通信相关的协议。串口通信的方式可以分为同步串口通信和异步串口通信。同步串口通信由于我的实验没有涉及所以在这里也就不再提及,主要还是说说异步串口通信。

所谓异步的串口通信就是将8位的bit一位一位的发出去,发送是以字节为单位的。这样的话就很自然会引入几个相关概念

1.       波特率:

8位数据以多少的速度发送?就必须以多少的速度接收,否则就会出错。这个在串口通信中有专有的名词叫作波特率。单位为比特/秒。也就是一秒中所发送的比特数。

2.       起始位

(串口RXDTXD的空闲电平为高)这个比较有意思。想像一种情况,当没有起始位时,当我要发送1111111,和我什么都不做时,接收端的计算机都是一直收到的是高电平。当然它也就无法判断这个时候是有数据来了还是这个时候处于空闲状态。所以在异步通信中采用一个低电平作为起始位为,告诉接收机数据要来了,做好准备接收。

3.       停止位

当然你告诉接收机什么时候开始接收数据,你也得告诉它什么时候数据结束。所以在八位数据的后面1位或者是1.5, 2位用高电平表示停止位。

4.       奇偶校验位

数据可能会出错,这个时候用奇偶校验位来检验数据的正确性。若不对,就将数据丢弃。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值