当前位置: 首页 > news >正文

rs232接口引脚定义_电子设计 | 串口,UART,RS232之间的区别

922bfb82fbd431c3ebf96b4323711b74.png

串口是我们平时在调试板子和程序时经常使用到的。就像榨菜一样,便宜又百搭。对于新人来说,却也容易因为概念不清晰而犯错。串行通信,UART,RS232这些东西是一会事吗?如果你分不清这些名词,那就值得看一下这篇文章。

01 串行通信

首先看下串行通信是个啥。我们通常说的串行通信其实是一种想法,只是种想法。串行通信的思想是将数字信号通过一根数据线一个Bit一个Bit的发送出去,这种想法是相对于并行通信而存在的。并行通信的应用中通常会有8根16根或32根不等的数据线,一次就可以输出一个Byte或一个Word。既然串行通信只是一个想法,那我们要做些什么事情才能把这个想法变成现实呢?我们可以用两个火把,两种颜色,一个黄的,一个红的。黄的代表数据,亮了是1,灭了是0。那应该在什么时候记录数据呢?红的火把从暗到亮的时候记录数据。这样我们就可以得到一连串的010101111…….了。我们的火把同步串行通信接口(Torch Synchronous Serial Interface,TSSI)就设计完成了。

1998956067bfba93b7c20c79264bb97e.png

02 UART

如果把上面的黄、红火把发出的光换成我们的专业术语,就会是数据信号和时钟信号。而UART(Universal Asynchronous Receiver/Transmitter)就类似那两个产生信号的火把再加上记录数据和举火把的小人, 这是一个看的见摸的着的电路。这个电路里有位移寄存器、波特率发生器、缓存器等。区别于我们的TSSI的是,UART 没有生成时钟信号去同步数据发送端和数据接收端,没有时钟信号线。它只用了一个数据线。当要传输数据的时候Transmitter直接在信号线上来个电平跳变,提醒Receiver数据要来了。Receiver在感知到这个跳变信号后开始采样。工程中用到的采样频率一般是数据发送频率(波特率)的4倍或16倍。Transmitter的数据发送频率就被称之为波特率。因为跳变的电平信号已经起到了一定的让Receiver和Transmitter同步的作用,再加上采样频率高于波特率,Receiver和Transmitter之间就没有必要再多一根时钟信号线了,也就是时钟可以不同步,可以有略微的差别(5%左右)。这就是大名鼎鼎的串行异步通信名字的由来。

03 RS232

有了UART这个东西之后是不是就可以直接在设备之间用了呢?如果是在一块板子上这里没有太大问题。现在大多数芯片的输出电压都是TTL的,所以电平兼容,而且一块板子上干扰又不会太高。但要是用在设备与设备之间通信,那可能就会有问题了。比如说主控电脑和电机驱动器之间。这种情况下TTL的抗噪能力就比较单薄了。比较简单的做法就是增加逻辑1和逻辑0之间的电压差,比如像RS232这种接口中定义的电平格式(逻辑1:-5~-15V,逻辑0:+5~+15V)。还有用差分信号的方式,比如RS485。没错,RS232只是一种接口,定义了接口的外观、各个引脚的功能、信号0和1对应的电压等。所以平时使用UART的时候要注意接口的电压是TTL的还是RS232的。如果两个设备的逻辑电平定义不一样就得加个转换口。类似下图。

544ad0bc9cbec603e2e21295f8d25805.png
图片来自互联网

有了上面介绍的这些东西,我们好像就可以开始设计我们自己的串口通信电路了。什么iUART, UARTplus, USRT等等等,仿佛商机就在眼前。但让人可惜或者高兴的是市场上有太多现成的产品可以用了,像USB, SPI, I2C, CAN等一系列基于串行通信这个想法发展起来的协议,其协议本身和周边配套的硬件和软件驱动都已经很成熟了。所以我们只要了解下不同协议的特性,在不同的应用场景选择相应的产品就可以了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • mysql 列合并_第14期:数据页合并
  • ASP.NET之父Scott Guthrie,1月13日做客微软北京.NET俱乐部
  • mysql 统计_分享一个实用的mysql数据库表概要信息统计sql,值得收藏
  • Compile qt-2.3.10
  • python中readlines()_在Python中,read()或readlines()更快吗?
  • 递归下降分析程序的设计与实现_算法讲解之递归算法
  • zedgraph 两点之间值_高考必刷题3:计算纬线上两点间的距离
  • 大褂还是内裤
  • wpf datagrid 如何获取当前点击行_「Spire.PDF教程」如何复制 PDF 文档
  • 网络术语还在困扰你吗?
  • python做视觉识别机械手_DIY一个基于树莓派和Python的无人机视觉跟踪系统(转)...
  • 网管之路在何方
  • 判断两个list集合里的对象某个属性值是否一样_BAT面试题——22个集合框架(完)...
  • 在Linux上使用Qt编译WebKit
  • python 进度条_Python 如何实时显示进度条?
  • 【css3】浏览器内核及其兼容性
  • 30天自制操作系统-2
  • Android组件 - 收藏集 - 掘金
  • Debian下无root权限使用Python访问Oracle
  • eclipse的离线汉化
  • HashMap ConcurrentHashMap
  • Java读取Properties文件的六种方法
  • Java面向对象及其三大特征
  • ng6--错误信息小结(持续更新)
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Python_OOP
  • unity如何实现一个固定宽度的orthagraphic相机
  • 安装python包到指定虚拟环境
  • 初识 webpack
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 首页查询功能的一次实现过程
  • 数据结构java版之冒泡排序及优化
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​香农与信息论三大定律
  • # Redis 入门到精通(一)数据类型(4)
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • %@ page import=%的用法
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (day18) leetcode 204.计数质数
  • (MATLAB)第五章-矩阵运算
  • (Matlab)使用竞争神经网络实现数据聚类
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转) Android中ViewStub组件使用
  • (转)Linux下编译安装log4cxx