串口通信校验方式(even,odd,space,mark)UART数据波形分析

2023-05-16

1. even 每个字节传送整个过程中bit为1的个数是偶数个(校验位调整个数)

2. odd 每个字节穿送整个过程中bit为1的个数是奇数个(校验位调整个数)

3. noparity没有校验位

4. space 校验位总为0

5. mark 校验位总为1

UART数据波形分析

摘要:本文通过对异步串行数据格式的分析,阐述通过波形分析方法调试UART数据收发的原理和方法。

经常遇到初学者,对单片机串行通讯出了问题不知道如何办的情况。其实最有效的调试方法是用示波器观察收发数据的波形。通过观察波形可以确定以下情况:

1.         是否有数据接收或发送;

2.         数据是否正确;

3.         波特率是否正确;

一、    串行数据的格式

异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位位,数据位可以是5678位,停止位可以是11.52位。

起始位是一个值为0的位,所以对于正逻辑的TTL电平,起始位是一位时间的低电平;停止位是值为1的位,所以对于正逻辑的TTL电平,停止位是高电平。对于负逻辑(RS-232电平)则相反。

例如,对于16进制数据55aaH,当采用8位数据位、1位停止位传输时,它在信号线上的波形如图1(TTL电平)和图2(RS-232电平)所示。


  UART数据波形分析 - 阳光男孩 - 阳光男孩的博客
 

1 TTL电平的串行数据帧格式(55aah)

  

2 RS-232电平的串行数据帧格式(55aah)

二、    根据波形图计算波特率

如图3是图1在示波器中的显示示意,其中灰色线是示波器的时间分度线,此时假设是200ms/格。


UART数据波形分析 - 阳光男孩 - 阳光男孩的博客   

波特率计算示意图

可以看了,第一个字节的10(1位起始位,8位数据位和1位停止位)共占约1.05ms,这样可计算出其波特率约为:

10bit / 1.05ms X 1000 ≈ 9600 bit/s

如果上图中的时间轴是100ms/格,同样可以计算出波特率应是19200bit/s

当通讯不正常,又能观察到波形时,就可根据上述方法,从波形图计算一下波特率是否正确。

三、    根据波形图判断RS-485收发数据的正确与否

RS-485是一种半双工的串行通讯方式,485电平芯片所以要正确接收和发送数据,必需保证控制信号和数据的同步,否则要么发送数据丢失,要么接收数据可能丢失。

RS-485发送数据时的正确时序如图4所示。

UART数据波形分析 - 阳光男孩 - 阳光男孩的博客   

4 RS-485的正确发送数据时序

在图4中,发送控制信号的宽度基本与数据信号的宽度一致,所以能保证发送数据的正确和发送后及时转为接收。

和图分别是控制信号太短和控制信号太长的情况。


UART数据波形分析 - 阳光男孩 - 阳光男孩的博客   

5 RS-485控制信号太短时的时序


 

6 RS-485控制信号太短时的时序

在图5中,由于控制信号关闭过早,则第二个字节的后两位将发送错误;在图6中,由于控制信号关闭过迟,使485芯片在发送数据后,不能及时转到接收状态,此时总线若有数据过来,则本单元将不能正确接收。

总结:只要掌握上述波形分析方法,任何异步串行数据的接收和发送问题,基本都可以得到解决。


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

串口通信校验方式(even,odd,space,mark)UART数据波形分析 的相关文章

  • RT-Thread记录(十一、I/O 设备模型之UART设备 — 源码解析)

    深入理解 RT Thread I O 设备模型 分析 UART设备源码 目录 前言 一 初识 UART 操作函数 应用程序 二 UART 的初始化 2 1 UART 设备初始化位置 2 2 UART 设备初始化函数分析 stm32 uart
  • 【UART】Verilog实现UART接收和发送模块

    目录 写在前面 UART 工作原理 UART 接收部分 UART RX 模块图 UART RX 时序图 Verilog 实现 UART RX 模块 UART 发送部分 UART TX 模块图 UART TX 时序图 Verilog 实现 U
  • Ctrl+Space 更改键盘,而不是在 Visual Studio 2010 上显示 Intellisense 的自动完成列表

    我注意到 Visual Studio 2010 意外地更改了键盘布局 我尝试了一些解决方案 例如 Going to Windows Control Panel and removing other languages Going to Me
  • 如何防止打字时使用空格?

    我有一个文本字段用于输入一些序列号代码 我想设置此代码在有人使用 spase 时显示警报 这意味着不允许使用空格 只允许使用减号来分隔此代码 您有解决这个问题的想法吗 我可以使用jquery验证吗 the correct typing 13
  • 在字符串中插入空格(Matlab)

    我有一根绳子 S ABACBADECAEF 如何在该字符串中的每 2 个字符之间插入一个空格 预期输出应该是 Out S AB AC BA DE CA EF 有几种方法可以做到这一点 所有这些方法都假设您的字符串长度是even 如果字符数量
  • Gem5 中与 ARM 裸机的 UART 通信

    我目前正在使用 Gem5 我必须通过 UART 从我的主机访问 ARMv8 裸机选项 所以我尝试了很多方法 但我还没有准备好 您能否让我知道 如何在裸机类型编程中将主机的串行端口映射到 ARMv8 的串行端口 任何帮助 将不胜感激 工作设置
  • 从 Linux 用户空间设置 16550A UART 硬件 FIFO 中断级别

    我目前正在使用 16550 兼容的 UART 并且我希望能够更改 FIFO 中断触发级别 我在高 UART 负载下丢失字节 并且我想降低阈值 这是一个动力不足的嵌入式系统 当然 如果我愿意 我可以在 8250 port c 驱动程序中更改它
  • 如何在bash中设置4个空格制表符

    它看起来像set tabstop 4在VIM中 但我不知道如何设置它bash 例如 echo e 1234567890 t321 n1 t2 n123 t1 电流输出 1234567890 321 1 2 123 1 我想要这样的输出 12
  • 保证金不起作用?两个元素之间需要空间

    首先 我很抱歉我没有把链接放在这里 这是一个工作网站 我不被允许 如果有必要 我会发布我的代码的相关部分 所以问题是非常基本的 我有一个带有一些图像的 div 和一个标题 h3 下面是我的内容开始的地方 无论我如何努力在两者之间创造一些空间
  • 英特尔伽利略裸机 UART

    我想编写一些 hello world 程序裸机申请于英特尔伽利略木板 当然 使用 UEFI 打印文本 到 UART 1 效果很好 但我想 手动 访问 UART 而不需要 UEFI 的任何帮助 在 QEMU 中我的代码运行良好 h file
  • 在带有 jquery 移动网络的滚动视图中使用 android webview 的空白

    我正在尝试在 Android 应用程序的布局上的滚动视图中使用 web 视图 也有 tabhost 但这并不重要 是这样的
  • 使用 tr 将换行符替换为空格[重复]

    这个问题在这里已经有答案了 有输出来自sed http sitename com galleries 83450 72 profile 这两个字符串应该合并为一个并用空格分隔 例如 http sitename com galleries 8
  • GATT 配置文件和 UART 服务

    我是开发通过蓝牙连接到外围设备的移动应用程序的新手 我搜索到 GATT 是用于蓝牙LE 通信的相关配置文件 但我们的客户建议我们使用 UART 服务 现在我很困惑 1 这两件事是如何关联的 2 我们是否必须选择其中之一 如果是的话 每一个的
  • 如何在R中从串口读取数据

    我想绘制来自串行端口的实时数据 我认为 R 将是完成这项工作的好工具 我在尝试从串行端口 COM4 读取数据时遇到了困难 我已经验证数据是通过 terra term 传入的 并在尝试 R 之前关闭会话 但我似乎无法在 R 中获取任何内容 我
  • 需要一种算法来像素化 n 维超球面

    我想将向量放入 n 维空间中 这可以通过对 n 维超球面的表面进行像素化来完成 有谁知道用 C 语言对超球面进行像素化有什么好的算法吗 我想要恒定的垃圾箱大小 我的空间仅由正整数组成 您需要您的垃圾箱完全规则吗 如果不是 则随机抛出点 并测
  • 跨线程操作无效:从创建它的线程以外的线程访问控制“textBox1”[重复]

    这个问题在这里已经有答案了 我想使用 UART 将温度值从微控制器发送到 C 接口并显示温度Label Content 这是我的微控制器代码 while 1 key scan get value of temp if Usart Data
  • std::cin 输入带空格?

    include
  • SQL查询-过滤掉仅包含空格的字段

    我需要编写一个 sql 查询来过滤掉字段中空格数量不断变化的行 例如 我有这个查询 SELECT MEMO SYSTEM TXT FROM EE dbo EE Billing Memo where MEMO SYSTEM TXT is no
  • 删除 CSS 中的正文边距

    我是网络开发新手 在删除正文边距时遇到了问题 There s space between the very top of the browser and logo text And my code is here on jsbin http
  • div 之间的额外空间从何而来?

    http www lethalmonk6 byethost24 com index html http www lethalmonk6 byethost24 com index html 如果您使用 firebug 检查 项目链接 div

随机推荐

  • C++获取对应进程的cpu和内存使用情况(支持linux和windows)

    运维监控程序中经常需要根据一个进程号pid去监控实时的cpu和内存占用 xff0c 以下整理了一个C 43 43 实现的简单例子 xff0c 并封装为方便跨平台调用的函数 代码 span class token macro property
  • 基于C++ spdlog日志库的完善封装

    spdlog是一个C 43 43 编写的极速日志打印库 xff0c 支持异步写日志以及多种模式和格式化选项 以下基于spdlog库封装了一个简单易用的功能类 xff0c 采用的是header only方式 xff0c 便于项目集成 代码 p
  • C++11写的线程安全STL库

    用C 43 43 写的程序 xff0c 如果用到了自带的标准模板库STL xff0c 在多线程访问的时候如果不加锁很容易造成segment fault导致程序崩溃coredump xff0c 也就是说C 43 43 标准的STL不是线程安全
  • 使用cmake构建C++ imgui上手项目(支持Windows,Mac,Linux)

    优秀的即时渲染C 43 43 GUI开发框架imgui xff08 https github com ocornut imgui xff09 在很多场合能发挥非常棒的作用 但是由于官方源码仓库一直没有提供基于cmake构建和创建新项目的工具
  • 使用cmake构建C++ workflow上手项目(支持Windows,Linux)

    开源的C 43 43 后端开发框架workflow xff08 https github com sogou workflow xff09 已经在成熟的互联网公司得到非常稳定广泛的应用 xff0c 它结合了网络 异步 计算多个后端常用场景
  • 使用cmake构建C++ live555流媒体服务上手项目(支持Windows,Linux)

    开源的流媒体视频和音频RTSP开发框架live555 xff08 http www live555 com xff09 对于学习和构建音视频流媒体或者直播服务是很方便的 官方的源码包对各平台编译单独列出了对应的makefile xff0c
  • C++20新特性

    目录 新增关键字 keywords conceptrequiresconstinitconstevalco awaitco returnco yieldchar8 t 新增标识符 Identifies importmodule 模块 Mod
  • pytorch导出模型并使用onnxruntime C++部署加载模型推理

    机器学习的框架众多 xff0c 为了方便复用和统一后端模型部署推理 xff0c 业界主流都在采用onnx格式的模型 xff0c 支持pytorch xff0c tensorflow xff0c mxnet多种AI框架 为了提高部署推理的性能
  • cocos2dx实例开发之飞机大战

    曾经 xff0c 微信里面可以玩一个打飞机的小游戏 xff0c 很有趣 xff0c 后来又没有了 xff0c 这里基于原版素材写了一个高仿微信打飞机的小游戏 预览 工程结构 环境 Mac os Mojavexcode 7 0cocos2dx
  • 调试leetcode代码:使用playground来调试

    leetcode在线编辑界面 在使用LeetCode时 xff0c 想要在本地上调试代码 xff0c 提供main函数的方法 xff1a 在线代码编辑功能 1 在红圈处选择你想要使用的语言 2 在黄圈处编写代码 3 在蓝圈处可选编辑测试案例
  • 蓝牙5/4.2/4.1/4.0数据吞吐率

    先给出结论 xff1a 蓝牙4 0 4 1的吞吐率 为0 305Mbps xff1b 蓝牙4 2的吞吐率 为0 803Mbps xff1b 蓝牙5的吞吐率 为1 434Mbps xff08 前提 xff1a 使用2Mbps调制速率 xff1
  • BLE 协议栈组成介绍

    框图 xff1a 1 协议由Host层和Controller层组成 xff1b 2 Controller层 xff1a PHY xff1a 基带物理层 xff0c 相关概念 xff1a 频段 调制 射频信道 发射功率 xff1b LL xf
  • ATT 的功能

    GATT Profile xff0c 通用属性配置 xff1a 类比位做煤球的模子 xff0c 每个SIG组织成员都可以向SIG提交这个 模子 xff0c 如果审核通过了 xff0c 那么这个模子就成为全世界通用的了 xff0c 不用管这个
  • FR8016HA & MS1791 & PHY6222 & TLSR8251 & YC1171 & HS6621 & BK3432 & N32WB031 对比介绍

    富苪坤 FR8016HA 巨微 MS1791 奉加微 PHY6222 泰凌微 TLSR8251 易兆微 YC1171 昂瑞微 HS6621 博通 BK3432 国民技术 N32WB031 芯片简介 FR8016HA 是一款面向 SOC xf
  • AD7606分析讲解

    一 ad7606数据手册分析 引脚配置和功能描述 ADC7606的典型工作特性 FFT xff08 快速傅里叶变换 xff09 http azaleasays com 2008 10 17 fft and digital signal pr
  • 什么是航位推算(Dead Reckoning )

    只有同时接收三到四个GPS GNSS卫星的信号才能实现精确的GPS GNSS定位 当仅依靠GPS GNSS定位时 xff0c 可能会出现位置精度降低或丢失的情况 例如 xff0c 当车辆在无法接收GPS GNSS信号的区域 xff08 隧道
  • STM32F103系列引脚定义-功能图

    器件功能和配置 xff08 STM32F103XX增强型 xff09 系统结构 管脚图
  • 如何用keil5打开keil4的工程

    参考网友的方法 xff1a 1 到http www2 keil com mdk5 legacy 官网下载keil4的支持包 2 正常流程安装所下载的安装包 xff1b 3 安装完成后 xff0c 用keil5打开工程 xff08 keil4
  • NMEA-0183 协议简介

    NMEA 0183 是美国国家海洋电子协会 xff08 National Marine Electronics Association xff09 为海用电子设备制定的标准格式 目前业已成了 GPS 北斗导航设备统一的 RTCM xff08
  • 串口通信校验方式(even,odd,space,mark)UART数据波形分析

    1 even 每个字节传送整个过程中bit为1的个数是偶数个 xff08 校验位调整个数 xff09 2 odd 每个字节穿送整个过程中bit为1的个数是奇数个 xff08 校验位调整个数 xff09 3 noparity没有校验位 4 s