你真的了解串口 (Serial)吗?

2023-05-16

一、串口的定义

串口,全称串行通信接口或串行通讯接口,是一种常用于电子设备间通讯的全双工扩展接口;

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

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

二、串口的硬件特性

串口的硬件特性,规定了数据通讯时的机械、电子特性,以确保数据在物理媒介上的传输。

由于串口的硬件特性有很多标准及变种,限于篇幅,本文只记录最常见的 RS-232 标准

RS-232串口设备,通讯结构如下:

在这里插入图片描述
① 通讯设备的“DB9 接口”,由串口线连接,按 RS-232 约定的格式,进行数据传输;
② 由于 RS-232 电平标准的信号不能直接被控制器识别,所以会先经过“电平转换芯片”,转换成“TTL 标准”,才能实现通讯。单片机开发、调试中常用到的“串口转USB模块”,实现的就是这类电平标准转换的作用。

在这里插入图片描述

2.1 电平标准

由上,RS-232串口设备中,存在两种电平标准 —— RS-232标准、TTL标准。具体细节如下:

电平标准逻辑 0 电平逻辑 1 电平生效阶段
RS-232+3V ~ +15V-15V ~ -3V通讯过程中
TTL0 ~ +0.5V+2.4V - +5V控制器收、发过程中

可见,RS-232标准的各逻辑对应电平,相对TTL标准都要大得多,这是为了增强串口通讯的远距离传输及抗干扰能力。

2.2 信号线

一般来说,进行信号传输的设备,分为数据终端设备 DTE(计算机、路由)和数据通讯设备 DCE(调制调解器)。

旧式的RS-232串口线,以针式引出信号线的称为公头,以孔式引出信号线的称为母头。两者均由九根信号线组成,如下图:

在这里插入图片描述
各编号线名称以及相应的说明,如下表所示:

序号名称符号数据方向说明
1载波检测DCDDTE → DCEData Carrier Detect,DTE 接收载波信号后的应答
2接收数据RXDDCE → DTEReceive Data,接收信号,即输入数据。通讯设备的 RXD、TXD 应交叉相连
3发送数据TXDDTE → DCETransmit Data,发送信号,即输出数据。通讯设备的 RXD、TXD 应交叉相连
4数据终端就绪DTRDTE → DCEData Terminal Ready,DTE 告知 DCE:本机已准备好
5信号地GND-地线,通讯设备之间必须共地
6数据设备就绪DSRDCE → DTEData Set Ready,DCE 告知 DTE:已准备好发送数据
7请求发送RTSDTE → DCERequest To Send,DTE 请求 DCE 发送数据,用于流控
8允许发送CTSDCE → DTEClear To Send,DCE 回应 DTE 的 RTS,用于流控
9响铃指示RIDCE → DTERing Indicator,响铃指示,表示 DCE 端与线路已接通

其中,RTS、CTS、DSR、DTR 及 DCD 信号,使用逻辑 1 表示有效,逻辑 0 为信号无效。(例如,当计算机端控制 DTR 信号线表示为逻辑 1 时,它是为了告知远端的调制调解器,本机已准备好接收数据, 0 则表示还没准备就绪。)

在目前的其它工业控制使用的串口通讯中,一般只使用 RXD、TXD 以及 GND 三根信号线,直接传输数据信号,而 RTS、CTS、DSR、DTR 及 DCD,都被裁剪掉了。

三、串口的软件协议

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

在这里插入图片描述

3.1 波特率

每秒钟传送的码元个数(注意: 不是bit位个数),严格来说,波特率描述的是单位时间内调制(数模转换)信号的能力,而不是传输速率。

拓展:

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

3.2 起始位与停止位

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

3.3 有效数据

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

3.4 校验位

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

  1. 奇校验:令传输的数据(有效数据和校验位)中1的个数为奇数(例如:某个串口数据包中,有效数据共有偶数个位为1,则校验位取“1”,使整体1的个数为奇数);
  2. 偶校验:与奇校验相反;
  3. 0校验:无论主体数据是什么,校验位保持为0;
  4. 1校验:无论主体数据是什么,校验位保持为1。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你真的了解串口 (Serial)吗? 的相关文章

  • Visual Studio 2019 Serial Keys

    Visual Studio span class hljs number 2019 span Enterprise BF8Y8 GN2QH T84XB QVY3B RC4DF Visual Studio span class hljs nu
  • SAS (Serial Attached SCSI) 技术详解

    xff08 一 xff09 什么是SAS SAS xff08 Serial Attached SCSI xff09 即串行SCSI技术 xff0c 是一种磁盘连接技术 xff0c 它综合了并行SCSI和串行连接技术 xff08 如FC SS
  • 解决Android 11 获取不到Serial number方法

    由于从Android10开始采用沙盒存储模式以及权限策略的更新 xff0c 导致适配的过程中获取不到种种的问题 由此分析下获取不到序列号的方法思路 xff1a 一 R的适配 1 从8 0开始获取SN的方法就是如下代码 xff1a if Bu
  • serial也是见到很多次了,似乎它就是一种串行通信协议

    最开始是树莓派上想用串口通信似乎就是用的ROS还是python的serial库 xff0c 当时也不知道这个词是什么意思 xff0c 以为就是个名字 对 xff0c ros里面有个serial包 树莓派用python串口通信也是用的seri
  • 编写ros串口节点,使用官方serial包

    转载自 xff1a https www cnblogs com TooyLee p 6104863 html 编写ros串口节点 xff0c 使用官方serial包 参考http www roswiki com read php tid 6
  • 树莓派通过串口接发数据(serial版)

    这次我要通过树莓派3B的串口和电脑互相发送数据 xff0c 但是树莓派只有一个实实在在能用的串口ttyAMA0 xff0c 另外一个还是迷你的串口 xff0c 无法正常使用 那这样我们就要利用到我的前一篇文章 xff0c 既然串口要被使用
  • 通讯协议(modbus协议和serial读取数据)

    通讯协议 1 调试助手1 1 crc计算助手1 2 串口调试助手 2 使用serial节点读取数据3 modbus协议3 1 报文3 2 功能号3 2 1主机对从机写数据操作3 2 2主机对从机读数据操作 3 3 MODBUS报文模型 4
  • CentOS安装lsusb查看设备串号Serial----本人备注

    原文地址 https blog csdn net a19891024 article details 75499142 本人备注 报定位不到安装包就 apt get update 一下 xff01 xff01 xff01 安装lsusb e
  • Python 之 Serial串口通信

    0 Serial方法 1 导入pyserial模块 import serial 2 打开串行口 打开串口0 xff0c 9600 xff0c 8N1 xff0c 连接超时0 5秒 import serial ser 61 serial Se
  • SAS (Serial Attached SCSI) 技术详解

    xff08 一 xff09 什么是SAS SAS xff08 Serial Attached SCSI xff09 即串行SCSI技术 xff0c 是一种磁盘连接技术 xff0c 它综合了并行SCSI和串行连接技术 xff08 如FC SS
  • python 安装serial模块

    想用Python来实现对串口的控制 xff0c 写好了脚本 xff0c 现在将这个脚本拿到另外一个电脑上去运行 xff1b 运行时提示错误 xff0c 说是没有安装serial模块 xff0c 于是乎安装 pip install seria
  • 问题解决:import serial提示 ImportError: No module named serial

    问题 xff1a 在Ubuntu系统中运行python脚本 xff0c 出现如下提示说明pythoh的serial模块没有安装 ImportError No module named serial 解决 网上大部分的解决方法都是安装pyse
  • ubuntu系统(三):c++ serial使用与学习

    0 前言 目前讲解单一知识点 xff0c 觉得最好的就时c 43 43 官方 xff08 官方网站 xff09 给的说明 xff0c 链接如下 xff1a serial 1 1 0 http wjwwood io serial doc 1
  • 串口Serial连接方式

    串口Serial连接方式 1 协议终端选择Serial 2 会话选项 xff0c 选择 串行 3 进入电脑 设备管理器 xff0c 查看USB Serial Port以及端口设置 串行选项根据端口设置配置 确定并连接即可
  • 你真的了解串口 (Serial)吗?

    一 串口的定义 串口 xff0c 全称串行通信接口或串行通讯接口 xff0c 是一种常用于电子设备间通讯的全双工扩展接口 xff1b 串行通信 xff0c 串口通讯的技术基础 xff0c 指一位一位地按顺序传送数据 其特点是线路简单 xff
  • Virtual Serial Port Driver 虚拟串口工具软件 使用介绍

    一般来说 xff0c 电脑的外部设备可以用过各种端口和电脑连接 常见的有USB xff0c VGA xff0c DVI等等 在工业领域或者是软件开发领域 xff0c 我们常常需要用简单低成本快捷的方式 xff0c 完成电脑和设备的连接 那么
  • python使用serial模块,通过串口控制云台(基于PELCO-D协议)

    一 需求描述 通过python实现对云台的控制 xff0c 使用到的相关模块 xff1a 1 pyserial xff0c 串口模块 xff0c 用于连接串口 xff0c 并通过串口发送指令 2 bytes xff0c 内置模块 xff0c
  • ESP32 for arduino 的3个hardware serial

    在arduino IDE的开发环境中 xff0c 如果使用的开发板不是arduino的开发平台 xff0c 而是ESP32模组的开发板 xff0c 那么在实际开发中由于ESP32的支持库与arduino不同 xff0c 会使得我们在使用一些
  • Arduino修改Serial接收缓冲区大小

    看到网上有资料说 xff0c 直接添加以下宏定义就可以了 xff1a span class token macro property span class token directive keyword define span SERIAL
  • JVM系列(九) 垃圾收集器之 Serial / Serial Old

    回收期演变及概览 前面我们讲了很多 垃圾收集的原理和知识点 下面我们针对各种垃圾收集器进行JVM调优 JVM调优其实都是根据对应的垃圾收集器特性而去做调整和优化 不同垃圾收集器的产生总体可以划分为几个阶段 第一阶段 单线程收集时代 Seri

随机推荐

  • PSINS源码阅读—STIM300/GNSS组合导航

    文章目录 前言代码解读主要框架代码阅读主要脚本sinsgps函数 结果测试 前言 严老师最近在PSINS网站上上传了一组STIM300 GNSS跑车数据 xff0c 并且有光纤惯导数据作为真值参考 xff0c 网站是一组STIM300 GN
  • mpu6500-gnss组合导航代码分析

    文章目录 前言代码分析调参P矩阵陀螺仪偏置P矩阵加速度计偏置P矩阵 前言 导航数据为如下链接 xff0c 数据集使用了低成本Mems器件MPU6500和GNSS做组合导航 代码运行需要严老师psins210406组合导航函数库的支持 xff
  • Java中数组元素的删除

    这是一个LeetCode的简单题 xff0c 在二刷做过的题时突然感觉这个题真的是非常的不错 xff0c 虽然是个简单题 xff0c 没有什么技巧 xff0c 但是写代码的过程中有很多要注意的点 xff0c 感觉还是很考验基本功 xff0c
  • 【视觉里程计】对极几何,三角测量,PnP,ICP原理

    老早就想写些东西 xff0c 但是介于个人懒惰 xff0c 一直没开这个头 xff0c 前几天才发现自己以前学的东西很容易忘记 xff0c 于是决定还是将学习做个总结 xff0c 以便后续回头查看 xff0c 温故而知新嘛 此文章为对相关知
  • Java泛型--泛型应用--泛型接口、泛型方法、泛型数组、泛型嵌套

    1 泛型接口 1 1泛型接口的基本概念 1 2泛型接口实现的两种方式 定义子类 xff1a 在子类的定义上也声明泛型类型 interface Info lt T gt 在接口上定义泛型 public T getVar 定义抽象方法 xff0
  • Linux下调试段错误的方法[Segmentation Fault]--GDB

    原文 1 段错误是什么 xff1f 段错误是指访问的内存超出了系统给这个程序所设定的内存空间 xff0c 例如访问了不存在的内存地址 访问了系统保护的内存地址 访问了只读的内存地址等等情况 A segmentation fault ofte
  • linux驱动开发--copy_to_user 、copy_from_user函数实现内核空间数据与用户空间数据的相互访问

    设备读操作 如果该操作为空 xff0c 将使得read系统调用返回负EINVAL失败 xff0c 正常返回实际读取的字节数 ssize t read struct file filp char user buf size t count l
  • 函数中的形式参数和实际参数

    1 举例 xff1a 使用函数交换两个整形变量的值 运行结果 xff1a 分析 xff1a c语言中实际参数和形式参数之间采用值传递的方式来传递数据 在被调函数中 xff0c 使用的是实际参数的一个拷贝数据 我们在swap函数中交换了a和b
  • Linux 线程挂起与唤醒功能 实例

    pthread cond wait 多线程的条件变量 条件变量是利用线程间共享的 全局变量进行同步的一种机制 xff0c 主要包括两个动作 xff1a 一个线程等待 34 条件变量的条件成立 34 而挂起 xff1b 另一个线程使 34 条
  • PnP 单目相机位姿估计(二):solvePnP利用二维码求解相机世界坐标

    前言原理简介输入参数准备 1 objectPoints特征点世界坐标2 imagePoints特征点在摄像头下的像素点坐标3cameraMatrixdistCoeffs内参矩阵和畸变矩阵 相机世界坐标的求解 1求世界坐标中的点在相机坐标系下
  • Linux下socket编程,附带tcp例子

    1 网络中进程之间如何通信 xff1f 本地的进程间通信 xff08 IPC xff09 有很多种方式 xff0c 但可以总结为下面4类 xff1a 消息传递 xff08 管道 FIFO 消息队列 xff09 同步 xff08 互斥量 条件
  • 程序员加班到深夜,你经历过没?

    我看到了自己的影子啊 虽然自己非科班出身 xff0c 学历也不高吧 xff0c 但是自认为还是很努力的 xff0c 但是为什么现在的工资水平却跟应届生差不多呢 xff1f xff08 xff09 仔细想想 xff0c 自己毕业3年了 xff
  • 【C/C++学院】(16)QT版:幸运大抽奖

    程序效果 xff1a ifndef DIALOG H define DIALOG H include lt QDialog gt include lt QLabel gt include lt QPushButton gt include
  • 【Python基础】--Pickle/函数默认参数/函数的参数*args/Bytes<=>str/32-64bit/bytes对象

    Pickle gt gt gt import pickle gt gt gt my list 61 1 2 3 39 haha 39 39 and 39 39 or 39 gt gt gt pickle file 61 open 39 my
  • Windows平台python操作串口示例,可以加工下,改写成方便的测试软件

    在 windows中 xff0c 使用 Python 进行串口编程需要安装一个 Serial 模块 pyserial xff1a 下载地址 https pypi python org pypi pyserial下载完成后得到一个 pyser
  • 告别csdn一年了

    原本坚持了4年的学习 xff0c 整理笔记 xff0c 在csdn平台上进行发表 xff0c 记录 同朋友们互动 xff0c 探讨进行学习 xff0c 自己也在不断地成长 今天再次进入博客页面 xff0c 发现界面来了个大改版 xff0c
  • php视频课程

    php视频课程 xff1a 下载地址 xff1a http php itcast cn php video shtml 注 xff1a 此系列视频 xff0c 韩顺平主讲 1 php入门到精通教程 2 第二版mysql视频教程 进行中 3
  • pixhawk ulg转csv

    ulg是目前最新版px4固件生成的log格式 xff0c 下载最新版的flightplot即可对内部数据进行预览分析 xff0c flightplot中支持部分函数和运算符操作 xff0c 但对带 数据的操作不支持 xff0c 如需要对某些
  • 将Kinetic中的Gazebo7升级为Gazebo9

    将Kinetic中的Gazebo7升级为Gazebo9 一 查看所有gazebo7的相关包二 卸载当前已安装的gazebo相关包三 添加源四 安装新版本gazebo五 安装gazebo ros pkgs六 后记 官方教程 http gaze
  • 你真的了解串口 (Serial)吗?

    一 串口的定义 串口 xff0c 全称串行通信接口或串行通讯接口 xff0c 是一种常用于电子设备间通讯的全双工扩展接口 xff1b 串行通信 xff0c 串口通讯的技术基础 xff0c 指一位一位地按顺序传送数据 其特点是线路简单 xff