首页 > 其他分享 >Uart_串口通信原理

Uart_串口通信原理

时间:2023-08-05 16:38:29浏览次数:33  
标签:校验位 高电平 Uart 通信 校验 串口 设备

什么是UART?Universal Asynchronous Receiver/Transmitter 翻译为:通用异步收发(协议),它实现了将并行信号转换为串行信号。UART协议最典型的实现就是我们常说的串口。

串口

什么是串口?串口是一种串行的数据传输方式,他是UART协议的一种实现。

串行与并行

所谓串行,与并行对比形成一组概念,以车道来形容,有八辆车:

  • 并行就是单向八车道,八辆车同时通过该路段;

    image-20230805152909080

  • 串行就是单向单车道,八辆车需要一次排队通行。

    image-20230805153520573

串口通信原理

设备之间的连接

串口通信通过两根信号线TX和RX完成,两个设备之前还需要共地,所以可以说串口通过三根线进行通信。串口通信没有主从设备之分,两个设备都可以进行发送和接收。

  • TX:发送数据
  • RX:接收数据
  • GND:串口通信一定要保证两设备共地。

image-20230805154201765

为什么要保证两设备共地?串口发送数据是通过在信号线上拉高拉低电平实现的。如果两台设备不共地的话,假设A设备发送一个高电平逻辑“1”,但是B设备此时电势比较高,就有可能不认为信号线上此时是一个高电平,导致数据出错。因此,两设备共地,是两设备电势相同,就能保证设备对高低电平的判断。

image-20230805155144760

如图所示,对A设备来说,发出一个高电平,对于没有共地的B设备来说,就不一定时高电平了哦。

信号协议

空闲位的概念:

UART协议规定,当总线处于空闲状态时(没有进行数据传输),需要将信号线置为高电平,以此来表示当前线路没有数据传输。

起始位: 在空闲位的基础上,将信号线拉低一下,也就是发送一个低电平,表示开始传输数据。

数据位: 起始位之后的电平变化就表示本次传输的信息的数据。一般我们设置为8位,也可以5、6、7、9位等。

奇偶校验位: 有时候为了保证数据完整性,我们会传一个奇偶校验位。数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。校验位其实是调整个数,串口校验分几种方式:

  1. 无校验(no parity)
  2. 奇校验(odd parity):如果数据位中“1”的数目是偶数,则校验位为“1”,如果“1”的数目是奇数,校验位为“0”;
  3. 偶校验(even parity):如果数据为中“1”的数目是偶数,则校验位为“0”,如果为奇数,校验位为“1”;
  4. mark parity:校验位始终为1(不常用);
  5. parity:校验位始终为0(不常用)。

停止位: 数据结束标志,可以是1位,1.5位,2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备之间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟的机会。停止位个数越多,数据传输越稳定,但是数据传输速度也越慢。

传输方向:即数据是从高位(MSB)开始传输还是从低位(LSB)开始传输。

image-20230805161053512

波特率

波特率是指每秒钟传送的符号(码元)数量,也就是每秒调制状态(码元)变化的次数,等于系统的采样率,每个调制状态对应一个所谓的符号(码元)。 波特率是串口通信的一种参数,用来表示串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制位。(看最后面这一位就好了)

我们常用的波特率有:9600、19200、38400、115200等

小结

串口的整个通信原理其实是比较简单的,到这里也就大概知道串口到底是怎样发送数据的了。后面将继续研究串口的底层驱动框架。串口的驱动框架可以说是这些通信协议里面最复杂的了吧,加油!

标签:校验位,高电平,Uart,通信,校验,串口,设备
From: https://www.cnblogs.com/klelee/p/uart_00.html

相关文章

  • msm8909_wk2124_SPI转串口485
    项目使用的是高通的msm8909平台,采用广和通SC806开发板,开发环境采用Ubuntu18.04。SC806默认有两路串口,对项目来说不够使用,需要进行转接,所以采用了wk2124将一路SPI转换为4路串口,然后再加485芯片,转换为4路485接口。接下来详细看看整个配置过程。概述说明:本文档会将为开提供的官方文......
  • vue--day54--todolist 中的MyItem 和App 消息发布实现通信
    1.App.vue<template><divid="root"><divclass="todo-container"><divclass="todo-wrap"><!--@addTodo事件名addTodo回调名--><MyHeader@addTodo="addTodo"/><!--父亲给儿子传数据父亲通过数据绑定......
  • 水下机器人线上赛战火升级,目标检测、通信赛项等你来战
    权威目标检测、水声通信赛事火热报名中,更有35万奖金和自然科学基金委认证证书等你来拿!2021年全国水下机器人大赛-线上赛战火升级啦!新上线水下光学目标检测产业应用、水下声学通信应用产业两大算法赛项,为对计算机视觉、通信领域感兴趣的选手提供优质的学习交流平台,同时两赛项增设嵌......
  • 三菱 网络模块 MC协议 通信配置
    三菱 plc mc 协议 QJ71E71-100  百度一下 三菱mc协议配置,再参考一下  ......
  • 政务通信标准化!统一通信-睿鸿COMM1.0正式上线
    统一通信-睿鸿COMM1.0近日正式发布上线,兼具安全性与标准化,它将政府级客户所有通信需求化繁为简,通过深度整合、灵活通信,实现更高效的政务服务运作。政务通信标准化!统一通信-睿鸿COMM1.0正式上线统一通信-睿鸿COMM1.0简介统一通信-睿鸿COMM1.0是将底层的通信资源、应用场景通用能力进......
  • 记录一下【docker compose发布】 docker容器间通信
    踩坑:在网上找的帖子说是在dockercompose文件中的network下添加 1:直接报错, 2:然后又去查找说要在compose文件底部,和service同级添加network的声明,添加后还是不能通信,然后使用命令dockernetworkls查看发现新增了两个网络sub_test,pub_test 3:重新查找,使用已有网络需......
  • Mitsubishi 三菱FXPLC学习之通信指令(上)
    通信指令本身不难,难的是对通信的理解。在学习PLC通信指令之前,我曾尝试去看通信相关的课程,然后告诉自己:算了,不必勉强自己,学不会的始终学不会。 数据的传输方式有并行和串行两种,其中并行是指同一时刻可以传输多个bit位的信号,有多少个信号位就需要多少根信号线;而串是指同一......
  • Mitsubishi 三菱FXPLC学习之通信指令(下)
    继上篇文章所分享的RS数据传送指令和CCD校验码指令,这次我们接着分享同样受数据处理模式标志继电器M8161控制的ASCI指令和HEX指令。ASCI指令和HEX指令是一对互逆的指令,基于十六进制字符与ASCII码之间的转换。ASCII码,我在之前的文章就有简单的介绍过,在这里再简单提一下。......
  • Mitsubishi 三菱FX3U的232通信板,与PC串口调试助手通信测试
    在某个项目中,需要用到上位机来控制PLC中的气缸,采用的通信方式是无协议通信,硬件使用FX3U的PLC以及一块FX3U-232C-BD扩展板。具体测试如下所示。01使用硬件 如图所示: 02测试软件03具体步骤1、编写PLC控制程序,如图所示:程序解释:D8120是通信格式设置地址,设置成H0C81(二进制......
  • 父子间组件通信
    1、父传子(定义:父传子使用的是props)①首先确定父组件和子组件,然后在父组件中引入子组件,注册并使用;父组件代码如下:<template><div><h1>父组件</h1><!--使用子组件--><ChildView></ChildView></div></template><script>//引入子组件imp......