串行口通信
一、并行与串行通信
1、并行通信
将数据每一字节的各位用多条数据线同时进行传送。每个字节8位,由8条数据线同时传送一位,同一时间总共传送1个字节。除了8条数据线外,还有一条信号线和若干控制线。
由于发送设备和接收设备之间需要的接线较多,采用长途信号传送使得成本激增,所以并行通信一般用于短途通信。
2、串行通信
将数据的一个字节分成8位,一位一位的在一条传输线上传送,数据线只需要一条即可,此外还需一条公共信号地线和若干控制信号线。由于只需要一条数据线,在长途通信中成本不会很高,并且可以利用电话网等现有的设备。
3、并行通信和串行通信优缺点
1)并行通信
优点:控制简单,相对传输速度快
缺点:长距离传输时成本高,一个字节的8位同时发送和接收存在困难,较串行通信抗干扰能力弱
2)串行通信
优点:传输线少,长距离传输成本低,可利用现有设备进行传输,较并行通信抗干扰能力强
缺点:控制比较复杂,较并行通信控制更复杂
4、异步串行通信、同步串行通信
1)异步串行通信
通信的接收方、发送方使用各自的时钟控制数据的接收和发送。(为使双方收发协调,要求发送和接收设备的时钟尽可能一致)
2)异步串行通信的俩个指标——字符帧格式、波特率
异步串行通信中数据通常以字符或者字节为单位组成字符帧传送。字符帧在发送设备逐帧发送,接收设备逐帧接收。发送端和接收端由各自的时钟控制,俩个时钟互不影响、彼此独立。
字符与字符之间的间隔是任意的。任一字符内部的每一位之间的间隔是固定的。
波特率之后着重讲解
3)异步串行通信的常用总线类型
①RS-232
通常 RS-232 接口以9个引脚(DB-9) 或是25个引脚 (DB-25) 的型态出现
S232接口电平值较高,其任何一条信号线的电压均为负逻辑关系。即:逻辑“1”为-3V ~ -15V;逻辑“0”为+3V ~ +15V
RS232与TTL电平不兼容,故需要使用电平转换器才能让RS232与TTL电路连接。如MAX232把TTL电平从0V和5V转换到3V~15V或-3V ~ -15V
RS232传输距离较短,若距离过长,会导致信号失真、抗干扰能力较差。
②RS-485
在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。
RS-485采用半双工工作方式,所以收、发双方不能同时进行收和发,同一时间只有一方在发送、另一方在接收。
USB转RS485:
③USB(通用串行总线)
4)异步串行通信的特点
不要求收发双方时钟严格一致,实现容易,设备开销小,但每个字符需要附加2~3位用于起始位、校验位、停止位,各帧之间还有间隔,因此传输效率不高。
单片机与单片机、单片机与计算机之间的通信,都为异步串行通信方式
5)同步串行通信
要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间距”的整数倍,同时传送的字符间不留间隙即保持字符同步关系。
同步分为外同步和自同步。
外同步:
自同步:
6)串行通信的奇偶校验
发送数据时,在数据位后面尾随的一位是奇偶校验位。
奇校验时,数据中的1的个数+奇偶校验位中1的个数=奇数,若不为奇数,说明数据传输中出现错误。
偶校验时,数据中的1的个数+奇偶校验位中1的个数=偶数,若不为偶数,说明数据传输中出现错误
还想进一步了解的朋友可以去参考《通信原理》的【差错控制编码】——>【奇偶监督码】和【二维奇偶监督码】
二、MAX232实现RS232电平与TTL电平转换(板子嵌用)
中文参考手册:
单片机原理图:
图一可知:T1in与T2in为TTL电平输入,T1out、T2out为RS232输出。R1in与R2in为RS232电平输入,R1out与R2out为TTL电平输出。
所以MAX232可以将TTL电平转为RS232电平,也可以将RS232电平转为TTL电平
图二可知,单片机芯片P30接单片机R1out,为MAX232芯片的TTL电平输出引脚,单片机P31接T1in,为MAX芯片的TTL电平输入引脚。
信号流程:
单片机通过P31引脚发送信号,到MAX232的T1in引脚,经过转为,变为RS232电平,传输到其他设备,完成信号传送。
其他设备传送的信号,送入MAX232,进过转换,从R1out输出TTL电平,进入单片机P30引脚,单片机接收到其他设备的信号。
所以单片机P30是信号接收引脚,P31是信号发送引脚。
打开8051芯片,发现P30的确是接收引脚,P31的确是发送引脚。
再看MAX232的单片机原理图(上图二):
注:J1是焊接在板子上的接口,我的板子是公口,外插母口进行信号传送
J1的2引脚接R1in,为RS232电平的输入引脚,所以外接的母口的对应2引脚为其他设备的信号输出端。(指另一端设备备接口转换器的输出端)
J1的3引脚接T1out,为RS232电平的输出,所以J1的3引脚接外接母口的对应3引脚,接其他设备的输人端。(指另一端设备备接口转换器的输入端)
总结:
.
发送:单片机P31引脚——>MAX232的T1in引脚——>经转换在MAX232的T1out引脚输出——>J1公口的3引脚——>外插母口的3引脚——>其他设备的接口转换器输入端(若接口也为MAX232,则接R1in或R2in)
接收:其他设备的接口转换器输出端(若接口也为MAX232,则为T1out或T2out)——>外接母口引脚2——>本单片机J1的2引脚——>MAX232的R1in——>经转换后MAX232的R1out输出——>单片机P30引脚
三、波特率与定时器初值
之前总结异步串行通信的俩个指标——字符帧格式与波特率时,未对波特率进行总结,现总结波特率以及与定时器初值的关系
1、波特率
单片机或计算机在串口通信时的速率用波特率表示,它表示每秒传输二进制代码的位数,即1波特=X位/秒,单位是bps(位/秒)。如当异步串行传输包含1个起始位、1个停止位、8位数据位,每秒传输200个字符,则此时的波特率为10×200=2000bps。
《通信原理》中将传信率(又称比特率)Rb,表示传输的信息速率,单位是比特/秒,b/s或bps。传码率RB表示码元传输速率&