前言
本篇文章主要介绍一下在学习电子知识时常见的通信方式:串口。从最初开始学习单片机就了解到串口:C51单片机中含有一个串口功能,可以完成和上位机的通信,使用相应的串口调试助手就可以。随着对串口接触的越来越多,相关的知识也越来越多,这篇文章主要目的就是总结一下与串口相关的知识。
一、串口是什么?
串口指串行接口(Serial interface)也就是数据一位一位的按顺序来传输。将数据按照高低位按顺序来进行传输,这样会导致速度变慢,但大大的节省了成本。随着电子技术的发展,串口越来越多的融入到各个方面,相关技术也越发成熟。同样想要在同一根线上完成传输和接收是一样的数据,各方面的指标要保证一样,例如波特率。也就是传输的速率,还有就是起始位,数据位以及校验位等等,这些确定了,发送端与接收端也就统一了标准。也就是说双方打电话,说的是一种语言,我知道你,你了解我。
二、并口是什么?
介绍完串口就可以更好理解并口是什么了。如果说串口就像只有一个跑道给你送数据,那么并口就是有多个同时给送数据。在时钟线的同一个时刻,多个数据线给到相应的数据,从而组成一组完整的数据。听起来有一种事半功倍的效果,但现如今并口的技术正在被淘汰,一方是由于并口的成本较大,另一方面,这其中要使的多位数据线在同一时刻同时到达,这使得时钟的速率受到限制。无法做到更高的提速,想要获得非常快的速度,硬件的成本将大大提升。
三、各接口的划分?
下面就要介绍本篇文章的重点了:
1.UART
异步串行接收/发送器UART(Universal Asynchronous Receiver/Transmitter)和他相似的还有一个叫同步/异步串行接收发送器USART(Universal Synchronous/Asynchronous Receiver/Transmitter)最初学习单片机的时候接触到的就是这两者。这两者的区别看名字也就能看出来。UART增加了一个支持同步的功能也就变成了USART。所以这里就主要介绍一下UART。 由于UART的成本较低,性能稳定。所以被广泛的使用在各式各样的场景中,很多它的原理主要是实现串并转换和并串转换。既然UART用于异步通信,那么也应该有相关的通信协议。 1.空闲位:位于逻辑“1”状态,表示当前线路上没有数据传送。 2.起始位:一个时钟的逻辑“0”状态,表示数据传输的开始。 3.数据位:随后跟着时钟信号来发送数据位,常见的就是8位数据。顺位先低后高。 4.奇偶校验位:该位的功能为校验位,如果一组给定数据位中 1 的个数是奇数,那么偶校验位就置为 1,从而使得总的 1 的个数是偶数;如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为 1,使得总的 1 的个数是奇数。 如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,校验位在数据位后面,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是“0”,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时,将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传送错误。详情点击这里:奇偶校验位 5.停止位:表示一组数据传输已经完成。这里可以给到1,1.5,2个高电平都可以,这时候串口的传输也可以趁这个时间来调整时钟信号,保证下一次的传输性能。 波特率:表示秒钟传输的字符数。也就是一秒钟可以传输多少个“0”或者“1”。这可以说是串口的传输的一个非常非常关键的参数,传输的速率和接收的速率要保持一样才可以完成一次准确无误的通讯。
2.USB
下面介绍USB这个在日常生活经常出现的名词,我刚刚接触USB的时候就已经是USB2.0了,到现在的USB3.0,4.0,不得不说USB的相关技术发展还是非常快的。最开始接触USB接口的时候就是给手机充电,大头那端就是USB接口: 有关USB的技术介绍真的多到不行,这里也就不一一讲解。现如今USB已经成为了PC端与外设通信的接口,每一台PC都会带上USB的接口。他的优点这里也不意义赘述了,想了解的可以点击:USB
3.各式各样电气接口标准
串口的通信协议上面已经介绍过了,但一般的串口并不能满足人们各种各样的要求,为此也是绞尽脑汁有设计了各种各样的电气标准,通过这样的方法来达到一些强大的功能。 这里有关一个电气标准什么是电气标准那?在通信协议中,有提到逻辑“0”和逻辑“1”。这两者是怎么定义的,在每一个电气标准中又都不一样。下面介绍了常见的几种:
1.RS232(全双工)
第一个就是非常常见的232接口,他的电气标准是:逻辑“1”的电平为-5V~-15 V,逻辑“0”的电平为+5 V~+15 V。选用该电气标准的目的在于提高抗干扰能力,增大通信距离。 PS:RS -232的噪声容限为2V,接收器将能识别高至+3V的信号作为逻辑“0”,将低到-3 V的信号作为逻辑“1”。 下面是一个常见的RS232,DB9的接头; 通常使用的也就是四根线:VCC,TXD,RXD,GND; 传送速率:50b/s、75b/s、110b/s、150b/s、300b/s、600b/s、1200b/s、2400b/s、4800b/s、9600b/s、19200b/s,可以灵活地适应不同速率的设备。对于慢速外设,可以选择较低的传送速率:反之,可以选择较高的传送速率。 传输距离:一般情况下30米,
2.RS485(半双工)
第二个是RS485,采用了差分传输方式,这样能够有效减少噪声的干扰。他的电气标准:“1”的电平在+2V~+6V之间,逻辑“0”的电平在-2V~-6V之间。可以看到这样的电气标准相较于RS232减少了很多,不容易烧毁后续接口芯片,同时这样的电气标准与TTL兼容,可方便与TTL 电路连接。由于接口采用了差分输入,很大程度上增加了抗干扰的性能。 通常使用的接头也是DB9,使用的引脚主要是GND,A,B; 传输速率:最高为10Mbps。 传输距离:理论:3000米。实际验证:1200米。
3.RS422(全双工)
第三种就是RS422,他的电气标准和RS485一样:“1”的电平在+2V~+6V之间,逻辑“0”的电平在-2V~-6V之间。同样也是差分输入,那和RS485的区别是什么那?显而易见,就是全双工,支持收发同时。 可以说485有的优点他都有,同样也有代价就是多出了一对差分线。 传输速率:100kb/s~10Mb/s 传输距离:最大为1219米。 PS:这里要提一下传输距离和传输速率成反比,越长速度就只能越慢,越短自然速度就可以越快。通常情况下:一般100米长的双绞线上所能获得的最大传输速率仅为 1Mb/s。
4.TTL(全双工)
第四种就是最开始接触的TTL,最开始接触单片机的时候,接触的就是TTL。TTL晶体管逻辑电路的电平,就是其实TTL电平也是一种电气标准,TTL电平信号规定,+5V等价于逻辑“1”,0V等价于逻辑“0”(采用二进制来表示数据时)。输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是 0.4V。一般来讲, 我学习的过程中,微控制器主要就是单片机与FPGA,输出的逻辑1和0就是指TTL的高低电平。 所以最开始调试单片机中的串口时,使用到的就是CH340芯片做的一个USB转TTL,在配合上PC中的串口调试助手,这样就是可以实现数据的通信。 PC端使用的USB接口,PC使用的是USB的电平逻辑,但是单片机的串口用到了VCC,TXD,TRD,GND四个引脚,使用了TTL逻辑电平的规则。那么中间的CH340作用就是将USB的电平逻辑转换成相应的TTL电平逻辑,这样PC才可以和单片机进行顺利的通讯。
四、总结
总结来看,串口包含很大一类,是一个很大的概念,在使用过程中也是因设计而异。写这篇文章的主要原因是因为这个阶段要使用FPGA来调试RS422的串口,也就是通过RS422串口来完成与FPGA的通信,从前文的总结来看,RS422的电气标准并不符合FPGA的电气标准,所以去买了个RS422转TTL的模块,本来是想用RS422转3.3VTTL的模块,但是实验室有个现成的,也不知道是5V的还是3.3V的使用情况还可以。那么硬件的连接方式就变成了这样。 这样就形成了PC与FPGA的通信回路,在FPGA的设计要解决一个串口的设计,读取与发送。PC端还是使用 串口调试助手来完成发送和接收。所以实质上要完成的软件设计还是理解串口的传输通信协议,其中设计到电平标准变换的处理就交给现成的模块就好。这也是这次项目再一次带给我有关于串口的理解,还是有很多的疑点,希望下一次在接触到能够再重新的认识串口这一个概念,能对他有更深的理解。
|