串口通信模块1:串口基础知识

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shenziheng1/article/details/52673554

串行接口可以将接受来自CPU的并行数据字符,转换为连续的串行数据流发送出去。同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,称为串行接口电路。常用的RS-232 (ANSI-EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时,也可以连接工业仪器仪表。

1.串口简介

RS-232-C也称标准串口,是目前最常用的一种串行通信接口,我们项目中也采用了这一种接口。传统的RS-232-C接口标准有25根信号线,采用标准25芯D型插头座。后来,PC上使用了简化了的9芯D型插座。硬件表现为计算机后面的9针D型接口,由于其形状和针脚数量的原因,其接头又被称为DB9接头。RS-232针脚定义如下表所示:

RS-232针脚定义
针脚编号 功能 说明
1 CD( Carrier Detect ) 载波检测
2 RXD(  Received 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/3/5这三个引脚。因为只需要这三个引脚便可完成基本的通信功能。

2.串口通信简介

所谓的串口通信也非常容易理解,即串口按位(bit)发送和接受字节。虽然比按字节(byte)的秉性通信速度慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信的实现很简单,而且能够实现远距离通信。比如IEEE488定义并行通信状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口通信而言,长度可以达到1200米。
一般情况下,串口用于ASCII码字符的传输。通信使用3根线完成:第5针脚的地线,第3针脚发送,第2针脚接受。由于串口通信是异步的,端口能够在一根线上发送数据同时再领一根线上接收数据。其他针脚的线主要用于握手,可以不是必须的!串口通信有4个重要的参数,分别是波特率、数据位、停止位和奇偶检验位。对于两个进行通信的端口,这些参数必须匹配,否则通信将无法正常完成。下面主要讨论一下这些参数的含义以及相应的设置方法。
波特率
这是一个衡量通信速度的参数。他表示每秒钟传送的bit的个数。例如,300波特表示每秒钟发送300个bit。当我们提到时钟周期时就是指波特率。例如,如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400、28800、36600.波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,碱性的例子就是GPIB设备的通信。
数据位
这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于想要传送的信息。比如,标准的ASCII码是0~127(7位)。拓展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶检验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
停止位
用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输同时也越慢。
奇偶检验位
是在串口通信中一种简单的检错方式。其实共包含了4中检错方式,分别是偶、积、高、低。当然没有检验位也是可以的。对于奇偶校验的情况,串口会设置校验位(数据位后面一位),用一个值确保传输的数据有偶数个或者奇数个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是积校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正地检查数据,仅简单置位逻辑高或逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否同步。

有点公事需要处理,今天先到这里,明天继续讨论串口通信编程基础。
展开阅读全文

没有更多推荐了,返回首页