概念

定义

  • 是一种非常通用设备通信的协议,全称串行通信接口或串行通讯接口(通常指COM接口);
  • 是一种常用于电子设备间通讯的全双工扩展接口,串口按位(bit)发送和接收字节,是采用串行通信方式的扩展接口;
  • 是一种常用于电子设备间通讯的全双工扩展接口。

传输

  串行通信,串口通讯的技术基础,指一位一位地按顺序传送数据。其特点是线路简单,只需一对传输线,即可实现双向通信,大大降低成本。适用于远距离通信,但速度较慢。

USART

  串行收发模块,串口的现实载体,负责实现串行通讯,被集成到各种计算机设备中。其中,应用最广的是 USART(Universal Synchronous/Asynchronous Receiver/Transmitter) —— 通用同/异步串行接收/发送器。
如:RS-232 D型9针连接器

各编号线名称以及相应的说明,如下表所示:

脚位 简写 意义 信号 说明
1 DCD Data Carrier Detect 数据载波检测(DCD) 调制解调器通知电脑有载波被侦测到。
2 RXD Receiver Data 接受数据(RD、RXD) 接收数据。
3 TXD Transmit Data 发送数据(TD、TXD) 发送数据。
4 DTR Data Terminal Ready 数据终端准备(DTR) 电脑告诉调制解调器可以进行传输。
5 GND Ground 公共接地 地线。
6 DSR Data Set Ready 数据准备好(DSR) 调制解调器告诉电脑一切准备就绪。
7 RTS Request To Send 请求发送(RTS) 电脑要求调制解调器将数据提交。
8 CTS Clear To Send 清除发送(CTS) 调制解调器通知电脑可以传数据过来。
9 RI Ring Indicator 振铃指示(RI) 调制解调器通知电脑有电话进来。

接线方式

  RTS/CTS最初是设计为电传打字机和调制解调器半双工协作通信的,每次它只能一方调制解调器发送数据。终端必须发送请求发送信号然后等到调制解调器回应清除发送信号。尽管 RTS /CTS是通过硬件达到握手,但它有自己的优势。

1、RS232的标准连线法

  当 A端的设备准备好后,发出 DTR(数据设备就绪)信号, 传至 B端的 RI(响铃)和 DSR(通讯设备就绪)。 这样,只要 A准备好(DTR),B端就会产生呼叫(RI)并准备好(DSR)。

  注意到 A端的RTS(请求发送)、CTS(允许发送)和 B端的 CD(载波检测)连在一起, 则说明 A一旦请求发送(RTS)将立即得到允许(CTS), 并使 B端检测到载波信号(CD)。 A端的 TXD与 B端的 RXD相连,A发送,B接收。

2、RS232的简化连线法

  原来 RTS和 CTS是用来询问和回答是否可以传输数据。 但在这种连接方式下,就成了纯粹告诉对方自己是否可以进行通讯。 此时 RTS和 DTR都可以用来对数据流进行控制。

  A端的 DTR(数据设备就绪)发出信号, 当 B端准备好后,B端的 DTR(数据设备就绪)向 A端的 DSR(通讯设备就绪)发出信号。 接下来就可以通过 RTS(请求发送)和 DTR(允许发送)来控制通信。

3、进一步简化(也就是以 RTS /CTS为主)

  从上面的流程可以看到,硬件流控制主要是 RTS /CTS和 DTR /DSR来控制,但是,人嘛,能懒就懒,因此现在很多时候都只是用 RTS /CTS告诉对方自己是否可以进行通讯,而直接跳过了 DTR /DSR的就绪状态检测

  在使用 RTS /CTS时,它们都是低电平有效,因此,一般在上位机中一旦打开串口,RTS会拉置高电平,然后等待数据发送,使得低电平有效

软件协议

  在RS-232的通讯中,定义了信号的软件协议标准。双方必须按照约定,以一致的通讯速率、包格式进行交互,否则将会出现数据异常。

1 波特率

  每秒钟传送的码元个数(注意: 不是bit位个数),严格来说,波特率描述的是单位时间内调制(数模转换)信号的能力,而不是传输速率。
拓展:
  码元,是指信息传输通道中,携带数据信息的模拟信号单元。通过不同的调制(数模转换)方式,一个码元符号可能负载多个bit位信息,所以不能说“一个码元等于一个bit”。当采用“两相调制”处理时,比特率等于波特率;
  串口的传输速率,一般由比特率(单位时间内传输的二进制代码的有效位(bit)数) 来进行衡量。

2 起始位与停止位

  每个通讯的串口数据包,都是从起始位开始,结束于停止位。起始位是一个逻辑0的数据位;而停止位可由0.5、1、1.5 或 2 个逻辑1的数据位表示,只要双方约定一致即可。

3 有效数据

  紧跟着起始位之后,便是串口数据包的主体内容,也称为有效数据,有效数据的长度可以是5、6、7、8个数据位,通讯开始前需要双方约定。

4 校验位

  校验位是一个可选的数据位,紧跟在有效数据之后,用来校验,以防止因外部干扰而导致的传输偏差。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)。

  奇校验:令传输的数据(有效数据和校验位)中1的个数为奇数(例如:某个串口数据包中,有效数据共有偶数个位为1,则校验位取“1”,使整体1的个数为奇数)
偶校验:与奇校验相反;
0校验:无论主体数据是什么,校验位保持为0;
1校验:无论主体数据是什么,校验位保持为1。

参考文章:
串口是什么
你真的了解串口 (Serial)吗?
UART串口流控制(Flow control)

串口使用系列学习之什么是串口相关推荐

  1. 投影串口测试程序_【原创】串口通信测试程序

    源代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

  2. linux下串口通信程序,关于Linux下串口通信的一点心得

    1. 打开串口 与其他的关于设备编程的方法一样,在 Linux 下,操作.控制串口也是通过操作起设备文件进行的.在 Linux 下,串口的设备文件是 /dev/ttyS0 或 /dev/ttyS1 等 ...

  3. plc和pc串口通讯接线_Plc与pc串口调试手册

    Plc 与 pc 串口调试手册 硬件连接线 制作串口连接线, plc 管脚 23459 ,不可连接错误! ! pc 管脚 23875 , 串口模块 232 插在 1 号插槽,通信时 sw4 保持 of ...

  4. openmv串口数据 串口助手_Qt小项目之串口助手控制LED

    前言 最近刚学了一点Qt开发上位机,尝试着做个小软件练练手.查找了很多资料,做了一个简单的串口助手,可以实现串口基本发送和接收功能,支持中文显示,还可以控制STM32开发板上的两个LED. 1.软件界 ...

  5. python串口通讯数据过长_Python 串口通讯

    摘要: pyserial module: https://github.com/tbusf/pyserial Python使用pyserial进行串口通信:http://blog.csdn.net/l ...

  6. python树莓派串口通信实例_树莓派通过串口发送数据

    可以通过串口登陆树莓派,也可以通过串口向其他主机发送数据.树莓派的串口接受数据科技爱好者博客已经写过,可以参考这篇文章:树莓派与arduino串口通信实践.这篇文章教大家如果通过树莓派的串口发送数据. ...

  7. python串口数据绘图_使用Python串口实时显示数据并绘图的例子

    使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 "'E:\Anaconda3\Sc ...

  8. c语言单片机串口通讯,单片机C语言之串口通信协议

    串口通信概述 串口通信指串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据. 常用三种串口通信协议 1.RS-232 RS ...

  9. 串口调试精灵的使用和串口程序调试技巧

    串口调试精灵的使用和串口程序调试技巧 时间: 2004-12-09 19:04:49 | [<<] [>>]     51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可 ...

最新文章

  1. 在django中按照时间范围查询数据库
  2. linux安装xz解压xz文件和安装python
  3. sublime运行python代码python没显示_解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享...
  4. Linux基础常用运维操作
  5. iphone已停用解锁大概多少钱_【待办清单工具之三】微软To Do amp; iPhone提醒事项-来自大厂的时间管理系统...
  6. JavaScript基础总结(五)——Math对象
  7. 在输出终端中消除多余空格
  8. 代码画简单动物_[500行代码学懂OpenGL]之六数学知识
  9. jpg图片使用pil的resize后_刚毕业,求解“pdf转换为jpg”的操作教程
  10. 百度地图Map属性和方法
  11. java程序编译后会产生_java程序编译后会产生什么
  12. 【Android 12 AOSP学习】Android 12源码下载编译
  13. 【蓝牙】设备管理器找不到蓝牙
  14. python无限循环怎么停止,如何在Python中安全地停止无限循环?
  15. matlab画热力网格图
  16. 微信订阅消息(后端)教程
  17. 云和大数据,铺就宁夏特色“信息高速路”
  18. Scroll View控制菜单栏的伸缩
  19. UI设计中聊天气泡框的设计技巧
  20. C++面向对象程序设计习题1:分数相加

热门文章

  1. 关于samtools
  2. 【计算机毕业设计】二手车估值与销售网络平台
  3. OAI rfsimulator第一课
  4. 上传文件到GitHub上的两种方法(纯新手可以看看)
  5. 类似爱库存S2B2C的电商源码
  6. Js中NaN不等于NaN
  7. XC7VX690T板卡设计资料:VC709E 基于FMC接口的Virtex7 XC7VX690T PCIeX8 接口卡 软件无线电处理平台 图形图像硬件加速器 Net FPGA
  8. 利用tensorflow的image_retrain实现再训练和分类识别
  9. BERT和ViT简介
  10. Linux 下bin格式软件的安装与卸载