找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2612|回复: 20

串口编程入门

 火... [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:29
  • 打卡月天数:1
  • 打卡总奖励:7791
  • 最近打卡:2025-12-13 17:25:16

2540

主题

1355

回帖

2万

积分

管理员

积分
21304
发表于 2020-2-4 14:50:13 | 显示全部楼层 |阅读模式
嵌入式系统中,诸多设备都可以通过串口来控制,比如WiFi、蓝牙、RFID等等,因此在嵌入式设备中使用串口就显得特别重要。


首先,有几个概念简单澄清一下。

RS232、RS485和TTL指的是电气电平标准。一般而言,TTL使用0V表示低电平,+5V表示高电平。RS232使用负逻辑电平,即+3V ~ +15V表示低电平,-3V ~ -15V表示高电平。RS485和RS232一样都是基于串口的通讯接口,数据收发的操作是一致的,RS485采用差分信号负逻辑,+2V~+6V表示低电平,- 6V~-2V表示高电平。

以上三个协议(RS232、RS485和TTL)是电气特性,规定的是物理层接口要求。物理层标准的建设,就好比各种公路的建设,公路有了我们就可以在上面跑各种汽车,并制定各种汽车的不同行驶规则,这就是通信协议,UART就是其中的一种通信协议,全称是通用异步收发器,规范了在串行通信中,最常见的异步传输的通信模式,下面会有详解。

平常说的串口、COM口指的是物理接口,它们通常有9针和4针两种样式标准。4针串口标准中的四个管脚分别是:VCC、TX、RX和GND,其中TX和RX分别是发送端(Transmit)和接收端(Receive)。一般而言两个串行口互相收发信息的时候,需要让他们的这两个管脚交互相连,即A口的TX接B口的RX,反过来A口的RX接B口的TX。

  

在左边儿的D型9针接口中,一般而言实际用到的也是VCC、TX、RX和GND四个脚。

下面就来具体看看串口是怎么回事。

串口通常指的是串行接口,这跟并行接口相对而言。比如有一个8-bits的数据从A发往B,并行和串行的区别分别如下面所示。


可以看到,串行传输只需要一根线缆就够了,而并行的话需要8根线。他们各自的特点如下:

  • 串行传输线缆少,因此信号衰减较慢,电磁兼容性较好,传输距离较长;并行传输线缆多,因此信号衰减较快,电磁兼容性较差,传输距离短。
  • 串行传输速度乍看起来是并行传输的 1/N ,但实际上由于并行线缆的电磁干扰的物理特性限制,导致并行传输的最高频率(比如几十MHz)要远远低于串行传输的最高频率(高达几十GHz),因此串行传输的速度并不比并行的慢。
  • 串行传输硬件接口简单,占用空间小,成本低;并行传输硬件接口复杂,占用空间大,成本稍高。
  • 串行传输由于线缆少,因此数据的正常传输需要各种特定的算法,软件设计复杂;并行传输每个数据位独立,算法和软件设计相对简单。


简单来看,串行传输比并行传输有更多优势,实际上随着各种设备的主频越来越高,串行通信在现代计算机领域越来越大行其道。

那这一根线的串行通信,究竟是怎么传输数据的呢?主要有下面两种办法。

1,同步传输
所谓同步传输,最核心的地方就是用统一的时钟来控制发送方和接收方,然后规定一个同步起始字符,同时规定传输的每个字符包含的位数(一般是5-8位)就可以了。

由于同步传输必须要求收发双方时钟一致,甚至要求使用严格的同一时钟源,而这在多数场合下都是无法达到的要求,因此虽然同步传输比异步传输速度高,但应用更为广泛的还是异步传输。

2,异步传输
顾名思义,异步传输的本质是不要求收发双方时钟的同步性,这意味着他们可以各自有各自的时钟(始终不需要同步,但频率还得是一样的,不然根本就鸡同鸭讲,即波特率必须得一致),这极大降低了工程实施的复杂性。因此着重要关注的是异步传输。

既然是异步传输,即发送方随时可以发送数据过来,事先是没有跟接收方有过任何协同商量的,那接收方很自然地就会有个疑问:你的数据究竟什么时候过来?一般的做法是这样:规定一个空闲的电位状态(比如高电平),然后规定一个起始位(比如一个低电平时钟间隔),然后接着就是正常的数据位(当然也可以规定长度,比如8-bits),然后是可选的校验位(用来校验数据传输过程中是否受到电磁环境的影响发生数位翻转),然后是停止位(比如一个高电平时钟间隔)。

说那么多,来几张直观的图说明问题吧。下面援引知乎的几幅图,配以实例加以说明。


串口传输的典型例子就是键盘按键,当我们按下 'k' 时,实际上就是传输了该字符的ASCII码值 01101011到了主机。

但在大部分时候,键盘可能根本没有产生任何数据,那我们就要有一个能表达空闲状态的点评,比如这样。

没数据(空闲)时,一直维持在高电平。那好,当我们按下字母 'k' 的时候,我们就立刻发去一个起始位,并紧跟着我们的数据 'k' ,就像这样


主机接受了若干个数据位(跟键盘预先商量好)之后就知道,键盘发送了一个 'k' 过来了。然后是可选的校验位和停止位,然后将线缆电平恢复到空闲状态

这样一来,设备之间就是异步通信的,只要设置好一致的波特率即可,依靠起始位、数据位、校验位、停止位来协调。

以上这样的异步串行通信方式,就是所谓的UART。

工控课堂 www.gkket.com

0

主题

95

回帖

344

积分

注册会员

积分
344
发表于 2020-10-13 20:05:38 | 显示全部楼层
我顶,我顶,我顶顶顶
工控课堂 www.gkket.com

0

主题

104

回帖

152

积分

新手上路

积分
152
发表于 2025-11-12 18:42:32 | 显示全部楼层
蹲一波同款,有没有小伙伴推荐?
工控课堂 www.gkket.com

0

主题

88

回帖

335

积分

注册会员

积分
335
发表于 2025-11-12 18:46:15 | 显示全部楼层
蹲一波同款,有没有姐妹 / 兄弟推荐?
工控课堂 www.gkket.com

0

主题

67

回帖

94

积分

新手上路

积分
94
发表于 2025-11-12 18:52:04 | 显示全部楼层
我先占个楼,等下再慢慢看~
工控课堂 www.gkket.com

0

主题

104

回帖

162

积分

新手上路

积分
162
发表于 2025-11-12 18:58:49 | 显示全部楼层
这波分析到位,逻辑满分!
工控课堂 www.gkket.com

0

主题

79

回帖

113

积分

新手上路

积分
113
发表于 2025-11-12 18:59:05 | 显示全部楼层
水个经验,楼主加油,支持你~
工控课堂 www.gkket.com

0

主题

100

回帖

152

积分

新手上路

积分
152
发表于 2025-11-12 19:00:25 | 显示全部楼层
来凑个热闹,为楼主增加点人气!
工控课堂 www.gkket.com

0

主题

93

回帖

145

积分

新手上路

积分
145
发表于 2025-11-12 19:04:30 | 显示全部楼层
楼主辛苦啦,期待下一篇分享!
工控课堂 www.gkket.com

0

主题

83

回帖

133

积分

新手上路

积分
133
发表于 2025-11-12 19:05:28 | 显示全部楼层
理性围观,感觉大家说的都有道理~
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 07:25 , Processed in 0.157492 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表