RS232串口通信的传输格式和接收过程 1、概述 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。并且能够实现远距离通信。本文中采用LOTO的OSC802示波器将对项目中所涉及到的标准232信号进行测量,直观的显示出来。 2、串口通信参数: a)波特率:RS-232-C标准规定的数据传输速率为每秒4800、9600、19200波特等。 下面是我们通过Loto虚拟示波器采集不同波特率的RS232 波形: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.gif b)数据位:标准的值是5、7和8位,如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位);扩展的ASCII码是0~255(8位)。一般情况数据位都取8位。 c)停止位:用于表示单个包的最后一位,典型的值为1,1.5和2位。由于数是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。 d)奇偶校验位:在串口通信中一种简单的检错方式。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。 3、串口通信的传输格式 串行通信中,RS232的逻辑电平状态与TTL电平相反,因此线路空闲时,RS232的电平总是低。一个数据的开始RS232线路为高电平,结束时Rs232为低电平。数据总是从低位向高位一位一位的传输。 例如对于16进制数据55AAH,当采用8位数据位、1位停止位传输时,它在信号线上的波形如图1(RS-232电平)所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg 图1,RS-232电平时序 55H=01010101B,取反后10101010B,加入一个起始位1,一个停止位0,55H的数据格式为1010101010B; AAH=10101010B,取反后01010101B,加入一个起始位1,一个停止位0,AAH的数据格式为1101010100B; 通过Loto虚拟示波器采集的数据与理论数据比较: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.gif4、串口通信的接收过程:RS232是异步通信,因为串口通讯没有时钟线,所以时钟是约定的隐含的,一个”位“就是一个时钟周期。 (1)开始通信时,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始触发接收点内部时钟开始计数。 (2)当计到8个时钟周期时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”,而不是干扰信号。 (3)接收端检测到起始位后,对输入信号检测一次,把对应的值作为D0位数据。 (4)如此循环,直到数据全部接收完毕。 (5)接收到规定的数据位个数,通信接口电路希望收到停止位S。然后将正确的数据格式放入数据输入寄存器。 (6)一帧信息全部接收完后,把线路上出现的高电平作为空闲位。 (7)当信号再次变为低时,开始进入下一帧的检测。 理论时序和示波器测量波形对比如下: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image011.gif
|