STC51入门笔记(郭天祥C语言)---第六节:串行口通信原理及操作流程

STC51⼊门笔记(郭天祥C语⾔)---第六节:串⾏⼝通信原理及操作流程声明:本篇⽂章只是个⼈知识盲区、知识弱点、重点部分的归纳总结,望各位⼤佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。
作者:sumjess
⼀、并⾏与串⾏基本通信⽅式:
随着单⽚机系统的⼴泛应⽤和计算机⽹络技术的普及,单⽚机的通信功能愈来愈显得重要。单⽚机通信是指单⽚机与计算机或单⽚机与单⽚机之间的信息交换,通常单⽚机与计算机之间的通信我们⽤的较多。
通信有并⾏和串⾏两种⽅式。在单⽚机系统以及现代单⽚机测控系统中,信息的交换多采⽤串⾏通信⽅式。
1.并⾏通信⽅式
维果茨基
并⾏通信通常是将数据字节的各位⽤多条数据线同时进⾏传送,每⼀位数据都需要⼀条传输线,如下图所⽰,8位数据总线的通信系统,⼀次传送8位数据(1个字节),将需要8条数据线。此外,还需 要⼀条信号线和若⼲控制信号线,这种⽅式仅适合于短距离的数据传输,如⽐较⽼式的打印机就是通过并⼝⽅
式与计算机连接,现在都⽤传输速度⾮常快的USB
2.0接⼝通信了。由于并⼝通信已经⽤得较少,因此我们在这⾥也仅做简单介绍,⼤家只需了解即可。
并⾏通信控制简单、相对传输速度快,但由于传输线较多,长距离传送时成本⾼且收、 发⽅的各位同时接收存在困难。
2.串⾏通信⽅式
串⾏通信是将数据字节分成⼀位⼀位的形式在⼀条传输线上逐个地传送,此时只需要⼀条数据线,外加⼀条公共信号地线和若⼲控制信号线。因为⼀次只能传送⼀位,所以对于⼀个字节的数据,⾄少要分8位才能传送完毕,如下图所⽰。
串⾏通信的必要过程是:发送时,要把并⾏数据变成串⾏数据发送到线路上去,接收时,要把串⾏信号再变成并⾏数据,这样才能被计算机及其他设备处理。
串⾏通信传输线少,长距离传送时成本低,且可以利⽤电话⽹等现成的设备,但数据的传送控制⽐并⾏通信复杂。
串⾏通信⼜有两种⽅式:异步串⾏通信和同步串⾏通信。
3.异步串⾏通信⽅式
异步串⾏通信是指通信的发送与接收设备使⽤各⾃的时钟控制数据的发送和接收过程。为使双⽅收、发协调,要求发送和接收设备的时钟尽可能⼀致,如下图所⽰。
异步通信是以字符(构成的帧)为单位进⾏传输,字符与字符之间的间隙(时间间隔) 是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不⼀定有“位间隔"的 整数倍关系, 但 同 ⼀字符内的各位之间的距离均为“ 位间隔"的整数倍。
异步通信⼀帧字符信息由 4 部分组成: 起始位、数据位、奇偶校验位和停⽌位,如下图所⽰。有的字符信息也有带空闲位形式, 即在字符之间有空闲字符。
字符之间有空闲字符。
异步通信的特点:不要求收发双⽅时钟的严格⼀致,实现容易,设备开销较⼩,但每个字符要附加2~3位,⽤于起⽌位、校验位和停⽌位,各帧之间还有间隔,因此传输效率不⾼。
在单⽚机与单⽚机之间,单⽚机与计算机之间通信时,通常采⽤异步串⾏通信⽅式。
4.同步串⾏通信⽅式
同步通信时要建⽴发送⽅时钟对接收⽅时钟的直接控制,使双⽅达到完全同步。此时,传输数据的位之间的距离均为"位间隔"的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送⽅对接收⽅的同步可以通过外同步和⾃同步两种⽅法实现,分别如下图左和下图右所⽰。
⾯向字符的同步格式如下图所⽰。
此时,传送的数据和控制信息都必须由规定的字符集(如ASCII码)中的字符所组成。图6.1.7中帧头为1个或2个同步字符SYN(ASCII 码为16H)。SOH为序始字符(ASCII码为OlH),表⽰标题的开始,标题中包含源地址、⽬标地址和路由指⽰等信息。STX为⽂始字符(ASCII 码为02H),表⽰传送的数据块开始。数据块是传送的正⽂内容,由多个字符组成,数据块后⾯是组终字符ETB(ASCII码为17H)或⽂
终字符ETX(ASCII码为03H),然后是校验码,典型的⾯向字符的同步规程如IBM的⼆进制同步规程BSC。
⾯向位的同步格式如下图所⽰。
编程演示
此时,将数据块看做数据流,并⽤序列01111110作为开始和结束标志。为了避免在数据流中出现序列01111110时引起的混乱,发送⽅总是在其发送的数据流中每出现5个连续的1就插⼊⼀个附加的0;接收⽅则每检测到5个连续的1并且其后有⼀个0时,就删除该0。
典型的⾯向位的同步协议如ISO的⾼级数据链路控制规程HDLC和IBM的同步数据链路控制规程SDLC。
⾯向位的同步通信的特点是以特定的位组合01111110作为帧的开始和结束标志,所传输的⼀帧数据可以是任意位。它传输的效率较⾼,但实现的硬件设备⽐异步通信复杂。
5.串⾏通信的制式
黄奇帆背景(1)单⼯。单⼯是指数据传输仅能沿⼀个⽅向,不能实现反向传输。
(2)半双⼯。半双⼯是指数据传输可以沿两个⽅向,但需要分时进⾏。
(3)全双⼯。全双⼯是指数据可以同时进⾏双向传输。三种制式分别如下图左、下图中和下图右所⽰。
6.串⾏通信的错误校验
(1)奇偶校验
在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中1的个数与校验位1的个数之和应为奇数;偶校验时,数据中
在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中1的个数与校验位1的个数之和应为奇数;偶校验时,数据中1的个数与校验位1的个数之和应为偶数。接收字符时,对1的个数进⾏校验,若发现不⼀致,则说明传输数据过程中出现了差错。
意思自治(2)代码和校验
代码和校验是发送⽅将所发数据块求和(或各字节异或),产⽣⼀个字节的校验字符(校验和)附加到数据块末尾。接收⽅接收数据时同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送⽅的“校验和“进⾏⽐较,相符则⽆差错,否则即认为传送过程中出现了差错。
(3)循环冗余校验
这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常⽤于对磁盘信息的传输、存储区的完整性校验等。这种校验⽅法纠错能⼒强,⼴泛应⽤于同步通信中。
⼆、RS-232 电平与TTL 电平的转换:
关于RS-232电平与TTL电平的特性在前⾯已经讲过,本节主要讲解使⽤较多的计算机RS-232电平与单⽚机TTL电平之间的转换⽅式。早期的MC1488, 75188等芯⽚可实现TTL电平到RS-232电平的转换;MC1489, 75189等芯⽚可实现RS-232电平到TTL电平的转换。但是现在⽤的较多的是MAX232, MAX202, HIN232等芯⽚,它们同时集成了RS-232电平和TTL电平之间的互转。为丰富⼤家的知识,下⾯⾸先讲解在没有M⼼(232这种现成电平转换芯⽚时,如何⽤⼆极管、三极管、电阻、电容等分⽴元件搭建⼀个简单的RS-232电平与TTL电平之间的转换电路。
1.分⽴元件实现RS-232电平与TTL电平转换电路(下图)
集成芯⽚内部都是由最基本电⼦元件组成,如电阻、电容、⼆极管、三极管等元件,为了⽅便⽤户使⽤,制造商把这些具有⼀定功能的分⽴元件封装到⼀个芯⽚内,这样就制成了我们使⽤的各种芯⽚。学会本电路后,我们也就基本搞清了MAX232芯⽚内部的⼤致结构。      MAX232是把TTL电平从ov和5V转换到3V -15 V之间。分析图下图,⾸先TTL电平TXD发送数据时,若发送低电平0,这时Q3导通,PCRXD由空闲时的低电平变⾼电平(如PC⽤中断接收的话会产⽣中断),满⾜条件。发送⾼电平1时,TXD为⾼电平,Q3截⽌,由于PCRXD内部⾼阻,⽽PCTXD平时是-3~-15V,通过D1和R7将其拉低PCRXD⾄-3-15V,此时计算机接收到的就是1。下⾯再反过来,PC发送信号,由单⽚机来接收信号。当PCTXD为低电平-3-(-15V)时,Q4截⽌,单⽚机端的RXD被R9拉到5V⾼电平;当PCTXD变
⾼时,Q4导通,RXD被Q4拉到低电平,这样便实现的双向转换,这是⼀个很好的电路,值得⼤家学习。
倾慕技术网qmzyw
2. MAX232芯⽚实现RS-232电平与TTL电平转换
MAX232芯⽚是MAXIM公司⽣产的、包含两路接收器和驱动器的IC芯⽚,它的内部有⼀个电源电压变换器,可以把输⼊的+5V电源电压变换成为RS-232输出电平所需的+10V电压。所以,采⽤此芯⽚接⼝的串⾏通信系统只需单⼀的+5V电源就可以了。对千没有+12V电源的场合,其适应性更强,加之其价格适中,硬件接⼝简单,所以被⼴泛采⽤。
MAX232芯⽚实物如图6.2.2和6.2.3所⽰,其引脚结构和外围连接分别如图6.2.4和图6.2.5
所⽰。
15V或-3V
济南铁路局
图6.2.5中上半部分电容C1,C2,C3,C4及V+,V-是电源变换电路部分。在实际应⽤中,器件对电源噪声
很敏感,因此Vee必须要对地加去耦电容Cs,其值为0.lµF。按芯⽚⼿册中介绍,电容C1,C2,C3,C4应取1.0µF/16V的电解电容,经⼤量实验及实际应⽤,这4个电容都可以选⽤O.lµF的⾮极性瓷⽚电容代替1.0µF/16V的电解电容,在具体设计电路时,这4个电容要尽量靠近MAX232芯⽚,以提⾼抗⼲扰能⼒。
图6.2.5下半部分为发送和接收部分。实际应⽤中,T1IN,T2IN可直接连接TTL/CMOS电平的51单⽚机串⾏发送端
TXD;R10UT,R20UT可直接连接TTL/CMOS电平的51单⽚机的串⾏接收端RXD;T10UT,T20UT可直接连接PC机的RS-232串⼝的接收端RXD;R1IN,R2IN可直接连接PC机的RS-232串⼝的发送端TXD。
现从MAX232芯⽚中两路发送、接收中任选⼀路作为接⼝。要注意其发送、接收的引脚要对应。如使T1IN连接单⽚机的发送端TXD,则PC机的RS-232接收端RXD⼀定要对应接
T10UT引脚。同时,R10UT连接单⽚机的RXD引脚,PC机的RS-232发送端TXD对应接R1 IN引脚。
TX-1C实验板串⼝部分原理图如图6.2.6所⽰,实验板上实物如图6.2.7所⽰。
其数据传输过程如下:MAX232的11脚T1IN接单⽚机TXD端P3.1,TTL电平从单⽚机的TXD端发出,经过M⼼(232转换为RS-232电平后从MAX232的14脚T1OUT发出,再连接到实验板上串⼝座的第3脚,
再经过随板配送的交叉串⼝线后,连接⾄PC机的串⼝座的第
2脚RXD端,⾄此计算机接收到数据。PC机发送数据时从PC机串⼝座第3脚TXD端发出数据,再逆向流向单⽚机的RXD端P3.0接收数据。
这⾥需要注意的是,MAX232与串⼝座连接时,⽆论是数据输出端,还是数据输⼊端,连接串⼝座的第2引脚或第3引脚都可以,选⽤不同的连接⽅法时,单⽚机与计算机之间的串⼝线都要谨慎选择,是
选择平⾏串⼝线还是交叉串⼝线、是选择母头对母头串⼝线还是母头对公头串⼝线这些都要⾮常注意,每种选择都有对应的电路,但⽆论哪种搭配⽅式,⼤家必须要明⽩,在单⽚机与计算机之间必须要有⼀条数
据能互相传输的回路,只要把握好每个交接点就⼀定能通信成功。
三、波特率与定时器初值的关系:
1.波特率
单⽚机或计算机在串⼝通信时的速率⽤波特率表⽰,它定义为每秒传输⼆进制代码的位数,即1波特=1位/秒,单位是bps(位/秒)。如每秒钟传送240个字符,⽽每个字符格式包含10位(1个起始位、1个停⽌位、8个数据位),这时的波特率为10位X240个/秒
=2400bps。
串⾏接⼝或终端直接传送串⾏信息位流的最⼤距离与传输速率及传输线的电⽓特性也有关。当传输线使⽤每0.3m(约1英尺)有50pF电容的⾮平衡屏蔽双绞线时,传输距离随传输速率的增加⽽减⼩。当⽐特率超过1000bps时,最⼤传输距离迅速下降,如9600bps时最⼤距离下降到只有76m(约250英尺)。因此我们在做串⼝通信实验选择较⾼速率传输数据时,尽量缩短数据线的长度,为了能使数据
安全传输,即使是在较低传输速率下也不要使⽤太长的数据线。
2.波特率的计算
在串⾏通信中,收、发双⽅对发送或接收数据的速率要有约定。通过编程可对单⽚机串⾏⼝设定为4种⼯作⽅式,其中⽅式0和⽅式2的波特率是固定的,⽽⽅式1和⽅式3的波特率是可变的,由定时器T1的溢出率来决定。
串⾏⼝的4种⼯作⽅式对应三种波特率。由于输⼊的移位时钟的来源不同,所以各种⽅式的波特率计算公式也不相同,以下是4种⽅式波特率的计算公式。
⽅式0的波特率=fos/12。
⽅式1的波特率=(2^SMOD/32) x(T1溢出率)。
⽅式2的波特率=(2^SMOD/64)Xfoc。
⽅式3的波特率=(2SMOD/32)x(Tl溢出率)。
式中,fosc为系统晶振频率,通常为12MHz或11.0592MHz; SMOD是PCON寄存器的最⾼位(关于PCON寄存器请看下⼀个知识点);T1溢出率即定时器Tl溢出的频率。
知识点:电源管理寄存器PCON

本文发布于:2024-09-22 21:29:07,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/46397.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   字符   发送   接收   电平   传输   传送
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议