UART和RS232/RS485的关系是什么?
2024-09-01 10:40:58
串口通讯是电子工程师和嵌入式开发工程师面对的最基本问题,RS232则是其中最简单最常用的通讯方式。但是初学者往往搞不清有关的名词如UART和RS232或RS485之间是什么关系,因为它们经常被放到语句中同等的位置使用。在百度搜索二者的区别,可以看到排在最前面的答案充斥着混淆的概念。就此,谈谈我对这几个概念的理解,希望能帮初学者厘清它们之间的关系。~
~
通讯问题,和交通是一样的。串口通信,我们这里可以用公交来类比。
公交运行可以简单分成两个部分:
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甚至规定了接口的具体样式,图为DB9接口~
总结:从某种意义上,可以说,线路上存在的仅仅是电流,RS232/RS485规定了这些电流在什么样的线路上流动和流动的样式;在UART那里,电流才被解释和组装成数据,并变成CPU可直接读写的形式。
最新文章
- 机器学习之sklearn——聚类
- idea maven scala
- java中的 FileWriter类 和 FileReader类的一些基本用法
- IBatis.Net学习笔记五--常用的查询方式
- C#UDP(接收和发送源码)源码完整
- 以前学习cisco ccna 课程的时候做的笔记
- Android开发新手教程--Android应用程序结构
- 从源代码上分析ListView的addHeaderView和setAdapter的调用顺序
- ubuntu16.04 编译运行 LSD-SLAM
- Linux下批量管理工具PSSH
- 网页控制脚本修改系统信息 C语言调用uci
- GDB调试指南-启动调试
- AWS 实战
- easyui中的option设置selected没有效果
- {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm
- Http请求处理流程
- HDU4565(SummerTrainingDay05-C 矩阵快速幂)
- Windows进程间的通信
- Linux:安装mysql
- Android开源之BaseRecyclerViewAdapterHelper(持续更新!)
热门文章
- redis常用操作-键的生存时间
- windows核心编程 第8章201页旋转锁的代码在新版Visual Studio运行问题
- js校验对象是否全部为空
- 【SQL server基础】SQL视图加密,永久隐藏视图定义的文本
- Spring Boot认证:整合Jwt
- selenium实现百度图片爬取
- python基础(十七)
- .Net Core 商城微服务项目系列(一):使用IdentityServer4构建基础登录验证
- 手把手教你如何在window下将jenkins+allure集成生成的测试报告通过jenkins配置邮箱自动发送-04(非常详细,非常实用)
- 网页布局——Flex弹性框布局