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

【嵌入式】常用串口协议与转换芯片详解

文章目录

  • 0 前言
  • 1 一个通信的协议的组成
  • 2 常用协议名词解释
    • 2.1 UART
    • 2.2 RS-232
    • 2.3 RS-485
    • 2.4 RS-422
  • 3 常用的芯片
    • 3.1 MAX232
    • 3.2 CP2102
    • 3.3 CH340
    • 3.4 FT232

0 前言

  最近有点想研究USB协议,正好也看到有评论说对如何选择USB转串口模块有些疑惑,其实我也一直很想写一篇关于串口的总结式的文章,借此契机来完善一下。

1 一个通信的协议的组成

  所谓通信协议,顾名思义,其本质就是一个协议,即一个约定,大家约定好通信的一些标准,这样大家就能根据这个标准来设计并生产产品,而避免了A产品不兼容B这样的情况发生。
  那不妨先想一下,一个通信协议需要规定哪些内容呢?
  一般来说,主要包括三个方面:

  • 物理属性  主要是约定插头或接口的外在特性。包括这个插头长啥样(物理形状),有几个引脚(引脚定义)等等。
  • 逻辑属性  逻辑属性主要是约定这个协议传输数据时的时序。因为在实际传输数据过程中,并不是直接把需要传输的数据依次传输的,这样接收端就不知道从哪里开始接收,数据传输就会错乱,因此往往是把数据切分为小块然后加上一些固定的字符,组成“一帧”,再传输,同样接收端也按照约定好的帧格式来进行解析。这样数据传输才能有序进行。
  • 电气属性  在常见的串行数据传输协议中,都是传输数字信号,即用0 和 1来表示需要传输的数据,因此就需要明确多少电压代表0,多少电压代表1。

以下的内容也将按照上述思路来进行展开。

最后,再简单解释一些基本名词的概念:

  • 单工:指信息传输是单向的,只能由A到B,不能B到A
  • 双工:信息传输是双向的,A B之间可以交互信息
  • 半双工:首先信息传输是双向的,但不能同时进行,即要么A给B传,要么B给A传,二者不能同时进行。
  • 全双工:不仅信息传输是双向的,还可以同时进行。

2 常用协议名词解释

2.1 UART

  对于玩单片机的同学来说,UART可能是接触的最早的串行通信协议了,基本每个单片机都有TXD,RXD两个引脚,此即所谓的Universal Asynchronous Receiver/Transmitter,异步串行通信。

  • 物理属性:接口方面一般没什么要求,可以根据自己的需求自定义,但一般来说是三根线:RXD,TXD,GND,有时会加上电源信号VCC。
  • 逻辑属性:即数据传输时的时序,这个可能是我们最关注的信息了。也是代码编写的主要内容体现:设置波特率、设置几位数据位,是否有奇偶校验等,即所谓的配置串口。
  • 电气属性:采用正逻辑电平,即5V/3.3V为1;0V为0。这即是所谓的TTL电平,所以一般来说,单片机串口也叫TTL

    实际上现在大多数单片机使用的都是CMOS电路,电平容限比TTL要大一些,但由于TTL出现较早,目前仍然把这种电平称为TTL电平。

总结
  UART没有规定接口的具体样式,只是规定了引脚,所以在实际使用中比较灵活。但是引脚的电平要注意和单片机的电源保持一致,要注意区分3.3V和5V。UART是单片机中的基础外设,一般称之为串口,通过USB转TTL模块可以实现单片机与上位机之间的通讯。

2.2 RS-232

  RS-232其实是出现比较早且应用较为广泛的标准。由美国电子工业协会(Electronic Industries Association,EIA)联合多家公司于1970年制定,目前最新的标准是RS232C(前面是A和B)。所谓RS,即Recommended Standard,推荐标准,232为代号。

  • 物理属性:RS232规定了25根线,但其实常用的只有9根线(另外16根线包括:①9根线电流环信号,目前很少设备使用这些引脚;②6个空引脚;③一个保护地信号),这也是为什么目前很多RS232的接口都是DB9,而很少见到DB25的插头。DB9插头如下图所示。
    在这里插入图片描述
    形状和VGA接口很像,但只有9个针脚。这9个针脚定义如下所示
简写符DTE25芯(公)DCE25芯(母)DTE9芯(公)DCE9芯(母)信号功能解释
TXD2332发送数据 Transmit Data
RXD3223接收数据 Receive Data
GND7755信号地 Ground
RTS4578请求发送 Require to Send
CTS5487清除请求 Clear to Send
DSR62064数据装置就绪 Data Set Ready
DCD8811接收线信号检测 Data Carry Detected
DTR20646数据终端准备好 Data Terminal Ready
RI222299振铃指示

其中,前面三根线为必须的线,后面6根线其实都是流控信号,在实际使用时其实不一定会使用。

  • 逻辑属性:值得一提的是,RS232的时序其实和上面提到的UART是一样的,也需要设置波特率、数据位、校验位、停止位等。但是需要注意的是,RS232波特率设置一般不超过19200,因为RS232传输的上限为20kbps。
  • 电气属性:RS-232采用负逻辑电平,逻辑1:-15V ~ -3V 逻辑0:+3V ~ +15V

总结
  RS-232是一种全双工通信方式,时序和UART相同,只是电气属性存在差异。此外,它只能实现单点通信,且最大通信速率为20kbps,最大通信距离为15m。

2.3 RS-485

  RS-485相比于RS-232最大的特点就是传输距离更远,信号更加稳定,因为它的基于差分信号进行传输的,传输时,只看两个引脚之间的电压之差,从而来判断是逻辑0还是逻辑1.
  RS-485相比于RS-232协议,通信距离更远,可以达到4000英尺(约1219米),最高传输速率可以达到10Mbps(40英寸内,约12.2米)

2.4 RS-422

  • 物理属性
  • 逻辑属性
  • 电气属性

总结
  

3 常用的芯片

  由于目前很多电脑都不再配备老式的RS-232和RS-485等串口,主要以USB为主流,所以为了实现设备与普通计算机之间的通讯,往往需要使用一些转换成USB协议的芯片,这里主要列举一些并阐述其作用。

3.1 MAX232

3.2 CP2102

3.3 CH340

3.4 FT232

http://www.lryc.cn/news/185351.html

相关文章:

  • 缓存与数据库双写一致性问题解决方案
  • Java中的transient关键字是什么意思?
  • 内存溢出和内存泄漏
  • Java数组:没错,不装了我就是书架。
  • 轻量级接口自动化测试框架
  • .some方法、vh、多列布局、DNS域名解析过程、空页面文字内容渲染
  • Eclipse iceoryx™ - 真正的零拷贝进程间通信
  • 【C++】面向对象编程(二)面向对象的编程思维:virtual虚拟调用、继承、protected成员、派生类与基类
  • 【古谷彻】算法模板(更新ing···)
  • Day-06 基于 Docker 安装 Nginx 镜像
  • k8s集群-7 service
  • JS进阶-防抖和节流
  • 踩坑日记 uniapp 底部 tabber遮挡住购物车结算
  • 【MySQL】表的约束(一)
  • Excel宏管理库存清单
  • C语言练习百题之排序算法
  • 通过ElementUi在Vue搭建的项目中实现CRUD
  • 【CSS如何进行圣杯布局】
  • flex 实现的圣杯布局
  • 数字人直播软件排名推荐,铭顺科技数字人品牌抢占“日不落”流量新技能
  • 【AI视野·今日Robot 机器人论文速览 第四十五期】Mon, 2 Oct 2023
  • 【计算机网络】网络编程接口 Socket API 解读(9)
  • 用户端App自动化测试
  • [洛谷]P2697 宝石串(经典好题!)
  • 毫米波汽车雷达测试应用指南
  • 抖音账号矩阵系统开发源码----技术研发
  • C++ 33.学习C++的意义-狄泰软件学院
  • [C++基础]-多态
  • 【Kubernetes】当K8s出现问题时,我们可以从哪些方面排查出
  • SentenceTransformer 之论文解读