一、串口的定义

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

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

串行收发模块,串口的现实载体,负责实现串行通讯,被集成到各种计算机设备中。其中,应用最广的是 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 通讯过程中
TTL 0 ~ +0.5V +2.4V - +5V 控制器收、发过程中

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

2.2 信号线

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

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


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

序号 名称 符号 数据方向 说明
1 载波检测 DCD DTE → DCE Data Carrier Detect,DTE 接收载波信号后的应答
2 接收数据 RXD DCE → DTE Receive Data,接收信号,即输入数据。通讯设备的 RXD、TXD 应交叉相连
3 发送数据 TXD DTE → DCE Transmit Data,发送信号,即输出数据。通讯设备的 RXD、TXD 应交叉相连
4 数据终端就绪 DTR DTE → DCE Data Terminal Ready,DTE 告知 DCE:本机已准备好
5 信号地 GND - 地线,通讯设备之间必须共地
6 数据设备就绪 DSR DCE → DTE Data Set Ready,DCE 告知 DTE:已准备好发送数据
7 请求发送 RTS DTE → DCE Request To Send,DTE 请求 DCE 发送数据,用于流控
8 允许发送 CTS DCE → DTE Clear To Send,DCE 回应 DTE 的 RTS,用于流控
9 响铃指示 RI DCE → DTE Ring 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。

你真的了解串口 (Serial)吗?相关推荐

  1. 串口Serial连接方式

    串口Serial连接方式 1. 协议终端选择Serial 2. 会话选项,选择"串行" 3. 进入电脑"设备管理器",查看USB Serial Port以及端口 ...

  2. kernel 下串口serial输入输出控制,屏蔽log的输出

    最近工作在调试usb虚拟串口,让其作为kernel启动的调试串口,以及user空间的输入输出控制台. 利用这个机会,学习下printk如何选择往哪个console输出以及user空间下控制台如何选择, ...

  3. Android串口Serial服务解析

    正常Android设备的串口一般是用作debug调试使用,随着Android设备使用越来越广,比如智能pos.智能扫码机都会用到Android主板和单片机进行通信,如果Android主板和单片机通信数 ...

  4. linux串口进控制台加密码,linux 串口serial设置登陆密码

    一. 如果是有这个文件 vi /etc/inittab 打开 修改/etc/inittab文件 把 ::askfirst:-/bin/sh tty2::askfirst:-/bin/sh 等全部注掉 ...

  5. python serial模块

    文章目录 python serial模块 serial模块简介 serial模块使用方法 1. 打开串口,设置相关属性 2. 发送数据 3. 接收数据 python serial模块 serial模块 ...

  6. 串口使用系列学习之什么是串口

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

  7. Python 之 Serial串口通信

    0 Serial方法 1.导入pyserial模块 import serial 2.打开串行口 // 打开串口0, 9600,8N1,连接超时0.5秒 import serial ser=serial ...

  8. arduino判断是否连接串口_Arduino-串口函数Serial

    串口是Arduino与其它设备进行通信的接口,我们需要很好的掌握它的使用.Arduino串口使用相关的函数共有10个(随着版本的升级,新版本加入了更多,具体请参见官网:http://www.ardui ...

  9. Python的串口操作库pyserial

    1. 安装pyserial库 pip install pyserial 2. pyserial库常用函数介绍 serial = serial.Serial('COM1', 115200) 打开COM1 ...

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

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

最新文章

  1. 从头开始学习深度学习之卷积
  2. 习题1.9 有序数组的插入 (20 分)
  3. Python设计模式——观察者模式
  4. [linux] 多进程和多线程
  5. margin塌陷与margin合并、浮动流
  6. dapper mysql帮助类_DapperHelper 帮助类
  7. 不给糖果就捣乱,用Python绘制有趣的万圣节南瓜怪【华为云分享】
  8. day25 java的集合(3)List
  9. Android 系统(207)---如何自学 Android?
  10. 智能一代云平台(三十三):log4j日志研究
  11. android 开启或者隐藏软键盘
  12. MYSQL卸载教程(5.7)
  13. 成功之路散文连载之名师出高徒
  14. 宋体 ttf_.shx和.ttf字体,你真的了解?
  15. kail详细安装教程
  16. 解决Chrome或Microsoft Edge浏览器打开时自动跳转到hao123
  17. 更换一个已到使用寿命的墨盒--Epson
  18. python爬虫小实例
  19. 视觉麦克风:从视频中还原语音
  20. oracle10g无监听配置文件,Oracle 10g学习笔记(七) tnsnames.ora 监听配置文件详解

热门文章

  1. windows 注册表固定桌面壁纸
  2. 永远的java_永远的冒险岛-经典版
  3. 什么是网站的样本设计
  4. html 和 css 代码 总结
  5. 风变编程——自动化技术和教学的完美融合
  6. 错误: 找不到符号 符号: 方法 crossFade() 位置: 类 RequestBuilderDrawable
  7. 通过USB连接线ssh到iOS中
  8. 利用gsm模块自动收发短信
  9. 用 Python 给微信头像加个圣诞老人(平安果)小图标
  10. 异步电路中时钟同步的方法