之前看到一篇帖子,希望对你有帮助。
通讯问题,和交通是一样的。串口通信类如公交,公交运行可以简单分成两个部分:1、车2、路车,容器,它决定了什么人上,装载量多大,上车规则等,而路可以理解为交通规则,上了什么路就有对应的规则,过桥有过桥的规则,高速有高速的规则,是用来限制车的运动表达,并不改变车本身的基本属性。回到串口通讯,其实,UART就相当于车,而RS232/RS485则对应于路。 UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),既然是“器”,显然,它就是个设备而已,要完成一个特定的功能的硬件,它本身并不是协议。它的最基本功能,是串行数据和并行数据之间的转换。我们知道,计算机中的数据以Byte为基本单位,对一个Byte的存取是并行的,即,同时取得/写入8个bit。而串行通信,需要把这个Byte“打碎”,按照时间顺序来收发以实现串行。例如: 内存中的数据是: 1 1 1 0 0 1 0 1 串行发送的实际效果是(按时间排序【注1】): 1 0 1 0 0 1 1 1 接收则是上述过程的逆过程。 这就是UART做的最基本工作,进一步的,它还要控制“发车的班次”,比如确认一个Byte的这8个bit是什么时候开始的,又是什么时候结束的,两个班次之间至少要隔多长时间的缓冲,等等。这一部分,也具有协议的特征,但是相对于道路上的协议,更具有一般性,或曰,是与车在什么道路上开,相对独立的。 RS232/RS485,是两种不同的电气协议,也就是说,是对电气特性以及物理特性的规定,作用于数据的传输通路上,它并不内含对数据的处理方式。比如,最显著的特征是:RS232使用3-15v有效电平,而UART,因为对电气特性并没有规定,所以直接使用CPU使用的电平,就是所谓的TTL电平(可能在0~3.3V之间)。更具体的,电气的特性也决定了线路的连接方式,比如RS232,规定用电平表示数据,因此线路就是单线路的,用两根线才能达到全双工的目的;而RS485, 使用差分电平表示数据,因此,必须用两根线才能达到传输数据的基本要求,要实现全双工,必需用4根线。但是,无论使用RS232还是RS485,它们与UART是相对独立的,但是由于电气特性的差别,必须要有专用的器件和UART接驳,才能完成数据在线路和UART之间的正常流动。 从某种意义上,可以说,线路上存在的仅仅是电流,RS232/RS485规定了这些电流在什么样的线路上流动和流动的样式;在UART那里,电流才被解释和组装成数据,并变成CPU可直接读写的形式。
在程序上与使用上是一样的。
不同的就是总线上的电平是不同的
串口:就是串行接口,所有数据按照高低位,同一时刻只能发送 1 bit,所以是串行
RS232,RS485,Uart 都是串行接口,串口
RS232 传输电平信号,代表 0 / 1 的高低点平是 +5~+12v,-5~-12v
RS485 串数差分信号,
uart 也是 ttl 电平信号,代表 0 / 1 分别是 0 v 和 ttl 电压