UART 波形

2023-05-16

先介绍一些概念。

起始位:先发出一个逻辑”0”的信号,表示传输数据的开始。

校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。就比如传输“A”(01000001)为例。 (字符‘A’的二进制是 0100 0001)

当为奇数校验:”A”字符的8个bit位中有两个1,那么奇偶校验位为1才能满足1的个数为奇数(奇校验)。
当为偶数校验:”A”字符的8个bit位中有两个1,那么奇偶校验位为0才能满足1的个数为偶数(偶校验)。 
此位还可以去除,即不需要奇偶校验位。 
停止位:它是一帧数据的结束标志。可以是1bit、1.5bit、2bit的空闲电平。可能大家会觉得很奇怪,怎么会有1.5位~没错,确实有的。所以我在生产此uart信号时用两个波形点来表示一个bit。这个可以不必深究。。。 


空闲位:没有数据传输时线路上的电平状态。为逻辑1。 
传输方向:即数据是从高位(MSB)开始传输还是从低位(LSB)开始传输。比如传输“A”(字符‘A’的二进制是 0100 0001)

如果是MSB那么就是0100 0001(如图-2),如果是LSB那么就是10000010


uart传输数据的顺序就是:刚开始传输一个起始位——传输数据位——校验位(可不需要此位)——停止位。

这样一帧的数据就传输完了。接下来接着像这样一直传送。在这里还要说一个参数。 
帧间隔:即传送数据的帧与帧之间的间隔大小,可以以位为计量也可以用时间(知道波特率那么位数和时间可以换算)。比如传送”A”完后,这为一帧数据,再传”B”,那么A与B之间的间隔即为帧间

实验:

用串口工具发送0XD6,即二级制 1101 0110 ,在示波器上如此显示。

串口设置:波特率9600,停止位1位,无奇偶校验位。

在示波器上,最左边一个低电平表示0,起始位;然后依次是0110 1011,正好和发送的数据最高位和最低位反过来。如下图。

这就是所谓的LSB.

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

再来个例子:用串口发送0x75,就是二进制 0111 0101,如下图所示。

串口设置:波特率9600,停止位1位,无奇偶校验位。

同理,最左侧的为起始位,低电平0, 然后LSB传输。 1010 1110依次传输到示波器。

第三个例子:用串口发送0x75,就是二进制 0111 0101,

串口设置:波特率9600,停止位1位,奇校验。

奇校验就是要保证这一帧里的所有BIT 有1的数为奇数,0x75已经有5个1了,所以奇偶校验位为0即可。如下图所示。

同理,如果为偶校验,那么最后一位应该是高电平1,就会有6个1,以此保证所有的1的数量为偶数。

后,连发发送两个16进制数据0x75(0111 0101) 0x6B (0110 1011) 低位在前,高位在后

串口设置:波特率9600,停止位1位,无奇偶校验位。

 绿色代表起始位,橙色代表停止位,绿色和橙色中间的是8个数据位,也就是一个字节。所以8N1格式传输一个字节需要发送10bit。
要根据波形读字节的时候,首先找到停止位和起始位,在停止位和起始位的中间就是一个字节。串口收发一般都是LSB即低位优先,所以起始位后第一个bit传输的是该字节的最低位。比如传输字符’A’,也即0x41,二进制为0100 0001,起始位后第一位传输的是1,然后是0,依次是0,0,0,0,1,0,从起始位开始读就是10000010,把数据转换为高位在前,就是01000001,也即0100 0001,转换为十六进制是0x41,对应ASKII码就是字符’A’。
所以要从波形读出一个字节,就两步:先找到该字节起始位和停止位,然后从停止位向着起始位,一位一位的读出数据换成十六进制或ASKII码即可。



原文链接:https://blog.csdn.net/a371132/article/details/90727740

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UART 波形 的相关文章

  • 串口通讯UART/RS232/RS485/RS-422笔记

    串口通讯详解笔记 串口通讯概述串口通讯传输数据帧的结构UARTRS232RS485RS 422RS 232 RS 422和RS 485的主要区别 xff08 重要 xff09 串口通讯概述 串口通讯是指数据按位 xff08 bit xff0
  • 串口、UART、USART、COM、USB、TTL、RS232、RS485、RS422简介

    串口 COM口 USB口是指的物理接口形式 xff08 硬件 xff09 xff1b TTL RS 232 RS 485 USB电平是指的电平标准 xff08 电信号 xff09 串口 UART口 USART口 COM口 USB口 xff0
  • FPGA学习-UART串口发送单字节(UART时序分析+真正的FPGA设计看图写代码)

    首先看UART发送时序图 xff1a 要发送一个完整字节 xff0c 需要 1位起始位 43 8位数据位 43 1位停止位 xff0c 图上的第11位 xff0c 是确认一个字节发送完的一位 重点是每一位之间的发送时间需要保持一致 xff0
  • 串口UART

    目录 串口概念 串口rs232 数据格式 注意事项 总体结构图 代码verilog 接收模块 结构图 波形图 编辑 代码 verilog 发送模块 结构图 波形图 代码 verilog 串口rs485 串口概念 串口是异步 串行通信接口 x
  • 25.UART串口发送过程与配置

    UART串口收发过程与配置 参考资料 STM32Fx中文参考手册 第26章 xff1a 通用同步异步收发器章节 开发板配套教程 STM32Fx开发指南 串口实验章节 笔记基于正点原子官方视频 视频连接https www bilibili c
  • 05-STM32F1 - 串行通信1-UART(3),printf,scanf重定向

    05 STM32F1 串行通信UART xff0c printf xff0c scanf重定向 在C 语言标准库中 xff0c fputc 函数是printf 函数内部的一个函数 xff0c 功能是将字符ch 写入到文件指针file所指向文
  • UART串口通信

    目录 一 通信特点二 通信应用三 接线示意图三 UART通信协议四 STM32F4 串口使用1 资源分布2 特性3 UART框图4 使用方法5 相关库函数6 函数实例 五 实战 上位机控制开发板小灯 一 通信特点 异步 串行 全双工 一般描
  • 串口通信协议 UART+I2C+SPI

    UART 异步 串行 全双工 I2C SPI 不同通信协议比较 UART UART协议详解 UART通信 xff0c 接收与发送 xff08 详细版 xff0c 附代码 xff09 UART串行通信详解 待整理 UART是Universal
  • UART,SPI,IIC,RS232通信时序和规则

    一 UART 1 串口通信方式 2 串口通信步骤 注意 xff1a 串口协议规定 xff0c 闲置时必须是高电平 校验位 xff1a 是使用奇偶校验 停止位必须高电平 一个0和多个0区分是靠掐时间 异步通信 xff1a 时钟各不一样 二 I
  • 4.RTT-UART-中断接收及轮询发送

    本期博客开始分享RTT的UART xff0c 利用战舰V3的uart2来输入输出一些字符串 UART xff08 Universal Asynchronous Receiver Transmitter xff09 通用异步收发传输器 xff
  • MCU-串口通信协议

    MCU 串口通信协议 一 介绍 串行通信就像单车道 所有数据得一个一个通行 并行就像多车道 一次可以通行多辆车 MCU常用到的串口通信模块主要有两种 UART和USART UART 全称是Universal Asynchronous Rec
  • 【UART】Verilog实现UART接收和发送模块

    目录 写在前面 UART 工作原理 UART 接收部分 UART RX 模块图 UART RX 时序图 Verilog 实现 UART RX 模块 UART 发送部分 UART TX 模块图 UART TX 时序图 Verilog 实现 U
  • MicroPython串口数据转换技巧

    技巧一 还原从串口接收的HEX字符串 首先上官方文档 确认接收数据类型为bytes 串口读来的bytes类型HEX数据转换成HEX类型字符串转换函数 ByteToHex的转换 返回数据16进制字符串 def ByteToHex bins r
  • ESP32-C3入门教程 基础篇(三、UART模块 — 与Enocean无线模块串口通信)

    测试第三课 ESP32 C3的串口通信测试 老样子 使用Enocean无线模块和ESP32 C3进行串口通信 目录 前言 1 UART示例测试 1 1 UART 基础测试 1 2 与Enocean无线模块串口通信测试 2 ESP32 C3
  • Verilog功能模块——Uart收发

    摘要 本文分享了一种通用的Uart收发模块 可实现Uart协议所支持的任意波特率 任意位宽数据 5 8 任意校验位 无校验 奇校验 偶校验 1校验 0校验 任意停止位 1 1 5 2 的数据传输 此模块需要搭配FIFO使用 以消除发送端和接
  • STM32CubeMX HAL库串口+DMA+IDLE空闲中断不定长度数据接收和发送

    本文开发环境 MCU型号 STM32F103ZET6 IDE环境 MDK 5 29 代码生成工具 STM32CubeMx 5 3 0 HAL库版本 STM32Cube FW F1 V1 8 0 STM32Cube MCU Package f
  • Android Things:连接到串行调试控制台

    我一直在尝试连接到串行控制台树莓派 3 with 安卓事物 using USB to TTL cable从我的Linux Ubuntu 机器 尽管我按照文档连接了电缆 但执行时我得到的只是minicom命令如下 with 没有机会输入任何字
  • 从 Linux 用户空间设置 16550A UART 硬件 FIFO 中断级别

    我目前正在使用 16550 兼容的 UART 并且我希望能够更改 FIFO 中断触发级别 我在高 UART 负载下丢失字节 并且我想降低阈值 这是一个动力不足的嵌入式系统 当然 如果我愿意 我可以在 8250 port c 驱动程序中更改它
  • 跨线程操作无效:从创建它的线程以外的线程访问控制“textBox1”[重复]

    这个问题在这里已经有答案了 我想使用 UART 将温度值从微控制器发送到 C 接口并显示温度Label Content 这是我的微控制器代码 while 1 key scan get value of temp if Usart Data
  • 嵌入式Linux中UART上的9位协议

    我正在尝试在嵌入式 Linux 中的 UART 上强制使用 9 位协议 目前我正在 am335x evm 板上对此进行测试 我计划使用坚持平价来做到这一点 理想情况下 我希望不需要实际修改 omap serial c 驱动程序的任何代码 9

随机推荐

  • zynq 在ubuntu下移植ubuntu操作系统

    米联客的配套的文件是osrc lab 1 配置路径 在setting64 sh中把路径给更改一下 这里就是 改成ubuntu 并运行surce settings64 sh 2 rootfs 执行脚本 cfg rootfs sh 然后make
  • zynq 维修调试记录 客服支持 工作记录

    米联的板子用底板供电 xff0c 用JTAG往里面下程序 的时候也出现了如下问题 xff1a 跟客服进行沟通 xff0c 客服的回答是 xff1a 一般是两种可能 xff0c 一个是开发板坏了 xff0c 进行如下操作 xff0c 操作的程
  • ubuntu 16.04 安装apollo3.0(发布版)

    参考官网文档 xff1a https github com ApolloAuto apollo tree master docs https github com ApolloAuto apollo blob master docs how
  • 关于malloc返回地址无法访问

    正常情况下使用malloc申请内存 xff0c 要么是申请成功返回有效地址 xff0c 要么是内存申请失败 xff08 内存不足 xff09 返回NULL 如果出现返回了地址却无法访问的情况 xff0c 很有可能是前面代码访问内存时出现了越
  • docker里面安装Qt Creator

    sudo apt get install qt5 default qtcreator
  • 软连接ln -s 创建以及删除

    在 usr local 创建软连接 链接到 usr local include test dst文件夹 phe 64 phe usr local sudo ln s usr local include test dst test sourc
  • CAN报文:数据帧详解

    CAN报文 xff1a 数据帧详解 CAN报文CAN帧类型数据帧帧起始 Start Of Frame 仲裁段控制段数据段CRC段ACK段帧结束 End Of Frame CAN报文 CAN使用的是两条差分信号线 xff0c 只能表达一个信号
  • I2C总线和SPI总线

    I2C串行总线一般有两根信号线 xff0c 一根是双向的数据线SDA xff0c 另一根是时钟线SCL I2C协议 2条双向串行线 xff0c 一条数据线SDA xff0c 一条时钟线SCL SDA传输数据是 大端传输 xff08 字节高位
  • APM飞控学习之路:2 四旋翼的工作原理与系统组成

    一叶障目 xff0c 不见泰山 在研究四旋翼飞行器之前 xff0c 有必要从整体介绍其工作原理 主要部件 技术名词等基础知识 不然就像羊入虎口 xff0c 陷入一大堆不同层次的资料 xff0c 难觅出口 接下我就抛砖引玉 xff0c 尽自己
  • APM飞控学习之路:4 源码裁剪与下载

    月盈则亏 xff0c 水满则溢 当博主编译完成 xff0c 以为离成功更近一步准备下载的时候 xff0c 殊不知陷阱也早已准备好 xff0c 等待我的踏入 连上USB线 xff0c 下载 xff0c timeout xff0c timeou
  • 详解STM32CubeIDE 中 HAL库的串口中断接收函数 HAL_UART_Receive_IT

    MX串口配置方法见 xff1a CubeIDE 利用自带HAL库 串口收发 一 代码自动生成以后的项目及代码结构 xff1a main c中 xff0c 调用了串口初始化 串口初始化函数赋值了串口的参数 相当于底层的初始化 xff0c 配置
  • RTK-Real Time kinematic实时动态

    目前 xff0c GNSSj接收机约99 的时间都用作RTK模式进行测量 xff0c 只有1 的时间用作静态测量做控制网等 所以 xff0c 大部分人都习惯把GNSS接收机喊成RTK了 不过除去GNSS接收机 xff0c 你知道RTK是什么
  • USB-PD3.0(Power Delivery)充电协议

    USB PD xff08 Power Delivery xff09 是基于USB Type C的一种电源供电标准 xff0c 最大供电功率可达100瓦 xff08 W xff09 xff1b 随着USB Type C的普及 xff0c 越来
  • Lua ---- LFS库的使用

    lfs attributes filepath aname 获取路径指定属性 lfs chdir path 改变当前工作目录 xff0c 成功返回true xff0c 失败返回nil加上错误信息 lfs currentdir 获取当前工作目
  • USB2.0实际传输速度

    USB2 0规范中传输速度是480 Mbps 即60 MB s 但是很多USB2 0设备在实际工作时的数据传输速度却与此相差甚远 xff0c 比如用PC用U盘拷个东西 xff0c 往往比60MB s慢很多 xff0c 这是为什么呢 xff1
  • Type-C协议-CC检测原理

    Type C协议简介 xff08 CC检测原理 xff09 1 简介 越来越多的手机开始采用Type C作为充电和通信端口 xff0c Type C连接器实物和PIN定义如下图 xff1a Type C连接器中有两个管脚CC1和CC2 xf
  • 基地址和偏移地址

    首先必须明白 cpu和内存的区别 cpu 中央处理器 内存是物理数据存放的地方 cpu不直接存放数据而是通过内存来存放数据 cpu和内存之间通过20条地址总线相连接 xff0c 地址总线就是cpu通过地址找到对应的内存的物理数据的传递工具
  • RZ、NRZ、NRZ1、曼彻斯特编码

    1 RZ Return Zero Code 编码 也称为归零码 xff0c 特性就是在一个周期内 xff0c 用二进制传输数据位 xff0c 在数据位脉冲结束后 xff0c 需要维持一段时间的低电平 RZ编码又分为两种 xff1a 单极性归
  • LTE中RB和RE、REG、CCE的定义

    一 RB RE REG CCE定义 xff1a 1 RB Resource Block xff1a 频率上连续12个子载波 xff0c 时域上一个slot xff0c 称为1个RB xff0c 即1RB 61 12个子载波 RB 61 12
  • UART 波形

    先介绍一些概念 起始位 先发出一个逻辑 0 的信号 xff0c 表示传输数据的开始 校验位 xff1a 数据位加上这一位后 xff0c 使得 1 的位数应为偶数 偶校验 或奇数 奇校验 xff0c 以此来校验数据传送的正确性 就比如传输 A